有时候,在一个 task 内部,想要使用另一个 task 的变量。除了使用前面提到的全局、共享、动态变量外,还可以通过引用任务实现。

    假设有 TaskA 如下:

    1. using UnityEngine;
    2. using BehaviorDesigner.Runtime.Tasks;
    3. public class TaskA : Action
    4. {
    5. public TaskB referencedTask;
    6. public void OnAwake()
    7. {
    8. Debug.Log(referencedTask.SomeFloat);
    9. }
    10. }

    TaskB 如下:

    1. using UnityEngine;
    2. using BehaviorDesigner.Runtime.Tasks;
    3. public class TaskB : Action
    4. {
    5. public float SomeFloat;
    6. }

    行为树中如下:
    image.png
    选中 TaskA,点击 Inspector 窗口中 Referenced Task 变量右边的 Select 按钮,然后选择 TaskB,此时行为树视图中的 TaskB 的左上角会出现一个链接图标。
    image.png
    执行完上述步骤后,就可以在 TaskA 中使用 TaskB 中的变量了。

    上图中,点击 TaskB 右侧的 × 按钮,清除对 TaskB 的应用。点击 i 按钮,关联的 task 在行为树视图中会被高亮,如图:
    image.png
    也可以引用 Task 数组:

    1. public class TaskA : Action
    2. {
    3. public TaskB[] referencedTasks;
    4. }