コード例 #1
0
        public void OnEnable()
        {
            BehaviorTreeAgent btAgent = target as BehaviorTreeAgent;

            BehaviorTree bt = null;

            if (btAgent.behaviorTree == null)
            {
                btAgent.Awake();
            }
            bt = btAgent.behaviorTree;

            if (bt != null)
            {
                _manager = BTEditorManager.Manager;
                if (!_manager)
                {
                    _manager = BTEditorManager.CreateInstance(bt, btAgent.btAsset);
                }
                else
                {
                    _manager.behaviorTree = bt;
                }
                _manager.btInspector    = this;
                _manager.inspectedAgent = btAgent;
            }
        }
コード例 #2
0
        public override void OnInspectorGUI()
        {
            DrawDefaultInspector();

            if (_manager.selectedNode != null)
            {
                EditorGUILayout.LabelField("Last Status: " + _manager.selectedNode.lastStatus.ToString());
            }

            BehaviorTreeAgent btAgent = target as BehaviorTreeAgent;

            if (btAgent.context != null)
            {
                EditorGUILayout.LabelField("Current Context");
                foreach (KeyValuePair <string, object> item in btAgent.context.All)
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField(item.Key);
                    EditorGUILayout.LabelField(item.Value.ToString());
                    EditorGUILayout.EndHorizontal();
                }
            }

            if (GUILayout.Button("Show Behavior Tree editor"))
            {
                BTEditorWindow.ShowWindow();
            }
        }
コード例 #3
0
        public Status Tick(GameObject agent, Context context)
        {
            BehaviorTreeAgent btAgent = agent.GetComponent <BehaviorTreeAgent>();

            if (btAgent)
            {
                debugMode = btAgent.debugMode;
            }

            TotalTicks++;

            Status result = rootNode.Tick(agent, context);

            rootNode.lastStatus = result;
            rootNode.lastTick   = TotalTicks;
            return(result);
        }