示例#1
0
        /// <summary>
        /// Do NOT call this directly! It's a only helper function for the other node creation methods.
        /// </summary>
        /// <param name="nodeType"></param>
        /// <returns></returns>
        BTNode CreateNode(Type nodeType)
        {
            BTNode newNode = (BTNode)ScriptableObject.CreateInstance(nodeType);

            newNode.id = newNode.GetInstanceID();             // generate a unique ID for the node.

            AssetDatabase.AddObjectToAsset(newNode, _behaviorTree);
            EditorUtility.SetDirty(_behaviorTree);

            return(newNode);
        }
示例#2
0
        public static void CreateBehaviorTreeAsset()
        {
            // Create behavior tree asset.
            BTTree behaviorTreeAsset = ScriptableObject.CreateInstance <BTTree>();
            int    i = 0;

            while (true)
            {
                if (AssetDatabase.LoadAssetAtPath <BTTree>("Assets/BT" + i.ToString() + ".asset"))
                {
                    i++;
                    if (i > 10000)
                    {
                        break;
                    }
                }
                else
                {
                    break;
                }
            }
            AssetDatabase.CreateAsset(behaviorTreeAsset, "Assets/BT" + i.ToString() + ".asset");

            // Add root node to behavior tree.
            BTNode newNode = ScriptableObject.CreateInstance <BTActionBlank>();

            newNode.id = newNode.GetInstanceID();             // generate a unique ID for the node.
            Debug.Log(behaviorTreeAsset._editorData);
            if (behaviorTreeAsset._editorData == null)
            {
                behaviorTreeAsset._editorData = new List <EditorData> ();
            }
            behaviorTreeAsset._editorData.Add(new EditorData(newNode, null));
            behaviorTreeAsset.root = newNode;
            AssetDatabase.AddObjectToAsset(newNode, behaviorTreeAsset);

            // Set asset as the active object.
            AssetDatabase.SaveAssets();
            EditorUtility.FocusProjectWindow();
            Selection.activeObject = behaviorTreeAsset;
        }