Skip to content

EUIService

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

Overview

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

Get by:

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

Public

FindFirstChild

在当前 EUI 节点树中按指定名称查找节点。

参数

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

返回值

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

调用 FindFirstChild

lua
-- @runtime client
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 节点树中的所有节点。

返回值

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

调用 GetDescendants

lua
-- @runtime client
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 控件节点。

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

参数

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

返回值

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

创建按钮节点

lua
-- @runtime client
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)
end

CreateEUICanvasLayer

创建一个新的画布层节点,画布层是用于承载和组织 EUI 控件的节点。可通过可选参数 name 指定画布层名称。

参数

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

返回值

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

创建并校验 EUI 画布层节点

lua
-- @runtime client
local editor = rawget(_G, "editor") -- 读取编辑器 Lua 全局入口
if not editor then
    error("该示例需要在编辑器 Lua 环境中运行")
end
local euiService = editor:GetService("EUIService") -- 获取世界编辑器专属 EUI 服务
local canvasLayer = euiService:CreateEUICanvasLayer("demoCreateEUICanvasLayer") -- 调用目标函数创建画布层节点
if canvasLayer ~= nil then
    print("画布层节点创建成功:", tostring(canvasLayer))
else
    print("画布层节点创建失败,请确认 EUI 编辑器已打开")
end

CreateEUISceneCanvasLayer

创建一个场景界面画布节点,用于承载场景相关的 EUI 控件。

返回值

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

调用 CreateEUISceneCanvasLayer

lua
-- @runtime client
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 client
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 client
local euiService = editor:GetService("EUIService")
local result = euiService:IsInEUIEditMode()  -- 返回 Bool
if result then
    print("调用结果为 true")
else
    print("调用结果为 false")
end

SwitchToSceneUICanvasEditMode

切换到指定的场景界面画布编辑模式,需要传入目标场景画布节点。

参数

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

返回值

类型说明
Bool是否切换成功

调用 SwitchToSceneUICanvasEditMode

lua
-- @runtime client
local euiService = editor:GetService("EUIService")
-- layer 由场景中已存在的 EUINode 实例提供
local result = euiService:SwitchToSceneUICanvasEditMode(layer)  -- 返回 Bool
if result then
    print("调用结果为 true")
else
    print("调用结果为 false")
end

SwitchToNormalCanvasEditMode

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

返回值

类型说明
Bool是否切换成功

调用 SwitchToNormalCanvasEditMode

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

IsInSceneUICanvasEditMode

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

返回值

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

调用 IsInSceneUICanvasEditMode

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