private void DrawProp(string nodeName, List <NodeFieldDesc> fieldList, NodeParamType nodeParamType) { for (int i = 0; i < fieldList.Count; i++) { NodeFieldDesc desc = fieldList[i]; Type fieldType = NodeMetaHelper.GetFieldType(nodeName, desc.name); NodeMeta nodeMeta = BTEntity.Instance.GetNodeMeta(nodeName); // 如果不存在这个参数,给一个默认的 if (!mCurBehaviorNode.Args.ContainsKey(desc.name)) { object obj = desc.value ?? BTTypeManager.GetDefaultValue(fieldType); mCurBehaviorNode.Args.Add(desc.name, obj); } object newValue = null; if (TypeHelper.IsStringType(fieldType)) { if (nodeParamType == NodeParamType.Input) { newValue = InputEnumFieldValue(desc); } else if (nodeParamType == NodeParamType.Output && nodeMeta.classify == NodeClassifyType.Root.ToString()) { newValue = ConstTextFieldValue(desc); } else { newValue = TextFieldValue(desc); } } else if (TypeHelper.IsFloatType(fieldType)) { newValue = FloatFieldValue(desc); } else if (TypeHelper.IsDoubleType(fieldType)) { newValue = DoubletFieldValue(desc); } else if (TypeHelper.IsIntType(fieldType)) { newValue = IntFieldValue(desc); } else if (TypeHelper.IsLongType(fieldType)) { newValue = LongFieldValue(desc); } else if (TypeHelper.IsBoolType(fieldType)) { newValue = BoolFieldValue(desc); } else if (TypeHelper.IsObjectType(fieldType)) { newValue = ObjectFieldValue(desc); } else if (TypeHelper.IsIntArrType(fieldType)) { newValue = IntArrFieldValue(desc); } else if (TypeHelper.IsLongArrType(fieldType)) { newValue = LongArrFieldValue(desc); } else if (TypeHelper.IsStringArrType(fieldType)) { newValue = StrArrFieldValue(desc); } else if (TypeHelper.IsFloatArrType(fieldType)) { newValue = FloatArrFieldValue(desc); } else if (TypeHelper.IsDoubleArrType(fieldType)) { newValue = DoubleArrFieldValue(desc); } else if (TypeHelper.IsEnumType(fieldType)) { newValue = EnumFieldValue(desc); } else if (TypeHelper.IsObjectArrayType(fieldType)) { newValue = ObjectArrFieldValue(desc); } else { Log.Error($"行为树节点暂时未支持此类型:{fieldType}!"); return; } mCurBehaviorNode.Args.SetKeyValueComp(desc.name, newValue); } }
private void DrawProp(string nodeName, List <NodeFieldDesc> fieldList, NodeParamType nodeParamType) { for (int i = 0; i < fieldList.Count; i++) { NodeFieldDesc desc = fieldList[i]; Type fieldType = ExportNodeTypeConfig.GetFieldType(nodeName, desc.name); ClientNodeTypeProto clientNode = ExportNodeTypeConfig.GetNodeTypeProtoFromDll(nodeName); object newValue = null; if (!mCurBehaviorNode.args_dict.ContainsKey(desc.name)) { mCurBehaviorNode.args_dict.Add(desc.name, new ValueBase()); } if (BehaviorTreeArgsDict.IsStringType(fieldType)) { if (nodeParamType == NodeParamType.Input) { newValue = InputEnumFieldValue(desc); } else if (nodeParamType == NodeParamType.Output && clientNode.classify == NodeClassifyType.Root.ToString()) { newValue = ConstTextFieldValue(desc); } else { newValue = TextFieldValue(desc); } } else if (BehaviorTreeArgsDict.IsFloatType(fieldType)) { newValue = FloatFieldValue(desc); } else if (BehaviorTreeArgsDict.IsDoubleType(fieldType)) { newValue = DoubletFieldValue(desc); } else if (BehaviorTreeArgsDict.IsIntType(fieldType)) { newValue = IntFieldValue(desc); } else if (BehaviorTreeArgsDict.IsLongType(fieldType)) { newValue = LongFieldValue(desc); } else if (BehaviorTreeArgsDict.IsBoolType(fieldType)) { newValue = BoolFieldValue(desc); } else if (BehaviorTreeArgsDict.IsObjectType(fieldType)) { newValue = ObjectFieldValue(desc); } else if (BehaviorTreeArgsDict.IsIntArrType(fieldType)) { newValue = IntArrFieldValue(desc); } else if (BehaviorTreeArgsDict.IsLongArrType(fieldType)) { newValue = LongArrFieldValue(desc); } else if (BehaviorTreeArgsDict.IsStringArrType(fieldType)) { newValue = StrArrFieldValue(desc); } else if (BehaviorTreeArgsDict.IsFloatArrType(fieldType)) { newValue = FloatArrFieldValue(desc); } else if (BehaviorTreeArgsDict.IsDoubleArrType(fieldType)) { newValue = DoubleArrFieldValue(desc); } else if (BehaviorTreeArgsDict.IsEnumType(fieldType)) { if (nodeParamType == NodeParamType.Input) { newValue = InputEnumFieldValue(desc); } else if (nodeParamType == NodeParamType.Output) { newValue = OutPutEnumFieldValue(desc); } else { newValue = EnumFieldValue(desc); } } else if (BehaviorTreeArgsDict.IsObjectArrayType(fieldType)) { newValue = ObjectArrFieldValue(desc); } else { Log.Error($"行为树节点暂时未支持此类型:{fieldType}!"); return; } mCurBehaviorNode.args_dict.SetKeyValueComp(fieldType, desc.name, newValue); } }