using SampleBehavirTree; using System; using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; public class SampleBehaviourTree : MonoBehaviour { public bool open = false; private float timer = 0f; private BehaviourNode root; public GameObject testGo; // Start is called before the first frame update void Start() { root = CreatBehaviour(); ExcuteBehaviour(); } // Update is called once per frame void Update() { timer += Time.deltaTime; if (timer > 0.5f) { ExcuteBehaviour(); timer = 0f; } } [ContextMenu("执行行为树")] void ExcuteBehaviour() { StartCoroutine(c_ExcuteBehaviour()); } IEnumerator c_ExcuteBehaviour() { yield return StartCoroutine(root.Execute()); } public BehaviourNode CreatBehaviour() { var selector = new Selector(); var sequence_1 = new Sequence(); var condition1 = new TestCondition(); var action1 = new DebugTest(); action1.info = "测试行为树"; var action2 = new SetActiveAction(); action2.go = testGo; //添加条件 sequence_1.nodes.Add(condition1); //添加行为 sequence_1.nodes.Add(action1); sequence_1.nodes.Add(action2); // selector.nodes.Add(sequence_1); //不同类别Action 的参数配置 return selector; } }