Struckd Muse Behavior 变量与数据类型 Object Float String
为什么需要变量
行为树不只是"从 A 走到 B"的直线——很多逻辑需要"记住"一些信息,然后在后续节点中使用。变量就是行为树里用来"存数据"的地方。
比如你想做"玩家在某个区域内总共收集了 5 枚金币后才允许通关",你需要一个变量来记住"已经收集了多少枚"。
三种变量类型
Muse Behavior 目前支持三种变量类型:
Object(对象)
Object 类型变量用来存储"游戏场景中的某个对象引用"——比如某个特定的 NPC、某个特定的金币、某个特定的可破坏物体。
典型用途:
- 记住"玩家刚刚消灭的敌人",然后对它做后续处理(比如让它说话、播放动画)
- 记住"当前要追击的目标",行为树根据这个对象的位置来决定 NPC 的行动
Float(浮点数)
Float 是带小数点的数值,用来存储"可量化的数值"——比如分数、距离、时间、百分比等。
典型用途:
- 存储已收集金币的数量
- 存储两个对象之间的距离
- 存储倒计时秒数
- 存储游戏中某个条件触发的累计次数
String(字符串)
String 用来存储"文字"——比如对话内容、标签文字、名称等。
典型用途:
- 动态生成对话(根据某个条件显示不同文字)
- 对象头顶的动态标签
- 向屏幕显示的动态提示文字
变量的作用域
在 Muse Behavior 中创建的变量:
- 属于当前这个资产(角色/对象)的行为图
- 只有这个资产的行为树可以读取和修改
- 不能在不同资产的行为图之间共享(比如不能在 NPC A 的行为树里读 NPC B 的变量)
如果需要跨资产传递状态,可以用"公共的游戏事件"来实现——但这比变量复杂得多,官方文档没有详细说明。
创建变量
在 Muse Behavior 编辑器中,右键空白处选择"Create Variable",然后选择类型和初始值即可。变量创建后会出现在右侧的变量列表里,可以被任何节点引用。
与 Unity 的关系
变量在导出到 Unity 时不会被自动保留。你需要在 Unity 里自己定义对应的字段和数据结构来替代——Muse 变量只是一个临时的行为树内数据存储,导出后需要重新实现。