共享变量概览
作用域
作用域决定了共享变量对哪些行为树可见。
目前支持 2 个作用域:
tree
作用域下,共享变量只对当前行为树可见。scene
作用域下,共享变量对当前场景下的所有行为树可见。
创建共享变量
[!Note] 在开始创建共享变量时,作用域就被指定,且不可更改。
创建在当前行为树内部使用的共享变量
- 点击作用域
tree
处的菜单按钮。 - 点击
Create
选项。 - 弹出共享变量创建框。
- 选择共享变量类型
type
。 - 设置属性
name
。不能为空,否则Create
按钮不可点击。 - 点击
Create
按钮。 - 数据写入行为树资源文件。
- 共享变量列表自动刷新,
创建在当前场景内部使用的共享变量
- 点击作用域
scene
处的菜单按钮。 - 点击
Create
选项。 - 弹出共享变量创建框。
- 选择共享变量类型
type
。 - 设置属性
name
。不能为空,否则Create
按钮不可点击。 - 点击
Create
按钮。 - 由于作用域
scene
为场景共享,不属于任何行为树,所以数据不会写入行为树资源文件。这种情况下,编辑器会将数据写入到 assets/resources/behavior-dog/generated/ 文件夹下以当前场景UUID
命名的JSON
文件里。如果文件不存在,会自动创建。 - 共享变量列表自动刷新。
删除共享变量
参考下面的 删除按钮 小节。
共享变量检查器
类名
通过 btclass
注册的共享变量类名会显示在这个地方:
名字
共享变量的属性 name
会显示在这个地方:
展开按钮
默认情况下,列表上所有共享变量都为折叠状态。
点击展开按钮可查看和修改共享变量的 属性 。
引用计数
每个共享变量内部都维护着一个引用计数。
颜色的意义
当引用计数不为 0
时,可以从引用计数显示的颜色判断出引用对象当前的状态。
白色
,表明各引用对象处于正常的 可执行 状态。红色
,表明该共享变量有错误待解决,或者引用对象中至少有一个是处于 不可执行 状态。如下图:
黄色
,表明该共享变量有警告待解决。如下图:
引用对象
展开共享变量时,如果引用计数不为 0
,在删除按钮下面会列出所有引用该共享变量的对象信息。
格式
- 如果引用对象为行为树组件,则显示格式为
BehaviorTree <behaviorName>
。 - 如果引用对象为行为树任务, 则显示格式为
Task - 类名 <name>
。 - 如果引用对象为共享变量, 则显示格式为
SharedVariable - 类名 <name>
。
上图传达的信息是,名字为
null
的任务WithinSight
,引用了名为Enemy
的共享变量SharedCCNode
。
颜色的意义
- 当引用对象显示为
蓝色
时,表明其为 可执行 状态。 - 当引用对象显示为
红色
时,表明其有错误待解决,为 不可执行 状态。
上图传达的信息是,任务
WithinSight
当前是 可执行 状态。
删除按钮
展开共享变量,其底部会出现一个删除按钮。
如果共享变量没有被行为树组件、行为树任务或者其他共享变量引用,则可以被删除。如下图:
如果共享变量被行为树组件、行为树任务或者其他共享变量之中任意一个引用,则不可被删除。如下图:
菜单
- 点击
Create
选项可叫出共享变量创建框。 - 点击
Expand
选项可一次性展开所有共享变量。 - 点击
Collapse
选项可一次性折叠起所有共享变量。 - 点击
Delete Unused
选项可一次性删除所有可被删除的共享变量。