tanghai 8 лет назад
Родитель
Сommit
6a3cbc0ad3
23 измененных файлов с 267 добавлено и 204 удалено
  1. 16 7
      Unity/Assets/Editor/BehaviorTreeEditor/BTEditor.cs
  2. 0 0
      Unity/Assets/Editor/BehaviorTreeEditor/BTEditor.cs.meta
  3. 3 3
      Unity/Assets/Editor/BehaviorTreeEditor/BTEditorWindow.cs
  4. 3 3
      Unity/Assets/Editor/BehaviorTreeEditor/BehaviorNodeData.cs
  5. 1 1
      Unity/Assets/Editor/BehaviorTreeEditor/BehaviorTreeConfigEditor.cs
  6. 6 4
      Unity/Assets/Editor/BehaviorTreeEditor/BehaviorTreeConfigExtension.cs
  7. 3 3
      Unity/Assets/Editor/BehaviorTreeEditor/BehaviorTreeNodeClassPopup.cs
  8. 5 5
      Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeRunTreeEvent_ShowDebugInfo.cs
  9. 29 29
      Unity/Assets/Editor/BehaviorTreeEditor/GraphDesigner.cs
  10. 6 6
      Unity/Assets/Editor/BehaviorTreeEditor/NodeDesigner.cs
  11. 3 3
      Unity/Assets/Editor/BehaviorTreeEditor/NodeExtension.cs
  12. 19 19
      Unity/Assets/Editor/BehaviorTreeEditor/PropertyDesigner.cs
  13. 91 105
      Unity/Assets/Res/BT/BT_创建UI行为树.prefab
  14. 9 0
      Unity/Assets/Res/BT/BT_创建UI行为树.prefab.meta
  15. 0 8
      Unity/Assets/Res/BT/BT_大厅UI创建时执行行为树.prefab.meta
  16. 1 1
      Unity/Assets/Scripts/Component/BehaviorTreeComponent.cs
  17. 6 1
      Unity/Assets/Scripts/DllHelper.cs
  18. 2 0
      Unity/Assets/Scripts/Init.cs
  19. 41 0
      Unity/Assets/Scripts/Object/AssemblyManager.cs
  20. 12 0
      Unity/Assets/Scripts/Object/AssemblyManager.cs.meta
  21. 8 5
      Unity/Unity.Editor.csproj
  22. 1 0
      Unity/Unity.csproj
  23. 2 1
      Unity/Unity.sln.DotSettings.user

+ 16 - 7
Unity/Assets/Editor/BehaviorTreeEditor/BTEntity.cs → Unity/Assets/Editor/BehaviorTreeEditor/BTEditor.cs

@@ -10,9 +10,9 @@ using Object = UnityEngine.Object;
 
 namespace MyEditor
 {
-	public class BTEntity: Entity
+	public class BTEditor: Entity
 	{
-		private static BTEntity instance;
+		private static BTEditor instance;
 
 		public const int NodeIdStartIndex = 100000;
 		private int AutoID = NodeIdStartIndex;
@@ -34,7 +34,7 @@ namespace MyEditor
 			}
 		}
 
-		public static BTEntity Instance
+		public static BTEditor Instance
 		{
 			get
 			{
@@ -43,7 +43,15 @@ namespace MyEditor
 					return instance;
 				}
 
-				instance = new BTEntity();
+				instance = new BTEditor();
+
+				AssemblyManager.Instance.Add("Model", typeof(Init).Assembly);
+				AssemblyManager.Instance.Add("Editor", typeof(BTEditor).Assembly);
+
+				instance.LoadNodeTypeProto();
+
+				instance.AddComponent<EventComponent>();
+				instance.AddComponent<TimerComponent>();
 				instance.AddComponent<BTDebugComponent>();
 				return instance;
 			}
@@ -98,7 +106,6 @@ namespace MyEditor
 
 		public void NewLoadData()
 		{
-			LoadNodeTypeProto();
 			NewLoadPrefabTree();
 			FilterClassify();
 		}
@@ -191,7 +198,7 @@ namespace MyEditor
 		
 		public void RemoveUnusedArgs(NodeProto nodeProto)
 		{
-			NodeMeta proto = BTEntity.Instance.GetNodeMeta(nodeProto.Name);
+			NodeMeta proto = BTEditor.Instance.GetNodeMeta(nodeProto.Name);
 			List<string> unUsedList = new List<string>();
 			foreach (KeyValuePair<string, object> item in nodeProto.Args.Dict())
 			{
@@ -420,9 +427,11 @@ namespace MyEditor
 			}
 			selectNodeName = "";
 			CurTreeGO = go;
+
 			NewLoadData();
+
 			BTEditorWindow.ShowWindow();
-			Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeOpenEditor);
+			BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeOpenEditor);
 		}
 
 		public string[] GetCanInPutEnvKeyArray(BehaviorNodeData nodeData, NodeFieldDesc desc)

+ 0 - 0
Unity/Assets/Editor/BehaviorTreeEditor/BTEntity.cs.meta → Unity/Assets/Editor/BehaviorTreeEditor/BTEditor.cs.meta


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

@@ -95,11 +95,11 @@ namespace MyEditor
 				case EventType.KeyUp:
 					if (e.keyCode == KeyCode.Escape || (e.keyCode == KeyCode.S && e.control))
 					{
-						BTEntity.Instance.SaveAll();
+						BTEditor.Instance.SaveAll();
 					}
 					else if (e.keyCode == KeyCode.F4)
 					{
-						BTEntity.Instance.SaveAll();
+						BTEditor.Instance.SaveAll();
 					}
 					break;
 				case EventType.MouseDown:
@@ -109,7 +109,7 @@ namespace MyEditor
 
 		public void OnDestroy()
 		{
-			BTEntity.Reset();
+			BTEditor.Reset();
 		}
 
 		public void onUpdatePropList(params object[] list)

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

@@ -53,10 +53,10 @@ namespace MyEditor
 		public BehaviorNodeData(string proto_name)
 		{
 			this.Name = proto_name;
-			this.Proto = BTEntity.Instance.GetNodeMeta(proto_name);
+			this.Proto = BTEditor.Instance.GetNodeMeta(proto_name);
 			if (this.Proto == null)
 			{
-				this.Proto = BTEntity.Instance.GetNodeMeta("Unknow");
+				this.Proto = BTEditor.Instance.GetNodeMeta("Unknow");
 				return;
 			}
 			this.Classify = this.Proto.classify;
@@ -108,7 +108,7 @@ namespace MyEditor
 
 		public void ResetId()
 		{
-			this.Id = BTEntity.Instance.AutoNodeId();
+			this.Id = BTEditor.Instance.AutoNodeId();
 			foreach (BehaviorNodeData child in children)
 			{
 				child.ResetId();

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

@@ -14,7 +14,7 @@ namespace MyEditor
 
 			if (GUILayout.Button("打开行为树"))
 			{
-				BTEntity.Instance.OpenBehaviorEditor(config.gameObject);
+				BTEditor.Instance.OpenBehaviorEditor(config.gameObject);
 			}
 			EditorUtility.SetDirty(config);
 		}

+ 6 - 4
Unity/Assets/Editor/BehaviorTreeEditor/BehaviorTreeConfigExtension.cs

@@ -11,7 +11,7 @@ namespace Model
 		{
 			BehaviorNodeConfig go = treeConfig.CreateNodeConfig(rootName);
 			treeConfig.RootNodeConfig = go.GetComponent<BehaviorNodeConfig>();
-			treeConfig.RootNodeConfig.id = BTEntity.NodeIdStartIndex;
+			treeConfig.RootNodeConfig.id = BTEditor.NodeIdStartIndex;
 			go.gameObject.name = rootName;
 			return go;
 		}
@@ -33,9 +33,11 @@ namespace Model
 
 		private static BehaviorNodeConfig CreateNodeConfig(this BehaviorTreeConfig treeConfig, string name)
 		{
-			NodeMeta proto = BTEntity.Instance.GetNodeMeta(name);
-			GameObject go = new GameObject();
-			go.name = name;
+			NodeMeta proto = BTEditor.Instance.GetNodeMeta(name);
+			GameObject go = new GameObject()
+			{
+				name = name
+			};
 			go.transform.parent = treeConfig.gameObject.transform;
 			BehaviorNodeConfig node = go.AddComponent<BehaviorNodeConfig>();
 			node.name = name;

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

@@ -68,7 +68,7 @@ namespace MyEditor
 
 			foreach (string name in nodeNameList)
 			{
-				NodeMeta proto = BTEntity.Instance.GetNodeMeta(name);
+				NodeMeta proto = BTEditor.Instance.GetNodeMeta(name);
 				if (GUILayout.Button(name + $"({proto.describe})", GetButtonStyle()))
 				{
 					if (SubWinType.CreateNode == mSubWinType)
@@ -109,7 +109,7 @@ namespace MyEditor
 				selectType = Enum.GetName(typeof(NodeClassifyType), mEnumNodeTypeSelection - 1);
 				foreach (string name in list)
 				{
-					NodeMeta proto = BTEntity.Instance.GetNodeMeta(name);
+					NodeMeta proto = BTEditor.Instance.GetNodeMeta(name);
 					if (selectType == proto.classify)
 					{
 						result1.Add(name);
@@ -125,7 +125,7 @@ namespace MyEditor
 			List<string> result2 = new List<string>();
 			foreach (string name in result1)
 			{
-				NodeMeta proto = BTEntity.Instance.GetNodeMeta(name);
+				NodeMeta proto = BTEditor.Instance.GetNodeMeta(name);
 				if (name.ToUpper().Contains(text.ToUpper()) || proto.describe.ToUpper().Contains(text.ToUpper()))
 				{
 					result2.Add(name);

+ 5 - 5
Unity/Assets/Editor/BehaviorTreeEditor/Event/BehaviorTreeRunTreeEvent_ShowDebugInfo.cs

@@ -8,12 +8,12 @@ namespace MyEditor
 	{
 		public void Run(BehaviorTree tree, List<long> pathList)
 		{
-			if (BTEntity.Instance.BehaviorTreeConfig != null)
+			if (BTEditor.Instance.BehaviorTreeConfig != null)
 			{
-				BTEntity.Instance.ClearDebugState();
-				BTEntity.Instance.GetComponent<BTDebugComponent>().TreePathList.Add(pathList);
-				BTEntity.Instance.GetComponent<BTDebugComponent>().BehaviorTree = tree;
-				BTEntity.Instance.SetDebugState(pathList);
+				BTEditor.Instance.ClearDebugState();
+				BTEditor.Instance.GetComponent<BTDebugComponent>().TreePathList.Add(pathList);
+				BTEditor.Instance.GetComponent<BTDebugComponent>().BehaviorTree = tree;
+				BTEditor.Instance.SetDebugState(pathList);
 			}
 		}
 	}

+ 29 - 29
Unity/Assets/Editor/BehaviorTreeEditor/GraphDesigner.cs

@@ -199,7 +199,7 @@ namespace MyEditor
 					if (mDragingRightBorder)
 					{
 						mRightWidth -= e.delta.x;
-						Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeRightDesignerDrag, e.delta.x);
+						BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeRightDesignerDrag, e.delta.x);
 						return;
 					}
 
@@ -327,9 +327,9 @@ namespace MyEditor
 			if (mSelectedNode != null)
 			{
 				if (mSelectedNode.NodeData.Proto.classify == NodeClassifyType.Root.ToString() ||
-				    BTEntity.Instance.CurTree.Root.Id == mSelectedNode.NodeData.Id)
+				    BTEditor.Instance.CurTree.Root.Id == mSelectedNode.NodeData.Id)
 				{
-					List<NodeMeta> list = BTEntity.Instance.Classify2NodeProtoList[NodeClassifyType.Root.ToString()];
+					List<NodeMeta> list = BTEditor.Instance.Classify2NodeProtoList[NodeClassifyType.Root.ToString()];
 					foreach (NodeMeta nodeType in list)
 					{
 						result.Add(nodeType.name);
@@ -339,7 +339,7 @@ namespace MyEditor
 				else
 				{
 					// NodeChildLimitType nodeChildLimitType = mSelectedNode.NodeData.IsLeaf() ? NodeChildLimitType.All : NodeChildLimitType.WithChild;
-					List<NodeMeta> canSubtituteList = BTEntity.Instance.AllNodeProtoList;
+					List<NodeMeta> canSubtituteList = BTEditor.Instance.AllNodeProtoList;
 					canSubtituteList.Sort(CompareShowName);
 					foreach (NodeMeta nodeType in canSubtituteList)
 					{
@@ -362,7 +362,7 @@ namespace MyEditor
 		{
 			List<string> result = new List<string>();
 
-			foreach (KeyValuePair<string, List<NodeMeta>> kv in BTEntity.Instance.Classify2NodeProtoList)
+			foreach (KeyValuePair<string, List<NodeMeta>> kv in BTEditor.Instance.Classify2NodeProtoList)
 			{
 				string classify = kv.Key;
 				List<NodeMeta> nodeProtoList = kv.Value;
@@ -389,8 +389,8 @@ namespace MyEditor
 
 			menu.AddItem(new GUIContent("创建子节点"), false, this.PopUpCreate);
 			menu.AddItem(new GUIContent("替换当前节点"), false, this.PopUpReplace);
-			string selectNodeName = BTEntity.Instance.selectNodeName;
-			string selectNodeType = BTEntity.Instance.selectNodeType;
+			string selectNodeName = BTEditor.Instance.selectNodeName;
+			string selectNodeType = BTEditor.Instance.selectNodeType;
 			if (mSelectedNode != null && selectNodeName != "")
 			{
 				if (selectNodeType != NodeClassifyType.Root.ToString() && mSelectedNode.NodeData.Children.Count < mSelectedNode.NodeData.Proto.child_limit)
@@ -467,8 +467,8 @@ namespace MyEditor
 		
 		private void CreateNode()
 		{
-			NodeMeta nodeProto = BTEntity.Instance.GetNodeMeta(BTEntity.Instance.selectNodeName);
-			BehaviorNodeData nodeData = BTEntity.Instance.CreateNode((int) BTEntity.Instance.CurTree.Id, nodeProto.name);
+			NodeMeta nodeProto = BTEditor.Instance.GetNodeMeta(BTEditor.Instance.selectNodeName);
+			BehaviorNodeData nodeData = BTEditor.Instance.CreateNode((int) BTEditor.Instance.CurTree.Id, nodeProto.name);
 			CreateNode(nodeData, MousePosToGraphPos(mMousePos));
 		}
 
@@ -500,8 +500,8 @@ namespace MyEditor
 			}
 			if (mCopyNode != null && mCopyNode != mSelectedNode)
 			{
-				BehaviorNodeData data = BTEntity.Instance.CopyNode(mCopyNode.NodeData);
-				BTEntity.Instance.ResetTreeId();
+				BehaviorNodeData data = BTEditor.Instance.CopyNode(mCopyNode.NodeData);
+				BTEditor.Instance.ResetTreeId();
 				NodeDesigner node = CreateNode(data, Vector2.zero);
 				ConnectNode(node, mSelectedNode);
 			}
@@ -537,20 +537,20 @@ namespace MyEditor
 				return;
 			}
 			mDetachedNodes.Remove(mSelectedNode);
-			BTEntity.Instance.ResetTreeId();
+			BTEditor.Instance.ResetTreeId();
 		}
 
 		private void ChangeNodeType()
 		{
-			ChangeNodeType(BTEntity.Instance.selectNodeName);
+			ChangeNodeType(BTEditor.Instance.selectNodeName);
 		}
 
 		//有待优化
 		private void ChangeNodeType(object obj)
 		{
 			string nodeType = (string) obj;
-			NodeMeta nodeProto = BTEntity.Instance.GetNodeMeta(nodeType);
-			BehaviorNodeData nodeData = BTEntity.Instance.CreateNode((int) BTEntity.Instance.CurTree.Id, nodeProto.name);
+			NodeMeta nodeProto = BTEditor.Instance.GetNodeMeta(nodeType);
+			BehaviorNodeData nodeData = BTEditor.Instance.CreateNode((int) BTEditor.Instance.CurTree.Id, nodeProto.name);
 			NodeDesigner oldNode = mSelectedNode;
 			NodeDesigner newNode = new NodeDesigner(nodeData);
 
@@ -558,11 +558,11 @@ namespace MyEditor
 			{
 				newNode.NodeData.Id = RootNode.NodeData.Id;
 				RootNode = newNode;
-				BehaviorTreeData oldTree = BTEntity.Instance.CurTree;
+				BehaviorTreeData oldTree = BTEditor.Instance.CurTree;
 				BehaviorTreeData newTree = new BehaviorTreeData(oldTree.Id);
 				newTree.classify = oldTree.classify;
 				newTree.Root = nodeData;
-				BTEntity.Instance.CurTree = newTree;
+				BTEditor.Instance.CurTree = newTree;
 			}
 			else
 			{
@@ -575,8 +575,8 @@ namespace MyEditor
 			{
 				newNode.AddChild(child);
 			}
-			BTEntity.Instance.ResetTreeId();
-			Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeAfterChangeNodeType);
+			BTEditor.Instance.ResetTreeId();
+			BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeAfterChangeNodeType);
 		}
 
 		public void onChangeNodeType(params object[] list)
@@ -606,20 +606,20 @@ namespace MyEditor
 			{
 				mDetachedNodes.Add(node);
 			}
-			BTEntity.Instance.ResetTreeId();
-			Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeCreateNode, node);
+			BTEditor.Instance.ResetTreeId();
+			BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeCreateNode, node);
 			return node;
 		}
 
 		/// 事件相关
 		public NodeDesigner onCreateTree(params object[] list)
 		{
-			if (BTEntity.Instance.CurTree == null)
+			if (BTEditor.Instance.CurTree == null)
 			{
 				Log.Error($"CurTree can not be null");
 				return null;
 			}
-			RootNode = new NodeDesigner(BTEntity.Instance.CurTree.Root);
+			RootNode = new NodeDesigner(BTEditor.Instance.CurTree.Root);
 			CalcGraphRect();
 			return RootNode;
 		}
@@ -636,8 +636,8 @@ namespace MyEditor
 			string name = (string) list[0];
 			Vector2 pos = (Vector2) list[1];
 
-			NodeMeta nodeProto = BTEntity.Instance.GetNodeMeta(name);
-			BehaviorNodeData nodeData = BTEntity.Instance.CreateNode((int) BTEntity.Instance.CurTree.Id, nodeProto.name);
+			NodeMeta nodeProto = BTEditor.Instance.GetNodeMeta(name);
+			BehaviorNodeData nodeData = BTEditor.Instance.CreateNode((int) BTEditor.Instance.CurTree.Id, nodeProto.name);
 			CreateNode(nodeData, pos);
 		}
 
@@ -707,7 +707,7 @@ namespace MyEditor
 
 		public void ClickNode(NodeDesigner dstNode)
 		{
-			Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeClickNode, dstNode);
+			BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeClickNode, dstNode);
 		}
 
 		public void ShiftNode(NodeDesigner dstNode)
@@ -734,7 +734,7 @@ namespace MyEditor
 				int idx = parent1.Children.IndexOf(node1);
 				parent1.AddChild(node2, idx);
 				parent1.AutoSort();
-				//BTEntity.GetInstance().ResetTreeId();
+				//BTEditor.GetInstance().ResetTreeId();
 			}
 
 			//             //不同父,插到node1的子节点
@@ -745,7 +745,7 @@ namespace MyEditor
 			//             parent2.AutoSort();
 			//             node1.AddChild(node2);
 			//             node1.AutoSort();
-			//             BTEntity.GetInstance().ResetTreeId();
+			//             BTEditor.GetInstance().ResetTreeId();
 		}
 
 		public void MoveNode(NodeDesigner dstNode)
@@ -776,7 +776,7 @@ namespace MyEditor
 			parent2.AutoSort();
 			node1.AddChild(node2);
 			node1.AutoSort();
-			//BTEntity.GetInstance().ResetTreeId();
+			//BTEditor.GetInstance().ResetTreeId();
 		}
 	}
 }

+ 6 - 6
Unity/Assets/Editor/BehaviorTreeEditor/NodeDesigner.cs

@@ -90,7 +90,7 @@ namespace MyEditor
 
 		public void Init()
 		{
-			NodeData.Proto = BTEntity.Instance.GetNodeMeta(NodeData.Name);
+			NodeData.Proto = BTEditor.Instance.GetNodeMeta(NodeData.Name);
 			string[] arr = NodeData.Proto.style.Split('/');
 			string style = arr.Length > 0? arr[0] : "";
 			if (style == "")
@@ -178,7 +178,7 @@ namespace MyEditor
 			{
 				GUI.DrawTexture(rect, mBoxSelectHighLight);
 			}
-			else if (BTEntity.Instance.IsHighLight(this.NodeData))
+			else if (BTEditor.Instance.IsHighLight(this.NodeData))
 			{
 				GUI.DrawTexture(rect, mBoxHighLight);
 			}
@@ -281,17 +281,17 @@ namespace MyEditor
 			if (!isSelected && mouse.x > Pos.x - Width / 2 - 30f && mouse.x < Pos.x + Width / 2 + 30f && mouse.y > Pos.y - Height / 2 &&
 			    mouse.y < Pos.y + Height / 2)
 			{
-				Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeMouseInNode, NodeData, this);
+				BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeMouseInNode, NodeData, this);
 			}
 			//并判断是否点中了连线柄
 			if (mouse.x > LeftPos.x - 30f && mouse.x < LeftPos.x + 10f && mouse.y > LeftPos.y - 30f && mouse.y < LeftPos.y + 30f)
 			{
-				Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeConnectState, this, State.ConnectLeft);
+				BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeConnectState, this, State.ConnectLeft);
 			}
 
 			if (mouse.x > RightPos.x - 10f && mouse.x < RightPos.x + 30f && mouse.y > RightPos.y - 30f && mouse.y < RightPos.y + 30f && NodeData.CanAddChild())
 			{
-				Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeConnectState, this, State.ConnectRight);
+				BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeConnectState, this, State.ConnectRight);
 			}
 
 			for (int i = 0; i < this.Children.Count; i++)
@@ -305,7 +305,7 @@ namespace MyEditor
 			isSelected = flag;
 			if (flag)
 			{
-				BTEntity.Instance.SelectNode(this.NodeData);
+				BTEditor.Instance.SelectNode(this.NodeData);
 			}
 		}
 

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

@@ -9,14 +9,14 @@ namespace Model
 {
 	public class BTEditorTree
 	{
-		private int _id = BTEntity.NodeIdStartIndex;
+		private int _id = BTEditor.NodeIdStartIndex;
 		private readonly Node _root;
 
 		public BTEditorTree(BehaviorTreeConfig config)
 		{
 			Type rootType = typeof(Game).Assembly.GetType($"Model.{config.RootNodeProto.Name}");
 			Node root = (Node) Activator.CreateInstance(rootType, config.RootNodeProto);
-			root.Id = BTEntity.NodeIdStartIndex;
+			root.Id = BTEditor.NodeIdStartIndex;
 			Queue<NodeProto> protoStack = new Queue<NodeProto>();
 			Queue<Node> nodeStack = new Queue<Node>();
 			protoStack.Enqueue(config.RootNodeProto);
@@ -73,7 +73,7 @@ namespace Model
 		private BTEditorTree(Node root, BehaviorTreeConfig config)
 		{
 			_root = root;
-			_root.Id = BTEntity.NodeIdStartIndex;
+			_root.Id = BTEditor.NodeIdStartIndex;
 			this.BTConfig = config;
 		}
 

+ 19 - 19
Unity/Assets/Editor/BehaviorTreeEditor/PropertyDesigner.cs

@@ -113,7 +113,7 @@ namespace MyEditor
 			mNodeFoldout = new FoldoutFolder("所有节点", SelectNodeFolderCallback);
 			mNodeFoldout.Fold = true;
 
-			foreach (KeyValuePair<string, List<NodeMeta>> kv in BTEntity.Instance.Classify2NodeProtoList)
+			foreach (KeyValuePair<string, List<NodeMeta>> kv in BTEditor.Instance.Classify2NodeProtoList)
 			{
 				string classify = kv.Key;
 				List<NodeMeta> nodeTypeList = kv.Value;
@@ -195,18 +195,18 @@ namespace MyEditor
 		{
 			Rect boxRect = new Rect(0f, Screen.height - offset + 15f, this.mWidth, 200f);
 			GUILayout.BeginArea(boxRect);
-			BTEntity.Instance.selectNodeName = "";
+			BTEditor.Instance.selectNodeName = "";
 			if (mCurNode != null)
 			{
 				string[] arr = mCurNode.Text.Split(' ');
 				string name = arr[0];
-				BTEntity.Instance.selectNodeName = name;
-				BTEntity.Instance.selectNodeType = mCurNode.folderName;
+				BTEditor.Instance.selectNodeName = name;
+				BTEditor.Instance.selectNodeType = mCurNode.folderName;
 				if (mCurNode.folderName != NodeClassifyType.Root.ToString())
 				{
 					if (GUILayout.Button("新建"))
 					{
-						Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreePropertyDesignerNewCreateClick, name, Vector2.zero);
+						BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreePropertyDesignerNewCreateClick, name, Vector2.zero);
 					}
 				}
 				if (mCurNode.folderName != NodeClassifyType.Root.ToString() ||
@@ -214,15 +214,15 @@ namespace MyEditor
 				{
 					if (GUILayout.Button("替换"))
 					{
-						Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeReplaceClick, name, Vector2.zero);
+						BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeReplaceClick, name, Vector2.zero);
 					}
 				}
 
 				if (GUILayout.Button("保存"))
 				{
-					BTEntity.Instance.SaveAll();
+					BTEditor.Instance.SaveAll();
 				}
-				NodeMeta node = BTEntity.Instance.GetNodeMeta(name);
+				NodeMeta node = BTEditor.Instance.GetNodeMeta(name);
 				GUILayout.Label("节点名:" + node.name);
 				GUILayout.Label("描述:" + node.describe);
 			}
@@ -232,7 +232,7 @@ namespace MyEditor
 
 		private void ClearNodes()
 		{
-			BTEntity.Instance.selectNodeName = "";
+			BTEditor.Instance.selectNodeName = "";
 			mEnumNodeTypeSelection = 0;
 			mSearchNode = "";
 			foreach (FoldoutFolder folder in mNodeFoldout.Folders)
@@ -308,7 +308,7 @@ namespace MyEditor
 			value = (GameObject) EditorGUILayout.ObjectField(desc, value, typeof(GameObject), false);
 			if (value.GetComponent<BehaviorTreeConfig>() != null && GUILayout.Button("打开行为树"))
 			{
-				BTEntity.Instance.OpenBehaviorEditor(value);
+				BTEditor.Instance.OpenBehaviorEditor(value);
 				SetToolBar(2);
 			}
 			EditorGUILayout.EndHorizontal();
@@ -323,7 +323,7 @@ namespace MyEditor
 			}
 			if (GUILayout.Button("保存行为树"))
 			{
-				BTEntity.Instance.SaveAll();
+				BTEditor.Instance.SaveAll();
 			}
 			NodeMeta proto = mCurBehaviorNode.Proto;
 			GUILayout.Space(10f);
@@ -382,7 +382,7 @@ namespace MyEditor
 			{
 				NodeFieldDesc desc = fieldList[i];
 				Type fieldType = NodeMetaHelper.GetFieldType(nodeName, desc.name);
-				NodeMeta nodeMeta = BTEntity.Instance.GetNodeMeta(nodeName);
+				NodeMeta nodeMeta = BTEditor.Instance.GetNodeMeta(nodeName);
 
 				// 如果不存在这个参数,给一个默认的
 				if (!mCurBehaviorNode.Args.ContainsKey(desc.name))
@@ -630,7 +630,7 @@ namespace MyEditor
 		private object InputEnumFieldValue(NodeFieldDesc desc)
 		{
 			string oldValue = mCurBehaviorNode.Args.Get(desc.name)?.ToString();
-			string[] enumValueArr = BTEntity.Instance.GetCanInPutEnvKeyArray(mCurBehaviorNode, desc);
+			string[] enumValueArr = BTEditor.Instance.GetCanInPutEnvKeyArray(mCurBehaviorNode, desc);
 			if (enumValueArr.Length == 0)
 			{
 				enumValueArr = new string[1] { BTEnvKey.None };
@@ -704,8 +704,8 @@ namespace MyEditor
 
 		public void DrawDebugView()
 		{
-			BehaviorTree behaviorTree = BTEntity.Instance.GetComponent<BTDebugComponent>().BehaviorTree;
-			List<List<long>> treePathList = BTEntity.Instance.GetComponent<BTDebugComponent>().TreePathList;
+			BehaviorTree behaviorTree = BTEditor.Instance.GetComponent<BTDebugComponent>().BehaviorTree;
+			List<List<long>> treePathList = BTEditor.Instance.GetComponent<BTDebugComponent>().TreePathList;
 			if (behaviorTree == null)
 			{
 				return;
@@ -713,7 +713,7 @@ namespace MyEditor
 			if (GUILayout.Button("清空执行记录"))
 			{
 				treePathList.Clear();
-				BTEntity.Instance.ClearDebugState();
+				BTEditor.Instance.ClearDebugState();
 			}
 			const float offset = 55f;
 			GUILayout.BeginArea(new Rect(0f, 20f, this.mWidth, Screen.height - offset));
@@ -721,12 +721,12 @@ namespace MyEditor
 				new Rect(0f, 0f, this.mWidth, Screen.height - offset), this.mTreeScrollPos,
 			    new Rect(0f, 0f, this.mWidth - 20f, treePathList.Count * 22), false, false);
 
-			for (int i = 0; i < BTEntity.Instance.GetComponent<BTDebugComponent>().TreePathList.Count; i++)
+			for (int i = 0; i < BTEditor.Instance.GetComponent<BTDebugComponent>().TreePathList.Count; i++)
 			{
 				if (GUILayout.Button($"frame{i}"))
 				{
-					BTEntity.Instance.ClearDebugState();
-					BTEntity.Instance.SetDebugState(treePathList[i]);
+					BTEditor.Instance.ClearDebugState();
+					BTEditor.Instance.SetDebugState(treePathList[i]);
 				}
 			}
 			GUI.EndScrollView();

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

@@ -9,37 +9,50 @@ Prefab:
     m_Modifications: []
     m_RemovedComponents: []
   m_ParentPrefab: {fileID: 0}
-  m_RootGameObject: {fileID: 1000012987241756}
+  m_RootGameObject: {fileID: 1783477931437860}
   m_IsPrefabParent: 1
---- !u!1 &1000010648217578
+--- !u!1 &1120422365835790
+GameObject:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  serializedVersion: 5
+  m_Component:
+  - component: {fileID: 4465453297948628}
+  - component: {fileID: 114509792806546196}
+  m_Layer: 0
+  m_Name: UICreateRoot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!1 &1279530075351798
 GameObject:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   serializedVersion: 5
   m_Component:
-  - component: {fileID: 4000012502268996}
-  - component: {fileID: 114000012927878958}
-  - component: {fileID: 114000012831209000}
-  - component: {fileID: 114000012254895660}
+  - component: {fileID: 4936977615441378}
+  - component: {fileID: 114626019597701266}
   m_Layer: 0
-  m_Name: UIScale
+  m_Name: Sequence
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!1 &1000011153220328
+--- !u!1 &1731652014909292
 GameObject:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   serializedVersion: 5
   m_Component:
-  - component: {fileID: 4000010573939176}
-  - component: {fileID: 114000012101497390}
-  - component: {fileID: 114000012687440004}
-  - component: {fileID: 114000013925923264}
+  - component: {fileID: 4480680075265146}
+  - component: {fileID: 114176872673644624}
+  - component: {fileID: 114472900551181156}
   m_Layer: 0
   m_Name: CreateUIEffect
   m_TagString: Untagged
@@ -47,208 +60,181 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!1 &1000012663018806
+--- !u!1 &1783477931437860
 GameObject:
   m_ObjectHideFlags: 0
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   serializedVersion: 5
   m_Component:
-  - component: {fileID: 4000012504621142}
-  - component: {fileID: 114000012710832806}
-  - component: {fileID: 114000010724577698}
+  - component: {fileID: 4011488779620680}
+  - component: {fileID: 114700535858552550}
   m_Layer: 0
-  m_Name: UICreateRoot
+  m_Name: "BT_\u521B\u5EFAUI\u884C\u4E3A\u6811"
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!1 &1000012987241756
+--- !u!1 &1806181600933056
 GameObject:
-  m_ObjectHideFlags: 0
+  m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
   serializedVersion: 5
   m_Component:
-  - component: {fileID: 4000013585351022}
-  - component: {fileID: 114000011653782440}
+  - component: {fileID: 4646367730243502}
+  - component: {fileID: 114986442712064258}
   m_Layer: 0
-  m_Name: "BT_\u5927\u5385UI\u521B\u5EFA\u65F6\u6267\u884C\u884C\u4E3A\u6811"
+  m_Name: Selector
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!4 &4000010573939176
+--- !u!4 &4011488779620680
 Transform:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011153220328}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_GameObject: {fileID: 1783477931437860}
+  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: 4000012504621142}
-  m_RootOrder: 1
+  m_Children:
+  - {fileID: 4465453297948628}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!4 &4000012502268996
+--- !u!4 &4465453297948628
 Transform:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010648217578}
+  m_GameObject: {fileID: 1120422365835790}
   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: 4000012504621142}
+  m_Children:
+  - {fileID: 4646367730243502}
+  m_Father: {fileID: 4011488779620680}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!4 &4000012504621142
+--- !u!4 &4480680075265146
 Transform:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012663018806}
+  m_GameObject: {fileID: 1731652014909292}
   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: 4000012502268996}
-  - {fileID: 4000010573939176}
-  m_Father: {fileID: 4000013585351022}
+  m_Children: []
+  m_Father: {fileID: 4646367730243502}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!4 &4000013585351022
+--- !u!4 &4646367730243502
 Transform:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012987241756}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_GameObject: {fileID: 1806181600933056}
+  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: 4000012504621142}
-  m_Father: {fileID: 0}
+  - {fileID: 4480680075265146}
+  - {fileID: 4936977615441378}
+  m_Father: {fileID: 4465453297948628}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &114000010724577698
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012663018806}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 872ab75cd8949824c994b1fb31d221f1, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  fieldName: ui
-  fieldValue: UI
---- !u!114 &114000011653782440
-MonoBehaviour:
+--- !u!4 &4936977615441378
+Transform:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012987241756}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 450b9a4ed562c1546b663af4135cc7e7, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  RootNodeConfig: {fileID: 114000012710832806}
-  mAutoId: 1
---- !u!114 &114000012101497390
+  m_GameObject: {fileID: 1279530075351798}
+  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: 4646367730243502}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &114176872673644624
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011153220328}
+  m_GameObject: {fileID: 1731652014909292}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
+  m_Script: {fileID: 11500000, guid: 840ecb1e4ef94d2429fcb0ff2696d581, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   id: 100003
   describe: 
---- !u!114 &114000012254895660
+--- !u!114 &114472900551181156
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010648217578}
+  m_GameObject: {fileID: 1731652014909292}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 543f3ab39de095e4e80a0c5bbff4242e, type: 3}
+  m_Script: {fileID: 11500000, guid: 179b62fdf77cfeb4188878f675b8fffd, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  fieldName: scale
-  fieldValue: 1
---- !u!114 &114000012687440004
+  fieldName: effect
+  fieldValue: {fileID: 0}
+--- !u!114 &114509792806546196
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011153220328}
+  m_GameObject: {fileID: 1120422365835790}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 872ab75cd8949824c994b1fb31d221f1, type: 3}
+  m_Script: {fileID: 11500000, guid: 840ecb1e4ef94d2429fcb0ff2696d581, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  fieldName: uiKey
-  fieldValue: UI
---- !u!114 &114000012710832806
+  id: 100001
+  describe: "\u521B\u5EFAUI\u884C\u4E3A\u6811"
+--- !u!114 &114626019597701266
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000012663018806}
+  m_GameObject: {fileID: 1279530075351798}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
+  m_Script: {fileID: 11500000, guid: 840ecb1e4ef94d2429fcb0ff2696d581, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  id: 100001
-  describe: "\u5927\u5385UI\u521B\u5EFA\u65F6\u6267\u884C\u884C\u4E3A\u6811"
---- !u!114 &114000012831209000
+  id: 100004
+  describe: 
+--- !u!114 &114700535858552550
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010648217578}
+  m_GameObject: {fileID: 1783477931437860}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 872ab75cd8949824c994b1fb31d221f1, type: 3}
+  m_Script: {fileID: 11500000, guid: 4f1d451aabfc8454d94cbc4032d6a308, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  fieldName: uiKey
-  fieldValue: UI
---- !u!114 &114000012927878958
+  RootNodeConfig: {fileID: 114509792806546196}
+--- !u!114 &114986442712064258
 MonoBehaviour:
   m_ObjectHideFlags: 1
   m_PrefabParentObject: {fileID: 0}
   m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000010648217578}
+  m_GameObject: {fileID: 1806181600933056}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
+  m_Script: {fileID: 11500000, guid: 840ecb1e4ef94d2429fcb0ff2696d581, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   id: 100002
   describe: 
---- !u!114 &114000013925923264
-MonoBehaviour:
-  m_ObjectHideFlags: 1
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 100100000}
-  m_GameObject: {fileID: 1000011153220328}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 7be3fccf10005084b99360e730465802, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  fieldName: effect
-  fieldValue: {fileID: 1000013439777610, guid: ec75b784e8d7596478790f42fd4d9937, type: 2}

+ 9 - 0
Unity/Assets/Res/BT/BT_创建UI行为树.prefab.meta

@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: f9f78e1edb39dfd41a2722b1a53c7ad4
+timeCreated: 1498460809
+licenseType: Free
+NativeFormatImporter:
+  mainObjectFileID: 100100000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

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

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 5dfe2c32bf2efc044a7f3f57c34ab334
-timeCreated: 1487666017
-licenseType: Pro
-NativeFormatImporter:
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

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

@@ -55,7 +55,7 @@ namespace Model
 
 		private static void InitFieldValue(ref Node node, NodeProto nodeProto)
 		{
-			Type type = typeof(Game).Assembly.GetType("Model." + nodeProto.Name);
+			Type type = AssemblyManager.Instance.Get("Model").GetType("Model." + nodeProto.Name);
 
 			foreach (var args_item in nodeProto.Args.Dict())
 			{

+ 6 - 1
Unity/Assets/Scripts/DllHelper.cs

@@ -38,7 +38,12 @@ namespace Model
 
 		public static Type[] GetMonoTypes()
 		{
-			return typeof(Game).Assembly.GetTypes();
+			List<Type> types = new List<Type>();
+			foreach (Assembly assembly in AssemblyManager.Instance.GetAll())
+			{
+				types.AddRange(assembly.GetTypes());
+			}
+			return types.ToArray();
 		}
 
 		public static IMethod[] GetMethodInfo(string typeName)

+ 2 - 0
Unity/Assets/Scripts/Init.cs

@@ -29,6 +29,8 @@ namespace Model
 			{
 				Instance = this;
 
+				AssemblyManager.Instance.Add("Model", typeof(Model.Init).Assembly);
+
 				this.RegisterAssembly();
 				this.RegisterILAdapter();
 				this.RegisterDelegate();

+ 41 - 0
Unity/Assets/Scripts/Object/AssemblyManager.cs

@@ -0,0 +1,41 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+
+namespace Model
+{
+	public class AssemblyManager
+	{
+		private static readonly AssemblyManager instance = new AssemblyManager();
+
+		public static AssemblyManager Instance
+		{
+			get
+			{
+				return instance;
+			}
+		}
+
+		private readonly Dictionary<string, Assembly> dictionary = new Dictionary<string, Assembly>();
+
+		public void Add(string name, Assembly assembly)
+		{
+			this.dictionary[name] = assembly;
+		}
+
+		public void Remove(string name)
+		{
+			this.dictionary.Remove(name);
+		}
+
+		public Assembly[] GetAll()
+		{
+			return this.dictionary.Values.ToArray();
+		}
+
+		public Assembly Get(string name)
+		{
+			return this.dictionary[name];
+		}
+	}
+}

+ 12 - 0
Unity/Assets/Scripts/Object/AssemblyManager.cs.meta

@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 65c436598fced964691bd88d3883b041
+timeCreated: 1498464228
+licenseType: Free
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 5
Unity/Unity.Editor.csproj

@@ -12,12 +12,15 @@
     <ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
     <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
-    <TargetFrameworkProfile></TargetFrameworkProfile>
-    <CompilerResponseFile></CompilerResponseFile>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <CompilerResponseFile>
+    </CompilerResponseFile>
     <UnityProjectType>Editor:5</UnityProjectType>
     <UnityBuildTarget>StandaloneWindows64:19</UnityBuildTarget>
     <UnityVersion>2017.1.0b8</UnityVersion>
-    <RootNamespace></RootNamespace>
+    <RootNamespace>
+    </RootNamespace>
     <LangVersion>6</LangVersion>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@@ -140,7 +143,7 @@
     <Compile Include="Assets\Editor\BehaviorTreeEditor\BTBatchOperation.cs" />
     <Compile Include="Assets\Editor\BehaviorTreeEditor\BTDesignerUtility.cs" />
     <Compile Include="Assets\Editor\BehaviorTreeEditor\BTEditorWindow.cs" />
-    <Compile Include="Assets\Editor\BehaviorTreeEditor\BTEntity.cs" />
+    <Compile Include="Assets\Editor\BehaviorTreeEditor\BTEditor.cs" />
     <Compile Include="Assets\Editor\BehaviorTreeEditor\Component\BTDebugComponent.cs" />
     <Compile Include="Assets\Editor\BehaviorTreeEditor\CustomArrayField.cs" />
     <Compile Include="Assets\Editor\BehaviorTreeEditor\Event\BehaviorTreeAfterChangeNodeTypeEvent_SelectNode.cs" />
@@ -168,4 +171,4 @@
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <Target Name="GenerateTargetFrameworkMonikerAttribute" />
-</Project>
+</Project>

+ 1 - 0
Unity/Unity.csproj

@@ -484,6 +484,7 @@
     <Compile Include="Assets\Scripts\Message\OpcodeHelper.cs" />
     <Compile Include="Assets\Scripts\Message\RpcException.cs" />
     <Compile Include="Assets\Scripts\MonoMethod.cs" />
+    <Compile Include="Assets\Scripts\Object\AssemblyManager.cs" />
     <Compile Include="Assets\Scripts\Object\Component.cs" />
     <Compile Include="Assets\Scripts\Object\Disposer.cs" />
     <Compile Include="Assets\Scripts\Object\Entity.cs" />

+ 2 - 1
Unity/Unity.sln.DotSettings.user

@@ -1,2 +1,3 @@
 <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
-	<s:String x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/IntelliSenseCompletingCharacters/CSharpCompletingCharacters/NonCompletingCharacters/@EntryValue"></s:String></wpf:ResourceDictionary>
+	<s:String x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/IntelliSenseCompletingCharacters/CSharpCompletingCharacters/NonCompletingCharacters/@EntryValue"></s:String>
+	<s:String x:Key="/Default/Housekeeping/Layout/DialogWindows/RefactoringWizardWindow/Location/@EntryValue">247,-4</s:String></wpf:ResourceDictionary>