Unity 行為樹-管理


引言

  在代碼里面動態的操作單顆行為樹 以及 管理所有的行為樹,也是一個很重要的事情。


 一、操作單顆樹

這是我們項目里面,一個敵人綁定了行為樹,自動創建的behavior tree 腳本。

 

紅框放大:

 

 

行為樹組件包含以下幾個屬性:

 

當我們有需要的時候,如何代碼操作這些變量呢?

1)我們必須先找到要操作的樹

找樹的方法1:定義一個Public的 BehaviorTree tree = new BehaviorTree();,然后面板拖拽賦值。

找樹的方法2:定義一個privarte的 BehaviorTree tree = new BehaviorTree();,然后通過GameObject的Find查找物體,然后獲得物體上面的組件來得到的。

2)代碼操作該樹

using BehaviorDesigner.Runtime.Tasks;//引用不可少

using BehaviorDesigner.Runtime;

 

public class Tree : MonoBehaviour {

public BehaviorTree tree = new BehaviorTree();

void Start () {

    tree.enabled = false;

    var a = tree.GetAllVariables();

    tree.StartWhenEnabled = false;

    var b = tree.FindTasksWithName("AI_Daze");

  }

}

上面代碼只是簡單的演示一下,可以操作行為樹的數據。其實 面板截圖里面的所有變量都可以操作,除此之外,tree還有很多的屬性和方法都可以操作。

 


 二、管理所有樹

 

當行為樹運行時,將會自動創建一個帶有行為管理器組件的新游戲對象,並且該對象上面綁有 behavior manager組件。此組件管理你場景中所有的執行的行為樹

 你可以控制行為樹的更新類型,以及更新時間等等

Update Interval:更新頻率

  • Every Frame:每幀都更新行為樹
  • Specify Seconds:定義個一個更新間隔時間
  • Manual:手動調用更新,選擇這個后需要通過腳本來調用行為樹的更新

Task Execution Type:任務執行類型

  • No Duplicates:不重復
  • Repeater Task:重復任務節點。如果設置成了5,那么每幀被執行5次

 

 
BehaviorManager.instance.Tick();
此外,如果你想讓不同的行為樹都有各自獨立的更新間隔的話,可以這樣:
BehaviorManager.instance.Tick(BehaviorTree);

 更多方法,請查看BehaviorManager類

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM