对于非行为树组件,除了”非 Task 对象获取变量”一文中提到的,通过变量名获取变量引用,还可以通过变量同步来实现。
假设有一个 UI 元素反映了 agent 是否还活着,则 UI 组件需要获取 task 中相关的变量。
UI 上的非行为树组件中,有属性如下:
public bool isAlive { get; set; }
首先需要在 Variables 窗口中,创建一个共享变量 IsAlive,如图:
然后在 UI 组件上,挂载一个 Variable Synchronizer 组件,如图:
然后将 agent 游戏对象,赋值给 GameObject 参数,如图:
其他参数作用如下:
- Shared Variable:非行为树组件想要引用的变量,本例中为 IsAlive
- Direction
- 左箭头 ←:非行为树组件变量,写入共享变量
- 右箭头 →:非行为树组件变量,读取共享变量
- Type:变量类型。有四种:
- Behavior Designer
- Property
- Animator
- PlayMaker
- GameObject:非行为树组件所挂载的游戏对象
- Component:非行为树组件的类型
- Property:非行为树组件中的变量,本例中为 isAlive