CommandGraph:基于节点的事件脚本
CommandGraph 是 MCE 的可视化脚本系统,用于创建 NPC 行为、过场动画、任务和交互事件。它提供基于节点的编辑器,你可以连接命令来定义事件序列——无需编写 C# 代码。
这是所有版本(包括无法访问源代码的 DLL 版本)的游戏设计师使用 MCE 时的主要工具。
什么是 CommandGraph?
CommandGraph 是附加到 Actor(世界中任何可交互实体)的节点图。当玩家触发 Actor(通过交互、踩上去或进入其区域),图表按顺序执行其节点。
可以将其理解为可视化脚本,每个节点是一个游戏动作:
[Start] → [Show Dialog] → [Branch: Has Badge?]
├─ Yes → [Give Item] → [End]
└─ No → [Show Dialog: "Come back later"] → [End]
创建你的第一个事件
步骤 1:创建 Actor
- 在场景中,在你希望放置 NPC 的位置创建一个空 GameObject。
- 添加
Actor组件(或其变体之一:SimpleActor、TriggerActor)。 - 添加
SpriteRenderer作为 NPC 的视觉表现。 - Actor 将自动注册到
GridController。
步骤 2:打开 CommandGraph 编辑器
- 选择你的 Actor GameObject。
- 在 Inspector 中,找到 CommandGraph 部分。
- 点击 Edit Graph 打开节点编辑器窗口。
步骤 3:添加节点
- 在图编辑器中右键打开添加节点菜单。
- 节点按类别组织(见下文)。
- 选择节点类型将其添加到图中。
- 通过从一个节点的输出端口拖到另一个节点的输入端口来连接节点。
步骤 4:配置节点
点击节点在 Inspector 面板中查看其属性:
- 对话节点:输入要显示的文字、说话者名称和头像。
- 分支节点:选择要检查的游戏变量和比较方式。
- 道具节点:选择要给予/获取的道具及数量。
- 传送节点:设置目标场景和位置。
Actor 类型
MCE 提供多种 Actor 变体:
| Actor 类型 | 触发方式 | 使用场景 |
|---|---|---|
Actor | 玩家交互(面对时按互动按钮) | NPC、路标、物体 |
SimpleActor | 玩家交互,简化设置 | 基础 NPC |
TriggerActor | 玩家踩上或进入区域 | 自动触发、隐 藏事件 |
GridSubscribingActor | 响应网格事件 | 压力板、近距离触发 |
PushableActor | 玩家走向它时推动 | 巨石、谜题方块 |
ActorItem | 玩家交互,给予道具后消失 | 地面上的道具拾取 |
节点类别
对话
显示文字、选择回复和管理对话。
| 节点 | 描述 |
|---|---|
| ShowDialog | 显示包含说话者消息的文本框 |
| ShowChoiceDialog | 向玩家展示多选项 |
| ShowMonsterDialog | 显示与怪兽相关的对话(展示精灵图) |
| CharacterPopUp | 在 NPC 头顶显示弹出图标(!、?、...) |
ShowDialog 示例:
Speaker: "Professor Elm"
Text: "Welcome to the world of monsters!"
Portrait: oak_portrait
Wait for Input: true
分支
根据条件控制流程。
| 节点 | 描述 |
|---|---|
| BranchOnVariable | 检查 GameVariable 并分支为是/否 |
| BranchOnBadge | 检查玩家是否拥有特定徽章 |
| BranchOnItem | 检查玩家是否拥有特定道具 |
| BranchOnMonster | 检查玩家队伍中是否有特定物种 |
| BranchOnMoney | 检查玩家是否有足够的金钱 |
| BranchOnRosterCount | 检查队伍中有多少只怪兽 |
每个分支节点有两个输出端口:True 和 False。
道具
管理玩家的物品栏。
| 节点 | 描述 |
|---|---|
| GiveItem | 向玩家背包中添加道具 |
| TakeItem | 从玩家背包中移除道具 |
| GiveMonster | 向玩家队伍中添加怪兽 |
| GiveMoney | 向玩家钱包中添加金钱 |
| TakeMoney | 从玩家钱包中扣除金钱 |