可视化编程
不会写代码也能做玩法?完全可以。 逻辑编辑器(也叫蓝图编辑器)是中国版为开发者打造的节点式可视化编程系统,通过"连连看"的方式构建完整的游戏逻辑。
概述
逻辑编辑器以蓝图(Blueprint) 为载体,将中国版全套 SDK 接口和 Python 内置函数集成为可视化节点。你只需在编辑器中找到需要的节点,按逻辑顺序连接起来,逻辑就能在游戏中生效。
[事件: 玩家受伤] ──→ [获取实体速度] ──→ [设置速度 x2] ──→ [定时器: 3秒后恢复]上面这条"被打后加速"的逻辑,在蓝图中只需要拖出四个节点并连线即可完成。
功能亮点
| 特性 | 说明 |
|---|---|
| 节点式编写 | 通过添加节点和连线控制数据传递,无需写代码 |
| 即挂即用 | 蓝图零件挂接到预设即生效,同一零件可复用到不同预设 |
| SDK 全覆盖 | 集成全套 ModSDK 接口,全部已汉化 |
| 智能搜索 | 支持中文、英文、拼音搜索节点,支持分词 |
| 变量管理 | 零件变量、自定义接口的创建和管理 |
| UI 蓝图 | 支持用蓝图编写 UI 界面逻辑 |
逻辑编辑器界面
逻辑编辑器主要由以下区域组成:
| 区域 | 用途 |
|---|---|
| 节点图表(中央) | 主编辑区域,在这里添加节点、连接引线 |
| 脚本元素窗口(左侧) | 管理零件变量和自定义接口 |
| 右键节点菜单 | 搜索并添加节点,支持中文/英文/拼音搜索 |
| 属性面板(右侧) | 查看和修改选中节点的属性 |
基本操作
- 添加节点:在图表空白处右键,输入关键词搜索,点击选中节点
- 连接引线:从节点的输出端口拖线到另一个节点的输入端口
- 删除节点:选中节点后按 Delete 键
- 调整视图:鼠标滚轮缩放,中键拖拽画布
引线类型
蓝图中有两种引线:执行引线(白色,控制执行顺序)和数据引线(彩色,传递数据值)。执行引线决定"先后",数据引线决定"输入输出"。
事件节点
事件是蓝图逻辑的执行起点。当游戏中发生特定行为时,对应的事件节点会触发,后续连接的节点按顺序执行。
常用事件示例:
| 事件 | 触发时机 |
|---|---|
| 玩家加入 | 玩家进入游戏世界 |
| 实体受伤 | 实体受到伤害 |
| 方块放置 | 玩家放置方块 |
| 按键点击 | 玩家按下指定按键 |
| 定时器到期 | 计时器倒计时结束 |
你也可以使用自定义事件,在蓝图之间通过广播和监听进行通讯:
[广播自定义事件: "boss_defeated"] ──→ (其他蓝图)[监听自定义事件: "boss_defeated"]动作节点
动作节点用于调用游戏 API,执行具体操作。它们是蓝图中最丰富的节点类型,覆盖了 ModSDK 的全部接口。
常用动作节点:
| 动作 | 说明 |
|---|---|
| 设置实体速度 | 修改实体的移动速度 |
| 创建实体 | 在指定位置生成实体 |
| 发送聊天消息 | 向玩家发送文本 |
| 播放动画 | 播放指定的动画资源 |
| 设置方块 | 在指定坐标放置方块 |
条件与分支
蓝图支持 if/else 逻辑。使用分支节点根据条件走不同的执行路径:
[获取玩家血量] ──→ [分支: 血量 < 5 ?]
│
┌─ True ──→ [播放低血量警告]
└─ False ─→ [无操作]常用条件节点:
- 比较节点:等于、不等于、大于、小于
- 逻辑运算:与、或、非
- 类型判断:判断实体类型、方块类型等
变量与数据
零件变量
零件变量用于在蓝图中存储数据。通过获取变量和设置变量节点读写。
| 变量类型 | 说明 |
|---|---|
| 整数 / 浮点数 | 数值运算 |
| 字符串 | 文本处理 |
| 布尔值 | 逻辑判断 |
| 列表 / 字典 | 存储集合数据 |
| 实体 ID | 引用游戏实体 |
变量作用域
- 零件变量:属于当前蓝图零件实例,不同实例各自独立
- 预设属性:通过属性面板暴露,可在编辑器中直接修改
- 全局变量:通过世界属性零件管理,所有蓝图共享
开放属性
将零件变量标记为"开放属性"后,可以在预设编辑器的属性面板中直接调整参数,无需修改蓝图内部逻辑。这是实现零件复用的关键。
与脚本的关系
蓝图和 Python 脚本可以在同一个项目中共存,各有优劣:
| 维度 | 蓝图(可视化) | Python 脚本 |
|---|---|---|
| 上手难度 | 低,无需编程基础 | 中,需要 Python 基础 |
| 开发效率 | 简单逻辑快,复杂逻辑慢 | 复杂逻辑快,简单逻辑略慢 |
| 可读性 | 直观,但节点多时杂乱 | 代码整洁,可结构化 |
| 性能 | 略低于脚本 | 更高 |
| 调试 | 可视化执行流,易追踪 | 需要日志和断点 |
| 复用性 | 蓝图零件可复用 | 模块/类可复用 |
| SDK 覆盖 | 全部覆盖 | 全部覆盖 |
混合使用:蓝图可以调用 Python 脚本中的函数,Python 也可以通过事件系统与蓝图通讯。在同一个预设上,你可以同时挂接蓝图零件和脚本零件。
适用场景
推荐使用蓝图
- 简单的游戏玩法逻辑(触发器、计时器、条件判断)
- 快速原型验证
- UI 界面交互逻辑
- 非程序员主导的开发团队
建议使用脚本
- 复杂的算法和数据处理
- 性能敏感的高频逻辑
- 大量重复模式的代码(循环、批处理)
- 需要精细代码组织和版本管理的项目
蓝图的局限
蓝图节点数量过多时(数百个以上),图表会变得难以维护。建议将大型逻辑拆分为多个蓝图零件,或将核心计算逻辑用 Python 实现,用蓝图做流程编排。
快速上手
第一个蓝图 Mod —"被打后加速的猪"
- 创建项目:在 MC Studio 中新建项目,准备好地图
- 创建蓝图零件:新建一个服务端蓝图零件,挂接到猪的实体预设上
- 编写逻辑:
- 添加"受伤事件"监听节点
- 连接"获取实体速度"节点
- 连接"设置实体速度 × 2"节点
- 添加定时器在 3 秒后恢复原速
- 测试:点击运行,进入游戏攻击猪,观察加速效果
客户端与服务端
蓝图同样遵循 Client-Server 架构。创建蓝图零件时需要区分:
- 服务端蓝图:处理游戏逻辑(伤害计算、物品操作、实体管理)
- 客户端蓝图:处理 UI 显示、特效播放、音效等表现层逻辑
从蓝图到脚本
蓝图底层编译为 Python 代码。如果你的项目后期需要迁移到纯脚本方案,蓝图中的逻辑可以按节点逐一翻译为 Python 调用。
