UE4 行爲樹資料

Composites

Select 選擇

從左往右執行其子節點,直到一個達成,則 Select 達成並返回上層,不然失敗並返回上層html

Sequence 隊列

從左往右執行其子節點,直到一個失敗,則 Sequence 失敗並返回上層,不然達成並返回上層api

Simple Parallel 模擬並行

包含一個main task和一個sub tree, main task支持一個 Task 節點,用於執行一個主線行爲,sub tree 支持一個行爲樹,伴隨 main task 執行,返回結果是main task的執行結果dom

Task

Task 節點用於執行具體的動做,引擎內置的 Task 經常使用的有 Wait 、 Move To 、 Is At Location 等等,Task 通常是自行實現的AI具體的行爲邏輯,其中的代碼與普通藍圖代碼同樣
Task官方節點文檔動畫

Task 中的經常使用事件

  • Event Receive Execute / Event Receive Execute AI
    定義該 Task 的主體邏輯代碼,若是沒有特殊需求,則必須以 Finish Execute 節點結束,由於只有 Finish Execute 節點才能向上層返回執行結果,不然該 Task 若是不被打斷將不會執行完成.net

    若是同時存在 Event Receive Execute 和 Event Receive Execute AI 兩個事件,優先執行 Event Receive Execute AI 事件code

  • Event Receive Abort / Event Receive Abort AI
    當前任務被打斷時觸發該事件,用來處理突發狀況對當前行爲的影響,若是沒有特殊需求,則必須以 Finish Abort 節點結束,以結束該任務節點的執行server

    若是同時存在 Event Receive Abort 和 Event Receive Abort AI 兩個事件,優先執行 Event Receive Abort AI 事件htm

Decorator 裝飾器

Decorator 類型的節點用做條件判斷(相似於程序中的基本流程控制),附着於 Composites 或 Task 節點上
官方節點文檔blog

Observer Aborts

  1. None 不停止執行。
  2. Self 停止 self,以及在此節點下運行的全部子樹
  3. Lower Priority 停止此節點右方的全部節點
  4. Both 終止 self、此節點下運行的全部子樹、以及此節點右方的全部節點

Services

Services 附着在 Composite 節點上,只要其分支節點被執行,它們便將按所定義的頻率執行。它們經常使用於檢查和更新黑板。它們以行爲樹系統的形態取代了傳統平行節點
可在行爲樹圖表編輯界面添加自定義的Service,在Service中添加若干Blackboard Key Selector類型的引用變量暴露出來並編譯,而後將Service附着在Composites或者Task節點上,在節點上點擊已附着的Service,在其屬性欄中爲其中的變量指認黑板上的鍵,而後在Service中編寫邏輯代碼對已指認的變量進行更新隊列

Service中的經常使用事件

  • Event Receive Search Start / Event Receive Search AI
    在任務搜索進入樹的分支時被調用。好比有一個父節點A,其下面有兩個子節點B和C,當任務搜索進入A時調用A的Service中的Search Start,若是A完成或者被打斷,當任務搜索進入B時,將再次調用A的Service中的Search Start

    若是同時存在 Event Receive Search Start 和 Event Receive Search Start AI 兩個事件,優先執行 Event Receive Search Start AI 事件

  • Event Receive Activation / Event Receive Activation AI
    在某節點從非活動子樹的一部分變爲活動子樹的一部分時觸發

    若是同時存在 Event Receive Activation 和 Event Receive Activation AI 兩個事件,優先執行 Event Receive Activation AI 事件

  • Event Receive Deactivation / Event Receive Deactivation AI
    在某節點從活動子樹的一部分變爲非活動子樹的一部分時觸發,若是附着於Task上,節點離開不會觸發,附着於Composites上能夠觸發。

    若是同時存在 Event Receive Deactivation 和 Event Receive Deactivation AI 兩個事件,優先執行 Event Receive Deactivation AI 事件

  • Event Receive Tick / Event Receive Tick AI
    當Service所在的節點是活動子樹的一部分時,Tick事件將以指定的頻率調用,Tick的觸發時間間隔由所在Service的Interval和Random Deviation屬性共同決定,Interval指定基礎時間間隔,Random Deviation指定在基礎時間間隔上的隨機偏差

    若是同時存在 Event Receive Tick 和 Event Receive Tick AI 兩個事件,優先執行 Event Receive Tick AI 事件

總結

Composites相似於分支,Decorator相似於分支的判斷,Task相似於Actor的動做,Services控制變量的值。
行爲樹操做黑板,Pawn操做黑板,動畫藍圖操做黑板,抽像出了一層
使用行爲樹可以使行爲邏輯 直觀,複用,可擴展,好維護。

原代碼

例:BTTask_MoveTo----文檔上查不到屬性,因屬性不是Public
UBTTaskNode ---->Task相關程序

相關網址

行爲樹歷史
EQS與行爲樹
操做

相關文章
相關標籤/搜索