主题
EUIService
EUIService 世界编辑器 EUI 服务,负责在编辑器中创建、查找、删除 EUI 节点。
Overview
EUIService 是世界编辑器中的 EUI 节点树入口,用于查找节点、创建控件与画布层、打开 EUI 编辑器,并在普通画布和场景 UI 画布编辑模式之间切换。
Get by:
lua
-- @runtime client
local service = editor:GetService("EUIService")Public
FindFirstChild
在当前 EUI 节点树中按指定名称查找节点。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
name | String | 要查找的节点名称 |
返回值
| 类型 | 说明 |
|---|---|
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))
endGetDescendants
获取当前 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
endCreateEUINode
根据指定的控件类型名称,在传入的父节点下创建一个 EUI 控件节点。
注意: Editor Lua 的 Vector2.New 接收 {x, y} 字段表。parent 传 nil 时节点挂到当前画布根节点。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
unitType | String | 控件类型(如 EUIButton、EUITextLabel) |
parent | EUINode | 父节点;nil 时挂到当前画布根节点 |
pos | Vector2 | 节点位置(可选) |
size | Vector2 | 节点尺寸(可选) |
name | String | 节点名称(可选) |
返回值
| 类型 | 说明 |
|---|---|
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)
endCreateEUICanvasLayer
创建一个新的画布层节点,画布层是用于承载和组织 EUI 控件的节点。可通过可选参数 name 指定画布层名称。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
name | String | 画布层名称 |
返回值
| 类型 | 说明 |
|---|---|
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 编辑器已打开")
endCreateEUISceneCanvasLayer
创建一个场景界面画布节点,用于承载场景相关的 EUI 控件。
返回值
| 类型 | 说明 |
|---|---|
EUINode | 创建的场景画布节点;失败时返回 nil |
调用 CreateEUISceneCanvasLayer
lua
-- @runtime client
local euiService = editor:GetService("EUIService")
local result = euiService:CreateEUISceneCanvasLayer() -- 返回 EUINode
if result ~= nil then
print("调用成功,结果: " .. tostring(result))
endOpenEUIEditor
打开 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")
endIsInEUIEditMode
查询当前是否处于 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")
endSwitchToSceneUICanvasEditMode
切换到指定的场景界面画布编辑模式,需要传入目标场景画布节点。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
layer | EUINode | 要切入编辑的场景画布节点 |
返回值
| 类型 | 说明 |
|---|---|
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")
endSwitchToNormalCanvasEditMode
切换回普通画布编辑模式。
返回值
| 类型 | 说明 |
|---|---|
Bool | 是否切换成功 |
调用 SwitchToNormalCanvasEditMode
lua
-- @runtime client
local euiService = editor:GetService("EUIService")
local result = euiService:SwitchToNormalCanvasEditMode() -- 返回 Bool
if result then
print("调用结果为 true")
else
print("调用结果为 false")
endIsInSceneUICanvasEditMode
查询当前是否处于场景界面画布编辑模式。
返回值
| 类型 | 说明 |
|---|---|
Bool | 是否处于场景画布编辑模式 |
调用 IsInSceneUICanvasEditMode
lua
-- @runtime client
local euiService = editor:GetService("EUIService")
local result = euiService:IsInSceneUICanvasEditMode() -- 返回 Bool
if result then
print("调用结果为 true")
else
print("调用结果为 false")
end