1.5 KiB
1.5 KiB
Editor API V2:游戏内 Runtime Builder
这个示例把编辑器直接作为玩法:玩家可点击 Add Tree / Add Bench / Add Ride
立即建造到下一个空网格,也可先选材质、再点击场景网格精确放置。两种交互都走同一套
planCommand / executePlan 命令协议。
运行:
make run/win32-debug GAME=examples/editor-api-v2
演示链路
- 游戏用
editor.registerScriptCommand(...)向共享EditorCommandService注入park.scene.place-asset; EditorSession.getCommand*()按 HostProfile 发现命令;- UI 的快捷添加和精确放置只组装包含资产、材质、位置和费用的 payload;
planCommand()生成无副作用计划和稳定planId;executePlan()执行保留的计划,回传 transaction state、revision 和 authority receipt;- 游戏逻辑回调校验预算、占用和边界,然后修改真实玩法状态。
核心调用:
local plan = session.planCommand("park.scene.place-asset", {
x = 3,
y = 4,
asset = "park.asset.ride",
material = "park.material.sunset",
cost = 120
});
if (plan.accepted) {
local receipt = session.executePlan(plan.planId, {});
print(receipt.transactionState + "\n");
}
这里的脚本注册入口适合游戏原型和项目专用编辑能力。需要服务器 Authority、可逆 Domain Operation、多人提交或持久化策略时,游戏模块应实现 IGameEditorExtension,但 UI 和 Session 调用保持不变。