主题
Editor
编辑器顶层对象,通过全局变量 editor 访问,提供服务获取、试玩控制、日志与插件管理。
概览
Editor 是编辑器 Lua 环境注入的顶层入口,通过全局变量 editor 直接访问;它负责获取编辑器服务、控制试玩、保存地图、执行试玩代码以及读写编辑器日志。
函数
GetService
按照服务名称从编辑器环境中获取对应的服务实例。传入参数为服务名称字符串,服务存在时返回对应实例,服务不存在时返回空值。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
serviceName | String | 服务名(如 "World") |
返回值
| 类型 | 说明 |
|---|---|
Any | 对应的服务实例;服务不存在时返回 nil |
获取 World 服务
lua
-- @runtime editor
local world = editor:GetService("World")
local units = world:GetDescendants()
print("当前场景单位数:", #units)IsLoaded
判断编辑世界是否已准备完毕,返回一个 Bool 值表示世界是否已就绪。
返回值
| 类型 | 说明 |
|---|---|
Bool |
判断编辑世界是否已准备完毕
lua
-- @runtime editor
local result = editor:IsLoaded()
if result then
print("编辑世界已准备完毕")
else
print("编辑世界尚未准备完毕")
endRunGame
在编辑器中开始当前地图的试玩。该方法没有参数,也没有返回值。
注意: 该调用会把编辑器切换到试玩状态。自动化脚本应等待试玩真正启动后再执行依赖试玩环境的操作,并在结束后调用 StopGame 或使用编辑器停止试玩。
调用 RunGame
lua
-- @runtime editor
editor:RunGame()
print("调用完成", editor)StopGame
停止编辑器内正在进行的试玩。该方法没有参数,也没有返回值。
注意: 该调用用于结束已启动的试玩;编辑器本来处于编辑状态时无需调用。
调用 StopGame
lua
-- @runtime editor
editor:StopGame()
print("调用完成", editor)SaveMap
保存当前地图。当保存接口可用并完成保存操作时返回 true,当保存接口不可用时返回 false。
返回值
| 类型 | 说明 |
|---|---|
Bool | 保存接口不可用时返回 false |
调用 SaveMap
lua
-- @runtime editor
local result = editor:SaveMap() -- 返回 Bool
if result then
print("调用结果为 true")
else
print("调用结果为 false")
endIsMapDirty
判断当前地图是否存在未保存的修改。存在未保存修改时返回 true,否则返回 false。
返回值
| 类型 | 说明 |
|---|---|
Bool | 有未保存修改返回 true |
调用 IsMapDirty
lua
-- @runtime editor
local result = editor:IsMapDirty() -- 返回 Bool
if result then
print("调用结果为 true")
else
print("调用结果为 false")
endExecuteGameCode
在编辑器当前进行的试玩环境中执行一段游戏代码。调用时传入一个表示游戏代码的字符串,该方法没有返回值。
注意: 调用前必须已经启动试玩。code 是要在试玩环境中执行的 Lua 源码字符串,不是枚举值。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
code | String | 要执行的 Lua 代码 |
在已启动的试玩环境中输出日志
lua
-- @runtime editor
local code = [[print("Hello from game runtime")]]
editor:ExecuteGameCode(code)GetLog
获取编辑器日志的文本内容,返回值为字符串。日志中包含此前通过输出日志等操作写入的内容。
返回值
| 类型 | 说明 |
|---|---|
String | 编辑器日志文本 |
调用 GetLog
lua
-- @runtime editor
local result = editor:GetLog() -- 返回 String
if result ~= nil then
print(result)
if result ~= "" then
print("返回了非空字符串")
end
endLog
向编辑器日志输出一条文本内容。参数 content 为要写入日志的字符串,该方法没有返回值。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
content | String | 要输出的日志内容 |
调用 Log
lua
-- @runtime editor
local content = "default" -- String
editor:Log(content)
print("调用完成", editor)事件
Loaded
签名:Loaded()
编辑世界准备完毕时触发。由宿主在插件脚本装载完成之后补发——LuaVM 建立时世界虽已就绪,但此刻插件尚未装载、监听器未就位,过早 Fire 插件收不到。若插件加载时机不确定,推荐用 IsLoaded() 判定或 if editor:IsLoaded() then init() else editor.Loaded:Once(init) end 的幂等写法(Loaded:Wait() 需要协程上下文,不可在插件 require 期使用)。每次退出试玩回到编辑态都会重建 LuaVM,Loaded 随之在新一代 VM 中再触发一次。
