[Unity插件]Lua行爲樹(一):BehaviorDesigner源碼分析

BehaviorDesigner是Unity上的一款行爲樹插件,不過這個插件是用C#編寫的,編寫出來的行爲樹也是依賴於C#的,不利於熱更,因此有必要寫一個lua版本的。工具

首先下載BehaviorDesigner這個插件,其中部分源碼編譯在Behavior Designer\Runtime\BehaviorDesignerRuntime.dll中,能夠使用.NET Reflector這個工具進行反編譯,而後將反編譯後的類文件保存,而後用VS打開,就能夠方便地查看源碼啦。這個插件是自帶pdf文檔的,因此這裏的源碼分析也是源碼結合文檔進行說明的。源碼分析

 

1.Tasklua

Task類有一套和MonoBehaviour類似的API(非繼承MonoBehaviour),是全部節點的基類。插件

a.OnAwake:只會被調用一次,當行爲樹enable時調用,相似於構造器。blog

b.OnStart:在節點開始執行時會被調用,通常用於重置變量。繼承

c.OnUpdate:每幀調用。索引

d.OnEnd:在節點執行返回成功或者失敗時調用。生命週期

e.OnPause(bool paused):當行爲樹暫停或者恢復時調用。文檔

f.OnBehaviorComplete:當行爲樹完成執行時調用。源碼

Task的生命週期:

 

2.ParentTask

ParentTask類是Composite節點和Decorator節點的基類。

a.CanRunParallelChildren:當前節點是否爲Parallel節點。

b.CurrentChildIndex:當前激活的子節點索引。

c.CanExecute:當前節點(父節點)可否執行。

d.Decorate:修改當前狀態。

e.OnChildExecuted:子節點執行時調用。

f.OnChildStarted:子節點開始執行時調用。

 

3.BehaviorTree

BehaviorTree是掛在GameObject上的,同時也是行爲樹的入口。BehaviorTree繼承Behavior,Behavior在Start方法會調用EnableBehavior,而後會建立一個空物體而且掛上Behavior Manager腳本。Behavior Manager會在Update方法中執行每一棵行爲樹(Behavior Manager管理整個場景的行爲樹)。

相關文章
相關標籤/搜索