111 lines
2.9 KiB
Markdown
111 lines
2.9 KiB
Markdown
|
|
# 行为树编辑器使用指南
|
|||
|
|
|
|||
|
|
行为树编辑器提供了可视化的方式来创建和编辑行为树。
|
|||
|
|
|
|||
|
|
## 启动编辑器
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd packages/editor-app
|
|||
|
|
npm run tauri:dev
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 基本操作
|
|||
|
|
|
|||
|
|
### 打开行为树编辑器
|
|||
|
|
|
|||
|
|
通过以下方式打开行为树编辑器窗口:
|
|||
|
|
|
|||
|
|
1. 在资产浏览器中双击 `.btree` 文件
|
|||
|
|
2. 菜单栏:`窗口` → 选择行为树编辑器相关插件
|
|||
|
|
|
|||
|
|
### 创建新行为树
|
|||
|
|
|
|||
|
|
在行为树编辑器窗口的工具栏中点击"新建"按钮(加号图标)
|
|||
|
|
|
|||
|
|
### 保存行为树
|
|||
|
|
|
|||
|
|
在行为树编辑器窗口的工具栏中点击"保存"按钮(磁盘图标)
|
|||
|
|
|
|||
|
|
### 添加节点
|
|||
|
|
|
|||
|
|
从左侧节点面板拖拽节点到画布:
|
|||
|
|
- 复合节点:Selector、Sequence、Parallel
|
|||
|
|
- 装饰器:Inverter、Repeater、UntilFail等
|
|||
|
|
- 动作节点:ExecuteAction、Wait等
|
|||
|
|
- 条件节点:Condition
|
|||
|
|
|
|||
|
|
### 连接节点
|
|||
|
|
|
|||
|
|
拖拽父节点底部的连接点到子节点顶部建立连接
|
|||
|
|
|
|||
|
|
### 删除节点
|
|||
|
|
|
|||
|
|
选中节点后按 `Delete` 或 `Backspace` 键
|
|||
|
|
|
|||
|
|
### 编辑属性
|
|||
|
|
|
|||
|
|
点击节点后在右侧属性面板中编辑节点参数
|
|||
|
|
|
|||
|
|
## 黑板变量
|
|||
|
|
|
|||
|
|
在黑板面板中管理共享数据:
|
|||
|
|
|
|||
|
|
1. 点击"添加变量"按钮
|
|||
|
|
2. 输入变量名、选择类型并设置默认值
|
|||
|
|
3. 在节点中通过变量名引用黑板变量
|
|||
|
|
|
|||
|
|
支持的变量类型:
|
|||
|
|
- Number:数字
|
|||
|
|
- String:字符串
|
|||
|
|
- Boolean:布尔值
|
|||
|
|
- Object:对象引用
|
|||
|
|
|
|||
|
|
## 导出运行时资产
|
|||
|
|
|
|||
|
|
### 导出步骤
|
|||
|
|
|
|||
|
|
1. 点击工具栏的"导出"按钮
|
|||
|
|
2. 选择导出模式:
|
|||
|
|
- 当前文件:仅导出当前打开的行为树
|
|||
|
|
- 工作区导出:导出项目中所有行为树
|
|||
|
|
3. 选择资产输出路径
|
|||
|
|
4. 选择TypeScript类型定义输出路径
|
|||
|
|
5. 为每个文件选择导出格式:
|
|||
|
|
- 二进制:.btree.bin(默认,文件更小,加载更快)
|
|||
|
|
- JSON:.btree.json(可读性好,便于调试)
|
|||
|
|
6. 点击"导出"按钮
|
|||
|
|
|
|||
|
|
### 加载运行时资产
|
|||
|
|
|
|||
|
|
`deserialize`方法会自动识别数据格式(JSON或二进制):
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
import { BehaviorTreeAssetSerializer, BehaviorTreeAssetLoader } from '@esengine/behavior-tree';
|
|||
|
|
|
|||
|
|
// 加载二进制格式
|
|||
|
|
const binaryData = await loadFile('enemy-ai.btree.bin'); // Uint8Array
|
|||
|
|
const asset = BehaviorTreeAssetSerializer.deserialize(binaryData);
|
|||
|
|
const aiEntity = BehaviorTreeAssetLoader.instantiate(asset, scene);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
import { BehaviorTreeAssetSerializer, BehaviorTreeAssetLoader } from '@esengine/behavior-tree';
|
|||
|
|
|
|||
|
|
// 加载JSON格式
|
|||
|
|
const jsonString = await loadFile('enemy-ai.btree.json'); // string
|
|||
|
|
const asset = BehaviorTreeAssetSerializer.deserialize(jsonString);
|
|||
|
|
const aiEntity = BehaviorTreeAssetLoader.instantiate(asset, scene);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 支持的操作
|
|||
|
|
|
|||
|
|
- `Delete` / `Backspace`:删除选中的节点或连线
|
|||
|
|
- `Ctrl` + 点击:多选节点
|
|||
|
|
- 框选:拖拽空白区域进行框选
|
|||
|
|
- 拖拽画布:按住鼠标中键或空格键拖拽
|
|||
|
|
|
|||
|
|
## 下一步
|
|||
|
|
|
|||
|
|
- 查看[编辑器工作流](./editor-workflow.md)了解完整的开发流程
|
|||
|
|
- 查看[自定义动作](./custom-actions.md)学习如何扩展节点
|