用途:编写 MSW 的 .mlua 脚本,并进行集成试玩与调试。mlua 基于 Lua,但带有 MSW 专有注解、生命周期和执行空间模型,仅凭通用 Lua 知识无法产出可运行代码。
主要能力:支持组件脚本(@Component)、全局逻辑脚本(@Logic)、扩展脚本,以及 @Event、@Item、@BTNode、@State、@Struct 等类型;涵盖生命周期(OnInitialize、OnBeginPlay、OnUpdate、OnEndPlay、OnDestroy,组件另有 OnMapEnter/OnMapLeave)、执行空间(ServerOnly、ClientOnly、Server、Client、Multicast)、@Sync 属性同步与 RPC 调用。mlua 在 Lua 5.3 基础上增加 continue、复合赋值与位运算符,禁止全局变量和协程,父类调用使用 __base:MethodName()。
使用方式:优先在 ./RootDesk/MyDesk/ 中查找并扩展现有脚本;新脚本放入功能子目录。写代码前先查阅 ./Environment/NativeScripts/ 下的 .d.mlua 签名,再写、再经 LSP 诊断,将错误级诊断清零。修改 .mlua 后调用 Maker MCP refresh(需先退出编辑模式)。方法说明注释须写在方法体首行。涉及 .map/.model/.ui 时先阅读构建器协议文件。
限制:.codeblock 由 Refresh 生成,不可手动增删改;引擎 API 定义目录只读。@Logic 无 self.Entity,需通过属性注入或 _EntityService 获取实体;OnMapEnter/OnMapLeave 仅对组件生效。IsServer/IsClient 必须作为方法调用。执行空间方法有保留参数名(self、senderUserId、targetUserId、messageOwnerEntity)。跨端参数不支持 any 与引擎枚举。OnMapEnter 启动的定时器与事件须在 OnMapLeave 清理,否则触发内存泄漏警告。