推薦使用的Unity插件(行為樹Behavior )

在 Unity 6.0 中使用 Behavior Designer 行為樹插件開發 AI 系統,需結合其核心節點設計、變量管理和代碼控制。以下是詳細指南,整合了最新版本的最佳實踐:


🛠? 1. 安裝與基礎配置

  • 安裝插件
    通過 Unity Asset Store 安裝 “Behavior Designer” 和擴展包 “Movement Pack”(用于移動相關任務)。
  • 啟用行為樹組件
    為 GameObject 添加 Behavior Tree 組件,配置參數:
    • Start When Enabled:啟用時自動執行
    • Restart When Complete:完成后重啟
    • Pause When Disabled:禁用時暫停。

🌳 2. 創建行為樹結構

  • 核心節點類型

    節點類型作用示例節點
    組合節點控制子節點執行邏輯SequenceSelector
    裝飾節點修飾子節點行為(如循環、條件中斷)InverterRepeater
    行為節點執行具體操作(移動、動畫)LogPatrol
    條件節點判斷條件是否成立CanSeeObject
  • 基礎工作流

    • Sequence 節點:子節點按順序執行,任一失敗則中斷。
    • Selector 節點:子節點依次執行,直到一個成功即停止。

?? 3. 關鍵功能實現

(1) 變量管理
  • 局部變量:在行為樹編輯器的 Variables 面板創建,僅當前樹可用。
  • 全局變量:通過 Global Variables 面板創建,支持多樹共享。
  • 腳本訪問變量
    // 獲取變量
    SharedVector3 targetPos = behaviorTree.GetVariable("TargetPosition") as SharedVector3;
    // 設置變量
    behaviorTree.SetVariable("AlertLevel", new SharedInt(10));
    
(2) 自定義節點開發
  • 創建條件節點(檢測玩家可見性):
    public class CanSeePlayer : Conditional
    {public float viewDistance = 10f;public LayerMask playerLayer;public override TaskStatus OnUpdate() {Collider[] players = Physics.OverlapSphere(transform.position, viewDistance, playerLayer);return (players.Length > 0) ? TaskStatus.Success : TaskStatus.Failure;}
    }
    
  • 創建行為節點(移動邏輯):
    public class MoveToTarget : Action
    {public SharedTransform target;public float speed = 5f;public override TaskStatus OnUpdate(){Vector3 direction = (target.Value.position - transform.position).normalized;transform.position += direction * speed * Time.deltaTime;return TaskStatus.Running; // 持續執行直到外部中斷}
    }
    
(3) 行為中斷機制

通過 Abort Type 實現動態優先級調整:

  • Self:當高優先級條件滿足時,中斷當前任務(如發現玩家時停止巡邏)。
  • LowerPriority:強制終止低優先級任務(如戰斗時忽略拾取物品)。

📦 4. 移動相關行為(使用 Movement Pack)

  • 常用移動節點
    • Patrol:在預設路徑點巡邏(需搭配 NavMesh)。
    • Seek:向目標位置移動。
    • Flee:遠離指定目標。
  • NavMesh 集成
    1. 烘焙場景導航網格(Window > AI > Navigation)。
    2. 為 NPC 添加 NavMeshAgent 組件。
    3. 在行為樹中調用 SeekPatrol 節點并設置目標點。

? 5. 代碼控制與優化

  • 動態啟停行為樹
    BehaviorTree tree = GetComponent<BehaviorTree>();
    tree.enabled = false; // 暫停
    tree.DisableBehavior(); // 完全禁用
    
  • 全局行為樹管理
    通過 BehaviorManager 控制所有樹的更新頻率:
    // 設置每 0.1 秒更新一次
    BehaviorManager.instance.UpdateInterval = UpdateIntervalType.SpecifySeconds;
    BehaviorManager.instance.UpdateSeconds = 0.1f;
    
  • 性能優化
    • 避免每幀高開銷檢查,改用條件節點觸發。
    • 對頻繁執行的節點(如移動)使用 Parallel 并行節點。

🎯 6. 調試技巧

  • 實時監控
    使用 Window > Analysis > Input Debugger 查看輸入事件和設備狀態。
  • 日志輸出
    在行為樹中添加 Log 節點跟蹤執行狀態。
  • 變量監視
    在運行時通過 Behavior Tree Inspector 修改變量值測試不同場景。

💎 Unity 6.0 適配建議

  • ECS 集成:若使用 DOTS 架構,通過 BehaviorTree 的 C# API 將行為樹邏輯注入到 System 中。
  • Burst 編譯優化:對自定義節點中的數學計算(如路徑規劃)添加 [BurstCompile] 屬性提升性能。
  • 多線程處理:利用 Parallel 節點和 Unity Job System 分發子任務到不同線程。

完整案例:創建一個敵人 AI

  1. 行為樹結構
    SelectorCanSeePlayer(條件)→ Chase(行為)
    SequencePatrolWait
  2. 中斷設置
    CanSeePlayer 成功時,中斷 Patrol 并執行 Chase

通過以上步驟,你可在 Unity 6.0 中高效構建復雜 AI 系統。建議結合 Behavior Designer 文檔 和擴展包實現高級功能(如多角色協作)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/87471.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/87471.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/87471.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

107. Java 繼承 - 總結:方法重寫與隱藏

文章目錄 107. Java 繼承 - 總結&#xff1a;方法重寫與隱藏**詳細解釋&#xff1a;****方法重載** **總結** 107. Java 繼承 - 總結&#xff1a;方法重寫與隱藏 在 Java 中&#xff0c;定義與超類中的方法具有相同簽名的方法時&#xff0c;不同類型的方法之間會有不同的行為。…

Spring Cloud使用Eureka調用接口,超時設置(二)

在 Spring Cloud 微服務架構中&#xff0c;當同時配置了 Ribbon 和 Feign 的超時時間時&#xff0c;Feign 的配置優先級高于 Ribbon。具體規則和底層邏輯如下&#xff1a; ?? 1. 配置優先級規則 Feign 顯式配置 > Ribbon 配置 若在 Feign 中顯式設置了超時時間&#xff0…

iOS-SM3加密算法N種集成

近期的一個項目需要用到SM3加密算法&#xff0c;需要在iOS中使用Objective-C實現SM3國密加密算法。 SM3&#xff1a;是中國國家密碼管理局發布的密碼雜湊算法標準&#xff0c;適用于商用密碼應用中的數字簽名和驗證、消息認證碼的生成與驗證以及隨機數的生成等 由于iOS系統并未…

[逆向工程]什么是TEB 與 PEB(二十九)

[逆向工程]什么是TEB 與 PEB(二十九) 一、引言:為什么需要了解 TEB/PEB? 在 Windows 系統開發、調試或逆向工程中,TEB(Thread Environment Block) 和 PEB(Process Environment Block) 是理解程序執行機制的關鍵。它們如同進程與線程的“身份證”,存儲了從內存布局到…

逆向分析貝殼網人機驗證JS加密邏輯

引言 在數據爬取和自動化測試過程中&#xff0c;人機驗證&#xff08;如滑塊、點選、短信驗證等&#xff09;是常見的反爬手段。貝殼網&#xff08;ke.com&#xff09;作為國內領先的房產平臺&#xff0c;其人機驗證機制較為復雜&#xff0c;涉及前端JS加密、動態Token、行為檢…

Vue3 + Element Plus中el-table加載狀態分析

在 Vue 3 中&#xff0c;當 onMounted 鉤子被觸發時&#xff0c;父組件的 DOM 已經掛載完成&#xff0c;但子組件&#xff08;如 el-table&#xff09;可能尚未完成其內部渲染。具體分析如下&#xff1a; 1. onMounted 的執行時機 父組件掛載完成&#xff1a;onMounted 表示當前…

OpenCV圖像拼接技術詳解:從特征匹配到全景合成

本文將詳細介紹如何使用OpenCV實現兩幅圖像的自動拼接&#xff0c;涵蓋特征提取、單應性矩陣計算和圖像融合等關鍵技術。 一、圖像拼接概述 圖像拼接是將多張有重疊區域的圖像合并成一幅全景圖的技術&#xff0c;廣泛應用于全景攝影、衛星圖像處理、醫學影像等領域。其核心技術…

如何通過 5 種方式向 Android 手機添加音樂

想把音樂添加到你的安卓手機&#xff0c;然后隨時隨地無需網絡連接就能欣賞你喜愛的音樂嗎&#xff1f;這不再是麻煩。現在&#xff0c;你可以按照本指南中的有效方法&#xff0c;將音樂添加到你的安卓手機上。讓我們在安卓手機上聆聽我們美妙的歌曲吧。 第 1 部分&#xff1a;…

VS Code 項目中的 .vscode 目錄詳解

VS Code 項目中的 .vscode 目錄詳解 .vscode 目錄是 VS Code 項目的核心配置中心&#xff0c;它包含特定于當前項目的配置&#xff0c;這些配置覆蓋全局設置&#xff0c;確保團隊成員獲得一致的開發環境體驗。 .vscode 目錄中的核心文件 文件名作用是否應納入版本控制settin…

Ubuntu22.04安裝opengauss并配置遠程訪問、JDBC連接

內容概括 最近在研究怎么在ubuntu服務器環境下使用opengauss&#xff0c;看了下官方下載地址沒有適配ubuntu的安裝包。仔細翻了下官方文檔&#xff0c;發現安裝指南里有提供一個deb包安裝方案&#xff0c;有適配ubuntu&#xff0c;經過實踐可行&#xff0c;于是記錄下來給有需要…

國產智能體“雙子星”:實在Agent vs Manus(核心架構與技術實現路徑對比)

2025年&#xff0c;人工智能領域迎來重要轉折點——大模型的光環逐漸消散&#xff0c;落地應用成為行業焦點。 正如業內人士所言&#xff1a;“2023年&#xff0c;大家普遍覺得要買一個大模型&#xff0c;但訓練完了怎么用起來&#xff0c;大家一頭霧水。” 在這一背景下&…

pgAdmin 4 連接 postgreSQL

環境如下&#xff1a; 宿主機為Windows 11postgreSQL安裝在宿主機上的Linux虛機中&#xff0c;Hypervisor是VirtualBoxpgAdmin 4 已安裝在宿主機上 本文講述&#xff1a;如何通過宿主機上的pgAdmin 連接到虛擬機中的PG。 設置監聽 默認的PG監聽主機為localhost&#xff0c;…

HTTP 緩存策略:強緩存與協商緩存的深入解析

在HTTP緩存策略中&#xff0c;強緩存和協商緩存是兩種常用的機制&#xff0c;用于減少數據傳輸和提高網頁加載速度。它們通過在客戶端和服務器之間建立緩存來避免不必要的網絡請求&#xff0c;從而優化性能并提高用戶體驗。本文將詳細介紹這兩種緩存策略的原理、優勢和適用場景…

Node.js 中的 Token 認證機制詳解

文章目錄 Node.js 中的 Token 認證機制詳解1. Token 認證基礎1.1 什么是 Token 認證&#xff1f;1.2 Token 認證流程 2. JWT (JSON Web Token) 實現2.1 安裝依賴2.2 生成 Token2.3 驗證 Token 中間件 3. 完整實現示例3.1 登錄接口3.2 受保護的路由 4. Token 安全最佳實踐5. Tok…

23 - HaLoAttention模塊

論文《Scaling Local Self-Attention for Parameter Efficient Visual Backbones》 1、作用 HaloNet通過引入Haloing機制和高效的注意力實現&#xff0c;在圖像識別任務中達到了最先進的準確性。這些模型通過局部自注意力機制&#xff0c;有效地捕獲像素間的全局交互&#xf…

2025Mybatis最新教程(五)

第5章 ORM映射 5.1 MyBatis自動ORM失效 MyBatis只能自動維護庫表”列名“與”屬性名“相同時的對應關系,二者不同時,無法自動ORM。 自動ORM失效建表 create table t_managers(mgr_id int primary key auto_increment,mgr_name varchar(50),mgr_pwd varchar(50) ); 添加數據…

解決lombok注解失效問題

Lombok 注解失效是 Java 開發中的常見問題&#xff0c;通常由依賴配置、IDE 支持或構建工具設置引起。最近在拉取別人springboot3jdk21版本的項目時遇到了lombok注解失效&#xff0c;導致項目無法啟動的問題&#xff0c;以下是我的解決方案&#xff1a; 首先檢查idea 的lombok…

3分鐘搭建LarkXR實時云渲染PaaS平臺,實現各類3D/XR應用的一鍵推流

LarkXR是由Paraverse平行云自主研發的去中心化實時云渲染平臺&#xff0c;以其卓越的性能和豐富完備的功能插件&#xff0c;引領3D/XR云化行業風向標。LarkXR適用于3D/XR開發者、設計師、終端用戶等創新用戶&#xff0c;可以在零硬件負擔下&#xff0c;輕松實現超高清低時延的3…

vue3 watch監視詳解

watch監視 一 &#xff1a;watch監視{ref}定義的基本類型結構 <template><div class"person"><h1>情況一:watch監視{ref}定義的基本類型結構</h1><h1>當前的和為{{ sum }}</h1><button click"changeSum">點我…

TensorFlow Serving學習筆記2: 模型服務

本文深入剖析 TensorFlow Serving 的核心架構與實現機制&#xff0c;結合源碼分析揭示其如何實現高可用、動態更新的生產級模型服務。 一、TensorFlow Serving 核心架構 1.1 分層架構設計 TensorFlow Serving 采用模塊化分層設計&#xff0c;各組件職責分明&#xff1a; 組件…