对于非行为树组件,除了”非 Task 对象获取变量”一文中提到的,通过变量名获取变量引用,还可以通过变量同步来实现。

    假设有一个 UI 元素反映了 agent 是否还活着,则 UI 组件需要获取 task 中相关的变量。

    UI 上的非行为树组件中,有属性如下:

    1. public bool isAlive { get; set; }

    首先需要在 Variables 窗口中,创建一个共享变量 IsAlive,如图:
    image.png
    然后在 UI 组件上,挂载一个 Variable Synchronizer 组件,如图:
    image.png
    然后将 agent 游戏对象,赋值给 GameObject 参数,如图:
    image.png
    其他参数作用如下:

    • Shared Variable:非行为树组件想要引用的变量,本例中为 IsAlive
    • Direction
      • 左箭头 ←:非行为树组件变量,写入共享变量
      • 右箭头 →:非行为树组件变量,读取共享变量
    • Type:变量类型。有四种:
      • Behavior Designer
      • Property
      • Animator
      • PlayMaker
    • GameObject:非行为树组件所挂载的游戏对象
    • Component:非行为树组件的类型
    • Property:非行为树组件中的变量,本例中为 isAlive