Skip to content

EUIService ​

EUIService 世界编辑器 EUI 服务,负责在编辑器中创建、查找、删除 EUI 节点。

概览 ​

EUIService 是世界编辑器中的 EUI 节点树入口,用于查找节点、创建控件与画布层、打开 EUI 编辑器,并在普通画布和场景 UI 画布编辑模式之间切换。

Get by:

lua
-- @runtime editor
local service = editor:GetService("EUIService")

函数 ​

FindFirstChild ​

按名称查找 EUI 节点,返回第一个名称匹配的 EUINode;未找到时返回 nil。

参数

参数类型说明
nameString要查找的节点名称

返回值

类型说明
EUINode找到的节点;未找到时返回 nil

调用 FindFirstChild

lua
-- @runtime editor
local euiService = editor:GetService("EUIService")
local name = "default"  -- String
local result = euiService:FindFirstChild(name)  -- 返回 EUINode
if result ~= nil then
    print("调用成功,结果: " .. tostring(result))
end

GetDescendants ​

获取全部 EUI 节点,返回由 EUINode 组成的数组。

返回值

类型说明
Array全部 EUI 节点数组

调用 GetDescendants

lua
-- @runtime editor
local euiService = editor:GetService("EUIService")
local result = euiService:GetDescendants()  -- 返回 Array
if result ~= nil then
    for index, item in ipairs(result) do
        print(index, item)
    end
end

CreateEUINode ​

按照传入的控件类型字符串创建 EUI 节点,并挂载到指定父节点下,可同时指定节点的位置、尺寸与名称;返回创建出的 EUINode,创建失败时返回 nil。

注意: Editor Lua 的 Vector2.New 接收 {x, y} 字段表。parent 传 nil 时节点挂到当前画布根节点。

参数

参数类型说明
unitTypeString控件类型(如 EUIButton、EUITextLabel)
parentEUINode父节点;nil 时挂到当前画布根节点
posVector2节点位置(可选)
sizeVector2节点尺寸(可选)
nameString节点名称(可选)

返回值

类型说明
EUINode创建的节点;失败时返回 nil

创建按钮节点

lua
-- @runtime editor
local euiService = editor:GetService("EUIService")
local position = Vector2.New({x = 20, y = 20})
local size = Vector2.New({x = 160, y = 48})
local button = euiService:CreateEUINode("EUIButton", nil, position, size, "DocumentationExampleButton")
if button ~= nil then
    print("已创建 EUI 节点:", button.Name)
    button:Destroy()
end

CreateEUICanvasLayer ​

创建一个画布层节点,并以可选参数 name 为其命名;调用后返回创建出的 EUINode,创建失败时返回 nil。

参数

参数类型说明
nameString画布层名称

返回值

类型说明
EUINode创建的画布层节点;失败时返回 nil

调用 CreateEUICanvasLayer

lua
-- @runtime editor
local euiService = editor:GetService("EUIService")
local name = "default"  -- String
local result = euiService:CreateEUICanvasLayer(name)  -- 返回 EUINode
if result ~= nil then
    print("调用成功,结果: " .. tostring(result))
end

CreateEUISceneCanvasLayer ​

创建一个场景界面画布节点,该方法不需要传入参数,返回创建出的 EUINode,创建失败时返回 nil。

返回值

类型说明
EUINode创建的场景画布节点;失败时返回 nil

调用 CreateEUISceneCanvasLayer

lua
-- @runtime editor
local euiService = editor:GetService("EUIService")
local result = euiService:CreateEUISceneCanvasLayer()  -- 返回 EUINode
if result ~= nil then
    print("调用成功,结果: " .. tostring(result))
end

OpenEUIEditor ​

打开 EUI 编辑器。若编辑器已处于打开状态,同样返回 true。

返回值

类型说明
Bool是否成功打开(已处于打开状态时也返回 true)

调用 OpenEUIEditor

lua
-- @runtime editor
local euiService = editor:GetService("EUIService")
local result = euiService:OpenEUIEditor()  -- 返回 Bool
if result then
    print("调用结果为 true")
else
    print("调用结果为 false")
end

IsInEUIEditMode ​

查询当前是否处于 UI 编辑模式。

返回值

类型说明
Bool是否处于 UI 编辑模式

调用 IsInEUIEditMode

lua
-- @runtime editor
local euiService = editor:GetService("EUIService")
local result = euiService:IsInEUIEditMode()  -- 返回 Bool
if result then
    print("调用结果为 true")
else
    print("调用结果为 false")
end

SwitchToSceneUICanvasEditMode ​

将指定的画布层切换为场景界面画布编辑模式,返回一个 Bool 表示是否切换成功。

参数

参数类型说明
layerEUINode要切入编辑的场景画布节点

返回值

类型说明
Bool是否切换成功

切换到场景画布并恢复普通编辑模式

lua
-- @runtime editor
local euiService = editor:GetService("EUIService")
local layer = euiService:CreateEUISceneCanvasLayer()
if layer ~= nil then
    local switched = euiService:SwitchToSceneUICanvasEditMode(layer)
    print("切换结果:", switched)
    euiService:SwitchToNormalCanvasEditMode()
    layer:Destroy()
end

SwitchToNormalCanvasEditMode ​

切换回普通画布编辑模式。

返回值

类型说明
Bool是否切换成功

调用 SwitchToNormalCanvasEditMode

lua
-- @runtime editor
local euiService = editor:GetService("EUIService")
local result = euiService:SwitchToNormalCanvasEditMode()  -- 返回 Bool
if result then
    print("调用结果为 true")
else
    print("调用结果为 false")
end

IsInSceneUICanvasEditMode ​

查询当前是否处于场景界面画布编辑模式。

返回值

类型说明
Bool是否处于场景画布编辑模式

调用 IsInSceneUICanvasEditMode

lua
-- @runtime editor
local euiService = editor:GetService("EUIService")
local result = euiService:IsInSceneUICanvasEditMode()  -- 返回 Bool
if result then
    print("调用结果为 true")
else
    print("调用结果为 false")
end