有时候,在一个 task 内部,想要使用另一个 task 的变量。除了使用前面提到的全局、共享、动态变量外,还可以通过引用任务实现。
假设有 TaskA 如下:
using UnityEngine;
using BehaviorDesigner.Runtime.Tasks;
public class TaskA : Action
{
public TaskB referencedTask;
public void OnAwake()
{
Debug.Log(referencedTask.SomeFloat);
}
}
TaskB 如下:
using UnityEngine;
using BehaviorDesigner.Runtime.Tasks;
public class TaskB : Action
{
public float SomeFloat;
}
行为树中如下:
选中 TaskA,点击 Inspector 窗口中 Referenced Task 变量右边的 Select 按钮,然后选择 TaskB,此时行为树视图中的 TaskB 的左上角会出现一个链接图标。
执行完上述步骤后,就可以在 TaskA 中使用 TaskB 中的变量了。
上图中,点击 TaskB 右侧的 × 按钮,清除对 TaskB 的应用。点击 i 按钮,关联的 task 在行为树视图中会被高亮,如图:
也可以引用 Task 数组:
public class TaskA : Action
{
public TaskB[] referencedTasks;
}