ソースを参照

行为树删除ValueBase

tanghai 8 年 前
コミット
e83c28c46a

+ 1 - 1
.gitignore

@@ -35,4 +35,4 @@ _ReSharper.CSharp/
 /Unity/CSharp60Support/compilation.log
 /.vs
 /Unity/.vs/
-/Unity/*.sln
+/Unity/Unity.sln

+ 8 - 13
Unity/Assets/Editor/BehaviorTreeEditor/BehaviorManager.cs

@@ -130,7 +130,7 @@ namespace MyEditor
 			foreach (NodeFieldDesc desc in list)
 			{
 				List<string> canInputList = GetCanInPutEnvKeyList(this.NodeProtoToBehaviorNodeData(nodeProto), desc);
-				string value = nodeProto.args_dict.GetTreeDictValue(desc.type, desc.name)?.ToString();
+				string value = nodeProto.args_dict.GetTreeDictValue(desc.name)?.ToString();
 				List<string> resultList = canInputList.FindAll(str => { return str == value; });
 				if (resultList.Count == 0)
 				{
@@ -182,7 +182,7 @@ namespace MyEditor
 		{
 			ClientNodeTypeProto proto = ExportNodeTypeConfig.GetNodeTypeProtoFromDll(nodeProto.name);
 			List<string> unUsedList = new List<string>();
-			foreach (KeyValuePair<string, ValueBase> item in nodeProto.args_dict.Dict())
+			foreach (KeyValuePair<string, object> item in nodeProto.args_dict.Dict())
 			{
 				if (!proto.new_args_desc.Exists(a => (a.name == item.Key)))
 				{
@@ -282,7 +282,7 @@ namespace MyEditor
 			go.name = nodeData.name;
 			nodeConfig.describe = nodeData.describe;
 			List<string> unUseList = new List<string>();
-			foreach (KeyValuePair<string, ValueBase> args in nodeData.args_dict.Dict())
+			foreach (KeyValuePair<string, object> args in nodeData.args_dict.Dict())
 			{
 				if (!ExportNodeTypeConfig.NodeHasField(nodeData.name, args.Key))
 				{
@@ -293,7 +293,7 @@ namespace MyEditor
 				try
 				{
 					string fieldName = args.Key;
-					object fieldValue = args.Value.GetValue();
+					object fieldValue = args.Value;
 					Type type = BTTypeManager.GetBTType(originType);
 					Component comp = go.AddComponent(type);
 					FieldInfo fieldNameInfo = type.GetField("fieldName");
@@ -385,12 +385,7 @@ namespace MyEditor
 			copyNode.name = node.name;
 			copyNode.describe = node.describe;
 			copyNode.Pos = node.Pos;
-			copyNode.args_dict = new BehaviorTreeArgsDict();
-			foreach (KeyValuePair<string, ValueBase> item in node.args_dict.Dict())
-			{
-				ValueBase valueBase = item.Value.Clone();
-				copyNode.args_dict.Add(item.Key, valueBase);
-			}
+			copyNode.args_dict = node.args_dict.Clone();
 			List<BehaviorNodeData> list = new List<BehaviorNodeData>();
 			foreach (BehaviorNodeData item in node.children)
 			{
@@ -485,7 +480,7 @@ namespace MyEditor
 			}
 			for (int i = 0; i < list.Count; i++)
 			{
-				object value = nodeProto.args_dict.GetTreeDictValue(list[i].type, list[i].name);
+				object value = nodeProto.args_dict.GetTreeDictValue(list[i].name);
 				list[i].value = value;
 			}
 
@@ -503,7 +498,7 @@ namespace MyEditor
 
 			foreach (NodeFieldDesc desc in list)
 			{
-				string value = nodeProto.args_dict.GetTreeDictValue(desc.type, desc.name)?.ToString();
+				string value = nodeProto.args_dict.GetTreeDictValue(desc.name)?.ToString();
 				resultList.Add(value);
 			}
 			return resultList;
@@ -527,7 +522,7 @@ namespace MyEditor
 				{
 					continue;
 				}
-				string value = nodeProto.args_dict.GetTreeDictValue(desc.type, desc.name)?.ToString();
+				string value = nodeProto.args_dict.GetTreeDictValue(desc.name)?.ToString();
 				List<string> resultList = inputValueList.FindAll(str => { return str == value; });
 				if (resultList.Count > 0)
 				{

+ 2 - 2
Unity/Assets/Editor/BehaviorTreeEditor/BehaviorNodeConfigExtension.cs

@@ -16,13 +16,13 @@ namespace Model
 			nodeConfig.name = nodeData.name;
 			go.name = nodeData.name;
 			nodeConfig.describe = nodeData.describe;
-			foreach (KeyValuePair<string, ValueBase> args in nodeData.args_dict.Dict())
+			foreach (KeyValuePair<string, object> args in nodeData.args_dict.Dict())
 			{
 				Type originType = ExportNodeTypeConfig.GetFieldType(nodeData.name, args.Key);
 				try
 				{
 					string fieldName = args.Key;
-					object fieldValue = args.Value.GetValue();
+					object fieldValue = args.Value;
 					Type type = BTTypeManager.GetBTType(originType);
 					UnityEngine.Component comp = go.AddComponent(type);
 					FieldInfo fieldNameInfo = type.GetField("fieldName");

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/BehaviorNodeData.cs

@@ -63,7 +63,7 @@ namespace MyEditor
 
 			foreach (NodeFieldDesc args_desc in this.Proto.new_args_desc)
 			{
-				args_dict.SetKeyValueComp(args_desc.type, args_desc.name, args_desc.value);
+				args_dict.SetKeyValueComp(args_desc.name, args_desc.value);
 			}
 
 			foreach (BehaviorNodeData child in children)

+ 3 - 3
Unity/Assets/Editor/BehaviorTreeEditor/BehaviorTreeOperateUtility.cs

@@ -31,7 +31,7 @@ namespace MyEditor
 			FieldInfo[] mems = Node.GetType().GetFields();
 			foreach (FieldInfo mem in mems)
 			{
-				Proto.args_dict.SetKeyValueComp(mem.FieldType, mem.Name, mem.GetValue(Node));
+				Proto.args_dict.SetKeyValueComp(mem.Name, mem.GetValue(Node));
 			}
 		}
 
@@ -42,10 +42,10 @@ namespace MyEditor
 
 		public void UpdateData()
 		{
-			foreach (KeyValuePair<string, ValueBase> argsItem in Proto.args_dict.Dict())
+			foreach (KeyValuePair<string, object> argsItem in Proto.args_dict.Dict())
 			{
 				FieldInfo fieldInfo = typeof(T).GetField(argsItem.Key, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
-				fieldInfo.SetValue(Node, argsItem.Value.GetValue());
+				fieldInfo.SetValue(Node, argsItem.Value);
 			}
 		}
 	}

+ 1 - 1
Unity/Assets/Editor/BehaviorTreeEditor/ExportNodeTypeConfig.cs

@@ -153,7 +153,7 @@ namespace MyEditor
 			return list;
 		}
 
-		private static object GetDefaultValue(Type type, NodeFieldBaseAttribute att)
+		public static object GetDefaultValue(Type type, NodeFieldBaseAttribute att)
 		{
 			if (att.DefaultValue != null)
 			{

+ 3 - 3
Unity/Assets/Editor/BehaviorTreeEditor/NodeExtension.cs

@@ -26,10 +26,10 @@ namespace Model
 				NodeProto p = protoStack.Dequeue();
 				Node node = nodeStack.Dequeue();
 
-				foreach (KeyValuePair<string, ValueBase> argsItem in p.args_dict.Dict())
+				foreach (KeyValuePair<string, object> argsItem in p.args_dict.Dict())
 				{
 					FieldInfo fieldInfo = node.GetType().GetField(argsItem.Key, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
-					fieldInfo.SetValue(node, argsItem.Value.GetValue());
+					fieldInfo.SetValue(node, argsItem.Value);
 				}
 				foreach (NodeProto child in p.Children)
 				{
@@ -277,7 +277,7 @@ namespace Model
 			np.name = node.GetType().Name;
 			foreach (FieldInfo men in mens)
 			{
-				np.args_dict.SetKeyValueComp(men.FieldType, men.Name, men.GetValue(node));
+				np.args_dict.SetKeyValueComp(men.Name, men.GetValue(node));
 			}
 			return np;
 		}

+ 93 - 20
Unity/Assets/Editor/BehaviorTreeEditor/PropertyDesigner.cs

@@ -52,7 +52,7 @@ namespace MyEditor
 			}
 		}
 
-		Rect toolbarRect = new Rect(0f, 0f, 0, 0);
+		private Rect toolbarRect = new Rect(0f, 0f, 0, 0);
 
 		public void Draw()
 		{
@@ -264,7 +264,7 @@ namespace MyEditor
 					folder.Hide = false;
 					foreach (FoldoutNode node in folder.Nodes)
 					{
-						if (node.Text.ToUpper().IndexOf(mSearchNode.ToUpper()) == -1)
+						if (node.Text.ToUpper().IndexOf(mSearchNode.ToUpper(), StringComparison.Ordinal) == -1)
 						{
 							node.Hide = true;
 						}
@@ -318,7 +318,7 @@ namespace MyEditor
 
 		private void DrawValueView()
 		{
-			if (mCurBehaviorNode == null || mCurBehaviorNode.Proto == null)
+			if (mCurBehaviorNode?.Proto == null)
 			{
 				return;
 			}
@@ -385,6 +385,7 @@ namespace MyEditor
 				Type fieldType = ExportNodeTypeConfig.GetFieldType(nodeName, desc.name);
 				ClientNodeTypeProto clientNode = ExportNodeTypeConfig.GetNodeTypeProtoFromDll(nodeName);
 				object newValue = null;
+
 				if (BehaviorTreeArgsDict.IsStringType(fieldType))
 				{
 					if (nodeParamType == NodeParamType.Input)
@@ -468,13 +469,13 @@ namespace MyEditor
 					Log.Error($"行为树节点暂时未支持此类型:{fieldType}!");
 					return;
 				}
-				mCurBehaviorNode.args_dict.SetKeyValueComp(fieldType, desc.name, newValue);
+				mCurBehaviorNode.args_dict.SetKeyValueComp(desc.name, newValue);
 			}
 		}
 
 		private object ObjectFieldValue(NodeFieldDesc desc)
 		{
-			Object oldValue = (Object) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			Object oldValue = (Object) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
 			EditorGUILayout.LabelField(GetPropDesc(desc));
 			Object newValue = EditorGUILayout.ObjectField("", oldValue, desc.type, false);
 			if (newValue == null)
@@ -498,7 +499,13 @@ namespace MyEditor
 
 		private object TextFieldValue(NodeFieldDesc desc)
 		{
-			string oldValue = (string) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			object obj = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
+			if (obj == null)
+			{
+				obj = desc.value ?? "";
+				mCurBehaviorNode.args_dict.Add(desc.name, obj);
+			}
+			string oldValue = (string)obj;
 			EditorGUILayout.LabelField(GetPropDesc(desc));
 			object newValue = EditorGUILayout.TextField("", oldValue);
 			return newValue;
@@ -506,7 +513,13 @@ namespace MyEditor
 
 		private object BoolFieldValue(NodeFieldDesc desc)
 		{
-			bool oldValue = (bool) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			object obj = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
+			if (obj == null)
+			{
+				obj = desc.value ?? false;
+				mCurBehaviorNode.args_dict.Add(desc.name, obj);
+			}
+			bool oldValue = (bool)obj;
 			EditorGUILayout.LabelField(GetPropDesc(desc));
 			object newValue = EditorGUILayout.Toggle("", oldValue);
 			return newValue;
@@ -514,7 +527,13 @@ namespace MyEditor
 
 		private object IntFieldValue(NodeFieldDesc desc)
 		{
-			int oldValue = (int) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			object obj = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
+			if (obj == null)
+			{
+				obj = desc.value ?? default(int);
+				mCurBehaviorNode.args_dict.Add(desc.name, obj);
+			}
+			int oldValue = (int)obj;
 			EditorGUILayout.LabelField(GetPropDesc(desc));
 			object newValue = EditorGUILayout.IntField("", oldValue);
 			return newValue;
@@ -522,7 +541,13 @@ namespace MyEditor
 
 		private object LongFieldValue(NodeFieldDesc desc)
 		{
-			long oldValue = (long) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			object obj = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
+			if (obj == null)
+			{
+				obj = desc.value ?? default(long);
+				mCurBehaviorNode.args_dict.Add(desc.name, obj);
+			}
+			long oldValue = (long)obj;
 			EditorGUILayout.LabelField(GetPropDesc(desc));
 			object newValue = EditorGUILayout.LongField("", oldValue);
 			return newValue;
@@ -530,7 +555,13 @@ namespace MyEditor
 
 		private object FloatFieldValue(NodeFieldDesc desc)
 		{
-			float oldValue = (float) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			object obj = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
+			if (obj == null)
+			{
+				obj = desc.value ?? default(float);
+				mCurBehaviorNode.args_dict.Add(desc.name, obj);
+			}
+			float oldValue = (float) obj;
 			EditorGUILayout.LabelField(GetPropDesc(desc));
 			object newValue = EditorGUILayout.FloatField("", oldValue);
 			return newValue;
@@ -538,7 +569,13 @@ namespace MyEditor
 
 		private object DoubletFieldValue(NodeFieldDesc desc)
 		{
-			double oldValue = (double) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			object obj = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
+			if (obj == null)
+			{
+				obj = desc.value ?? default(double);
+				mCurBehaviorNode.args_dict.Add(desc.name, obj);
+			}
+			double oldValue = (double)obj;
 			EditorGUILayout.LabelField(GetPropDesc(desc));
 			object newValue = EditorGUILayout.DoubleField("", oldValue);
 			return newValue;
@@ -548,7 +585,13 @@ namespace MyEditor
 
 		private object StrArrFieldValue(NodeFieldDesc desc)
 		{
-			string[] oldValue = (string[]) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			object obj = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
+			if (obj == null)
+			{
+				obj = desc.value ?? new string[]{};
+				mCurBehaviorNode.args_dict.Add(desc.name, obj);
+			}
+			string[] oldValue = (string[])obj;
 			string[] newValue = CustomArrayField.StringArrFieldValue(ref foldStrArr, GetPropDesc(desc), oldValue);
 			return newValue;
 		}
@@ -557,7 +600,13 @@ namespace MyEditor
 
 		private object IntArrFieldValue(NodeFieldDesc desc)
 		{
-			int[] oldValue = (int[]) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			object obj = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
+			if (obj == null)
+			{
+				obj = desc.value ?? new int[] { };
+				mCurBehaviorNode.args_dict.Add(desc.name, obj);
+			}
+			int[] oldValue = (int[])obj;
 			int[] newValue = CustomArrayField.IntArrFieldValue(ref foldIntArr, GetPropDesc(desc), oldValue);
 			return newValue;
 		}
@@ -566,7 +615,13 @@ namespace MyEditor
 
 		private object LongArrFieldValue(NodeFieldDesc desc)
 		{
-			long[] oldValue = (long[]) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			object obj = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
+			if (obj == null)
+			{
+				obj = desc.value ?? new long[] { };
+				mCurBehaviorNode.args_dict.Add(desc.name, obj);
+			}
+			long[] oldValue = (long[])obj;
 			long[] newValue = CustomArrayField.LongArrFieldValue(ref foldLongArr, GetPropDesc(desc), oldValue);
 			return newValue;
 		}
@@ -575,7 +630,13 @@ namespace MyEditor
 
 		private object FloatArrFieldValue(NodeFieldDesc desc)
 		{
-			float[] oldValue = (float[]) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			object obj = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
+			if (obj == null)
+			{
+				obj = desc.value ?? new float[] { };
+				mCurBehaviorNode.args_dict.Add(desc.name, obj);
+			}
+			float[] oldValue = (float[])obj;
 			float[] newValue = CustomArrayField.FloatArrFieldValue(ref foldFloatArr, GetPropDesc(desc), oldValue);
 			return newValue;
 		}
@@ -584,7 +645,13 @@ namespace MyEditor
 
 		private object DoubleArrFieldValue(NodeFieldDesc desc)
 		{
-			double[] oldValue = (double[]) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			object obj = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
+			if (obj == null)
+			{
+				obj = desc.value ?? new double[] { };
+				mCurBehaviorNode.args_dict.Add(desc.name, obj);
+			}
+			double[] oldValue = (double[])obj;
 			double[] newValue = CustomArrayField.DoubleArrFieldValue(ref foldDoubleArr, GetPropDesc(desc), oldValue);
 			return newValue;
 		}
@@ -593,14 +660,20 @@ namespace MyEditor
 
 		private object ObjectArrFieldValue(NodeFieldDesc desc)
 		{
-			Object[] oldValue = (Object[]) mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name);
+			object obj = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name);
+			if (obj == null)
+			{
+				obj = desc.value ?? new Object[] { };
+				mCurBehaviorNode.args_dict.Add(desc.name, obj);
+			}
+			Object[] oldValue = (Object[])obj;
 			Object[] newValue = CustomArrayField.ObjectArrFieldValue(ref foldObjectArr, GetPropDesc(desc), oldValue, desc);
 			return newValue;
 		}
 
 		private object OutPutEnumFieldValue(NodeFieldDesc desc)
 		{
-			string oldValue = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name)?.ToString();
+			string oldValue = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name)?.ToString();
 			if (string.IsNullOrEmpty(oldValue))
 			{
 				oldValue = BTEnvKey.None;
@@ -633,7 +706,7 @@ namespace MyEditor
 
 		private object InputEnumFieldValue(NodeFieldDesc desc)
 		{
-			string oldValue = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name)?.ToString();
+			string oldValue = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name)?.ToString();
 			string[] enumValueArr = BehaviorManager.Instance.GetCanInPutEnvKeyArray(mCurBehaviorNode, desc);
 			if (enumValueArr.Length == 0)
 			{
@@ -665,7 +738,7 @@ namespace MyEditor
 
 		private object EnumFieldValue(NodeFieldDesc desc)
 		{
-			string oldValue = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.type, desc.name)?.ToString();
+			string oldValue = mCurBehaviorNode.args_dict.GetTreeDictValue(desc.name)?.ToString();
 			if (string.IsNullOrEmpty(oldValue))
 			{
 				oldValue = GetDefaultEnumValue(desc.type);

+ 113 - 113
Unity/Assets/Res/BT/BT_大厅UI创建时执行行为树.prefab

@@ -44,17 +44,17 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!1 &1034247352937670
+--- !u!1 &1193271619585814
 GameObject:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   serializedVersion: 5
   m_Component:
-  - component: {fileID: 4457920297853128}
-  - component: {fileID: 114872844475027030}
-  - component: {fileID: 114110232272482830}
-  - component: {fileID: 114044811302282582}
+  - component: {fileID: 4616619386828382}
+  - component: {fileID: 114508003071584108}
+  - component: {fileID: 114522066902515920}
+  - component: {fileID: 114185579265163046}
   m_Layer: 0
   m_Name: UIScale
   m_TagString: Untagged
@@ -62,49 +62,49 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!1 &1066642639074170
+--- !u!1 &1295418660867886
 GameObject:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   serializedVersion: 5
   m_Component:
-  - component: {fileID: 4745976513105564}
-  - component: {fileID: 114317227427338956}
+  - component: {fileID: 4056688166984052}
+  - component: {fileID: 114922715807505748}
   m_Layer: 0
-  m_Name: Sequence
+  m_Name: Selector
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!1 &1110138203716930
+--- !u!1 &1346792475454164
 GameObject:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   serializedVersion: 5
   m_Component:
-  - component: {fileID: 4560144792414304}
-  - component: {fileID: 114142340205944714}
-  - component: {fileID: 114725129530404376}
-  - component: {fileID: 114191766196617972}
+  - component: {fileID: 4572860375544610}
+  - component: {fileID: 114053638919583870}
+  - component: {fileID: 114771998989144004}
+  - component: {fileID: 114351509525792566}
   m_Layer: 0
-  m_Name: UIScale
+  m_Name: CreateUIEffect
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!1 &1267004197537310
+--- !u!1 &1616457218697920
 GameObject:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   serializedVersion: 5
   m_Component:
-  - component: {fileID: 4435494203767800}
-  - component: {fileID: 114890143310458668}
+  - component: {fileID: 4417717115913526}
+  - component: {fileID: 114286383706012722}
   m_Layer: 0
   m_Name: Sequence
   m_TagString: Untagged
@@ -112,17 +112,17 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!1 &1358106256802118
+--- !u!1 &1796546804283450
 GameObject:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   serializedVersion: 5
   m_Component:
-  - component: {fileID: 4462160128095018}
-  - component: {fileID: 114014332988097306}
-  - component: {fileID: 114509115340170806}
-  - component: {fileID: 114530184371611064}
+  - component: {fileID: 4489497142252778}
+  - component: {fileID: 114288251435820106}
+  - component: {fileID: 114909548170981006}
+  - component: {fileID: 114910544375086878}
   m_Layer: 0
   m_Name: CreateUIEffect
   m_TagString: Untagged
@@ -130,19 +130,19 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!1 &1895040874724778
+--- !u!1 &1973637592813186
 GameObject:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   serializedVersion: 5
   m_Component:
-  - component: {fileID: 4490211137182780}
-  - component: {fileID: 114377559183498788}
-  - component: {fileID: 114803133420492300}
-  - component: {fileID: 114015794394339256}
+  - component: {fileID: 4482808043330860}
+  - component: {fileID: 114120525991366058}
+  - component: {fileID: 114664666143245534}
+  - component: {fileID: 114598011534965404}
   m_Layer: 0
-  m_Name: CreateUIEffect
+  m_Name: UIScale
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
@@ -158,8 +158,7 @@ Transform:
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children:
-  - {fileID: 4435494203767800}
-  - {fileID: 4745976513105564}
+  - {fileID: 4417717115913526}
   m_Father: {fileID: 4000013585351022}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -177,87 +176,88 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!4 &4435494203767800
+--- !u!4 &4056688166984052
 Transform:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1267004197537310}
+  m_GameObject: {fileID: 1295418660867886}
   m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children:
-  - {fileID: 4490211137182780}
-  - {fileID: 4560144792414304}
-  m_Father: {fileID: 4000012504621142}
+  - {fileID: 4616619386828382}
+  - {fileID: 4572860375544610}
+  m_Father: {fileID: 4417717115913526}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!4 &4457920297853128
+--- !u!4 &4417717115913526
 Transform:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1034247352937670}
+  m_GameObject: {fileID: 1616457218697920}
   m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
-  m_Children: []
-  m_Father: {fileID: 4745976513105564}
-  m_RootOrder: 1
+  m_Children:
+  - {fileID: 4056688166984052}
+  - {fileID: 4489497142252778}
+  - {fileID: 4482808043330860}
+  m_Father: {fileID: 4000012504621142}
+  m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!4 &4462160128095018
+--- !u!4 &4482808043330860
 Transform:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1358106256802118}
+  m_GameObject: {fileID: 1973637592813186}
   m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
-  m_Father: {fileID: 4745976513105564}
-  m_RootOrder: 0
+  m_Father: {fileID: 4417717115913526}
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!4 &4490211137182780
+--- !u!4 &4489497142252778
 Transform:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1895040874724778}
+  m_GameObject: {fileID: 1796546804283450}
   m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
-  m_Father: {fileID: 4435494203767800}
-  m_RootOrder: 0
+  m_Father: {fileID: 4417717115913526}
+  m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!4 &4560144792414304
+--- !u!4 &4572860375544610
 Transform:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1110138203716930}
+  m_GameObject: {fileID: 1346792475454164}
   m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
-  m_Father: {fileID: 4435494203767800}
+  m_Father: {fileID: 4056688166984052}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!4 &4745976513105564
+--- !u!4 &4616619386828382
 Transform:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1066642639074170}
+  m_GameObject: {fileID: 1193271619585814}
   m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
-  m_Children:
-  - {fileID: 4462160128095018}
-  - {fileID: 4457920297853128}
-  m_Father: {fileID: 4000012504621142}
-  m_RootOrder: 1
+  m_Children: []
+  m_Father: {fileID: 4056688166984052}
+  m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &114000010724577698
 MonoBehaviour:
@@ -297,142 +297,142 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   id: 100001
   describe: "\u5927\u5385UI\u521B\u5EFA\u65F6\u6267\u884C\u884C\u4E3A\u6811"
---- !u!114 &114014332988097306
+--- !u!114 &114053638919583870
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1358106256802118}
+  m_GameObject: {fileID: 1346792475454164}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  id: 100006
+  id: 100005
   describe: 
---- !u!114 &114015794394339256
+--- !u!114 &114120525991366058
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1895040874724778}
+  m_GameObject: {fileID: 1973637592813186}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 7be3fccf10005084b99360e730465802, type: 3}
+  m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  fieldName: effect
-  fieldValue: {fileID: 1000013439777610, guid: ec75b784e8d7596478790f42fd4d9937, type: 2}
---- !u!114 &114044811302282582
+  id: 100007
+  describe: 
+--- !u!114 &114185579265163046
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1034247352937670}
+  m_GameObject: {fileID: 1193271619585814}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 543f3ab39de095e4e80a0c5bbff4242e, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   fieldName: scale
-  fieldValue: 1
---- !u!114 &114110232272482830
+  fieldValue: 0
+--- !u!114 &114286383706012722
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1034247352937670}
+  m_GameObject: {fileID: 1616457218697920}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 872ab75cd8949824c994b1fb31d221f1, type: 3}
+  m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  fieldName: uiKey
-  fieldValue: UI
---- !u!114 &114142340205944714
+  id: 100002
+  describe: 
+--- !u!114 &114288251435820106
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1110138203716930}
+  m_GameObject: {fileID: 1796546804283450}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  id: 100004
+  id: 100006
   describe: 
---- !u!114 &114191766196617972
+--- !u!114 &114351509525792566
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1110138203716930}
+  m_GameObject: {fileID: 1346792475454164}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 543f3ab39de095e4e80a0c5bbff4242e, type: 3}
+  m_Script: {fileID: 11500000, guid: 7be3fccf10005084b99360e730465802, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  fieldName: scale
-  fieldValue: 1
---- !u!114 &114317227427338956
+  fieldName: effect
+  fieldValue: {fileID: 0}
+--- !u!114 &114508003071584108
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1066642639074170}
+  m_GameObject: {fileID: 1193271619585814}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  id: 100005
+  id: 100004
   describe: 
---- !u!114 &114377559183498788
+--- !u!114 &114522066902515920
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1895040874724778}
+  m_GameObject: {fileID: 1193271619585814}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
+  m_Script: {fileID: 11500000, guid: 872ab75cd8949824c994b1fb31d221f1, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  id: 100003
-  describe: 
---- !u!114 &114509115340170806
+  fieldName: uiKey
+  fieldValue: UI
+--- !u!114 &114598011534965404
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1358106256802118}
+  m_GameObject: {fileID: 1973637592813186}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 872ab75cd8949824c994b1fb31d221f1, type: 3}
+  m_Script: {fileID: 11500000, guid: 543f3ab39de095e4e80a0c5bbff4242e, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  fieldName: uiKey
-  fieldValue: UI
---- !u!114 &114530184371611064
+  fieldName: scale
+  fieldValue: 1
+--- !u!114 &114664666143245534
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1358106256802118}
+  m_GameObject: {fileID: 1973637592813186}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 7be3fccf10005084b99360e730465802, type: 3}
+  m_Script: {fileID: 11500000, guid: 872ab75cd8949824c994b1fb31d221f1, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  fieldName: effect
-  fieldValue: {fileID: 1000013439777610, guid: ec75b784e8d7596478790f42fd4d9937, type: 2}
---- !u!114 &114725129530404376
+  fieldName: uiKey
+  fieldValue: UI
+--- !u!114 &114771998989144004
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1110138203716930}
+  m_GameObject: {fileID: 1346792475454164}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 872ab75cd8949824c994b1fb31d221f1, type: 3}
@@ -440,12 +440,12 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   fieldName: uiKey
   fieldValue: UI
---- !u!114 &114803133420492300
+--- !u!114 &114909548170981006
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1895040874724778}
+  m_GameObject: {fileID: 1796546804283450}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 872ab75cd8949824c994b1fb31d221f1, type: 3}
@@ -453,29 +453,29 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   fieldName: uiKey
   fieldValue: UI
---- !u!114 &114872844475027030
+--- !u!114 &114910544375086878
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1034247352937670}
+  m_GameObject: {fileID: 1796546804283450}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
+  m_Script: {fileID: 11500000, guid: 7be3fccf10005084b99360e730465802, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  id: 100007
-  describe: 
---- !u!114 &114890143310458668
+  fieldName: effect
+  fieldValue: {fileID: 1000013439777610, guid: ec75b784e8d7596478790f42fd4d9937, type: 2}
+--- !u!114 &114922715807505748
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1267004197537310}
+  m_GameObject: {fileID: 1295418660867886}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  id: 100002
+  id: 100003
   describe: 

+ 1 - 42
Unity/Assets/Scripts/BehaviorTree/BehaviorNodeConfig.cs

@@ -24,52 +24,11 @@ namespace Model
 			foreach (BTTypeBaseComponent item in gameObject.GetComponents<BTTypeBaseComponent>())
 			{
 				FieldInfo info = item.GetType().GetField("fieldValue");
-				ValueBase valueBase;
-				if (item.GetType() == typeof (BTEnumComponent))
-				{
-					valueBase = new ValueBase(info.GetValue(item));
-				}
-				else
-				{
-					valueBase = new ValueBase(info.GetValue(item));
-				}
-
-				dict.Add(item.fieldName, valueBase);
+				dict.Add(item.fieldName, info.GetValue(item));
 			}
 			return dict;
 		}
 
-		public void SetValue(Type type, string fieldName, object value)
-		{
-			foreach (BTTypeBaseComponent item in gameObject.GetComponents<BTTypeBaseComponent>())
-			{
-				if (fieldName == item.fieldName)
-				{
-					object fieldValue = value;
-					FieldInfo fieldValueinfo = item.GetType().GetField("fieldValue");
-					if (BehaviorTreeArgsDict.IsEnumType(type))
-					{
-						fieldValue = value.ToString();
-					}
-					fieldValueinfo.SetValue(item, fieldValue);
-				}
-			}
-		}
-
-		public object GetValue(string fieldName)
-		{
-			object fieldValue = null;
-			foreach (BTTypeBaseComponent item in gameObject.GetComponents<BTTypeBaseComponent>())
-			{
-				if (fieldName == item.fieldName)
-				{
-					FieldInfo fieldValueinfo = item.GetType().GetField("fieldValue");
-					fieldValue = fieldValueinfo.GetValue(item);
-				}
-			}
-			return fieldValue;
-		}
-
 		public NodeProto ToNodeProto()
 		{
 			return BehaviorNodeConfigToNodeProto(this);

+ 24 - 17
Unity/Assets/Scripts/BehaviorTree/BehaviorTreeArgsDict.cs

@@ -9,9 +9,9 @@ namespace Model
 	[Serializable]
 	public class BehaviorTreeArgsDict
 	{
-		private readonly Dictionary<string, ValueBase> dict = new Dictionary<string, ValueBase>();
+		private readonly Dictionary<string, object> dict = new Dictionary<string, object>();
 
-		public void Add(string key, ValueBase value)
+		public void Add(string key, object value)
 		{
 			this.dict.Add(key, value);
 		}
@@ -26,7 +26,7 @@ namespace Model
 			return this.dict.ContainsKey(key);
 		}
 
-		public Dictionary<string, ValueBase> Dict()
+		public Dictionary<string, object> Dict()
 		{
 			 return this.dict;
 		}
@@ -34,25 +34,33 @@ namespace Model
 		public BehaviorTreeArgsDict Clone()
 		{
 			BehaviorTreeArgsDict behaviorTreeArgsDict = new BehaviorTreeArgsDict();
-			foreach (KeyValuePair<string, ValueBase> keyValuePair in this.dict)
+			foreach (KeyValuePair<string, object> keyValuePair in this.dict)
 			{
-				behaviorTreeArgsDict.Add(keyValuePair.Key, keyValuePair.Value.Clone());
+				behaviorTreeArgsDict.Add(keyValuePair.Key, Clone(keyValuePair.Value));
 			}
 			return behaviorTreeArgsDict;
 		}
 
+		public static object Clone(object obj)
+		{
+			Type vType = obj.GetType();
+			if (!vType.IsSubclassOf(typeof(Array)))
+			{
+				return obj;
+			}
+
+			Array sourceArray = (Array)obj;
+			Array dest = Array.CreateInstance(vType.GetElementType(), sourceArray.Length);
+			Array.Copy(sourceArray, dest, dest.Length);
+			return dest;
+		}
+
 
-		public void SetKeyValueComp(Type type, string fieldName, object value)
+		public void SetKeyValueComp(string fieldName, object value)
 		{
 			try
 			{
-				ValueBase valueBase;
-				if (!this.dict.TryGetValue(fieldName, out valueBase))
-				{
-					valueBase = new ValueBase();
-					this.dict.Add(fieldName, valueBase);
-				}
-				valueBase.SetValue(value);
+				this.dict[fieldName] = value;
 			}
 			catch (Exception e)
 			{
@@ -61,15 +69,14 @@ namespace Model
 
 		}
 
-		public object GetTreeDictValue(Type fieldType, string fieldName)
+		public object GetTreeDictValue(string fieldName)
 		{
 			if (!this.dict.ContainsKey(fieldName))
 			{
-				Log.Error($"fieldName:{fieldName} 不存在!!!!");
+				//Log.Error($"fieldName:{fieldName} 不存在!!!!");
 				return null;
 			}
-			ValueBase obj = this.dict[fieldName];
-			return obj.GetValue();
+			return this.dict[fieldName];
 		}
 
 		/// <summary>

+ 0 - 47
Unity/Assets/Scripts/BehaviorTree/ValueBase.cs

@@ -1,47 +0,0 @@
-using System;
-
-namespace Model
-{
-	[Serializable]
-	public class ValueBase
-	{
-		private object value;
-
-		public ValueBase(object v)
-		{
-			this.value = v;
-		}
-
-		public ValueBase()
-		{
-		}
-
-		public ValueBase Clone()
-		{
-			ValueBase v;
-			Type vType = this.value.GetType();
-			if (vType.IsSubclassOf(typeof(Array)))
-			{
-				Array sourceArray = (Array) this.value;
-				Array dest = Array.CreateInstance(vType.GetElementType(), sourceArray.Length);
-				Array.Copy(sourceArray, dest, dest.Length);
-				v = new ValueBase(dest);
-			}
-			else
-			{
-				v = new ValueBase(value);
-			}
-			return v;
-		}
-
-		public object GetValue()
-		{
-			return this.value;
-		}
-		
-		public void SetValue(object v)
-		{
-			this.value = v;
-		}
-	}
-}

+ 0 - 12
Unity/Assets/Scripts/BehaviorTree/ValueBase.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: e0eea18e3566d954e94534f6e200d743
-timeCreated: 1465801488
-licenseType: Pro
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 2 - 2
Unity/Assets/Scripts/Component/BehaviorTreeComponent.cs

@@ -68,9 +68,9 @@ namespace Model
 			}
 		}
 
-		private static void NewSetValue(ref Node node, FieldInfo field, ValueBase valueBase, string nodeName)
+		private static void NewSetValue(ref Node node, FieldInfo field, object value, string nodeName)
 		{
-			field.SetValue(node, valueBase.GetValue());
+			field.SetValue(node, value);
 		}
 
 		private Node CreateOneNode(NodeProto proto)