主题
EUIService
EUIService 世界编辑器 EUI 服务,负责在编辑器中创建、查找、删除 EUI 节点。
概览
EUIService 是世界编辑器中的 EUI 节点树入口,用于查找节点、创建控件与画布层、打开 EUI 编辑器,并在普通画布和场景 UI 画布编辑模式之间切换。
Get by:
lua
-- @runtime editor
local service = editor:GetService("EUIService")函数
FindFirstChild
按名称查找 EUI 节点,返回第一个名称匹配的 EUINode;未找到时返回 nil。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
name | String | 要查找的节点名称 |
返回值
| 类型 | 说明 |
|---|---|
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))
endGetDescendants
获取全部 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
endCreateEUINode
按照传入的控件类型字符串创建 EUI 节点,并挂载到指定父节点下,可同时指定节点的位置、尺寸与名称;返回创建出的 EUINode,创建失败时返回 nil。
注意: 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 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()
endCreateEUICanvasLayer
创建一个画布层节点,并以可选参数 name 为其命名;调用后返回创建出的 EUINode,创建失败时返回 nil。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
name | String | 画布层名称 |
返回值
| 类型 | 说明 |
|---|---|
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))
endCreateEUISceneCanvasLayer
创建一个场景界面画布节点,该方法不需要传入参数,返回创建出的 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))
endOpenEUIEditor
打开 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")
endIsInEUIEditMode
查询当前是否处于 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")
endSwitchToSceneUICanvasEditMode
将指定的画布层切换为场景界面画布编辑模式,返回一个 Bool 表示是否切换成功。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
layer | EUINode | 要切入编辑的场景画布节点 |
返回值
| 类型 | 说明 |
|---|---|
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()
endSwitchToNormalCanvasEditMode
切换回普通画布编辑模式。
返回值
| 类型 | 说明 |
|---|---|
Bool | 是否切换成功 |
调用 SwitchToNormalCanvasEditMode
lua
-- @runtime editor
local euiService = editor:GetService("EUIService")
local result = euiService:SwitchToNormalCanvasEditMode() -- 返回 Bool
if result then
print("调用结果为 true")
else
print("调用结果为 false")
endIsInSceneUICanvasEditMode
查询当前是否处于场景界面画布编辑模式。
返回值
| 类型 | 说明 |
|---|---|
Bool | 是否处于场景画布编辑模式 |
调用 IsInSceneUICanvasEditMode
lua
-- @runtime editor
local euiService = editor:GetService("EUIService")
local result = euiService:IsInSceneUICanvasEditMode() -- 返回 Bool
if result then
print("调用结果为 true")
else
print("调用结果为 false")
end