用途:创建和编辑 Defold 的 Lua 脚本文件(.script、.gui_script、.render_script、.editor_script)以及普通 Lua 模块(.lua)。Defold 有四种 Lua 脚本类型,各自运行在不同上下文、拥有不同 API;.lua 模块用于封装可复用逻辑。API 细节可参考 defold-api-fetch 技能,概念手册参考 defold-docs-fetch 技能。
主要能力:区分四种脚本类型及其上下文、Lua 运行时、go.property() 支持与关键命名空间;说明 .lua 模块结构(用 local 表封装并 return,避免全局变量,有状态模块类似单例);列出各类型可用的生命周期回调(init、final、fixed_update、update、late_update、on_message、on_input、on_reload)及差异;说明原生扩展通过 Lua C API 注册全局表,并用 *.script_api(YAML)描述自动补全;支持 Lua 预处理条件编译(--#IF DEBUG / --#ELSE / --#ENDIF,关键字 RELEASE、DEBUG、HEADLESS)。
使用方式:新建 .lua 模块时创建 local 表、添加函数并 return,用点号路径 require("main.utils");新建脚本时先确定扩展名,阅读 references/ 下对应类型参考,按 requires → helpers → declarations → callbacks 结构编写,只添加需要的回调;编辑现有脚本时先读取文件,保留已有声明(如 go.property() 名称)与回调签名。
适用场景:在 Defold 项目中编写游戏对象组件、GUI、渲染管线、编辑器脚本,以及抽取跨脚本复用的通用逻辑。
限制:html5 模块仅在 HTML5 平台可用;部分内置模块(liveupdate、image、types、profiler、sound、physics 等)可通过 App Manifest 排除,排除后运行时不可用;无 utf8 模块,处理非 ASCII 字符串需使用 defold-utf8 依赖;每实例状态应存于 self 而非模块级 local;未使用的回调应省略;修改 go.property() 名称或类型可能破坏 .go 与 .collection 中的覆盖设置。具体模板与约束见 references/ 目录。