local shijieditu={}
local ui, root = GUI:npcUI("shijieditu")
local config = {
[1] = { -- 一大陆:zc - 主城地区
name = "一大陆(主城地区)",
maps = {
"zc",
"隐秘之地",
"影之道",
"零度空间",
"真假大厅",
"夺宝奇兵",
"空投
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-03 10:54:08 |
👁️ 阅读: 1
要让UI界面显示在屏幕正中间,你需要将父节点设置为屏幕中心,而不是右上角挂接点。以下是修改后的代码:
```lua
-- 修改前:使用右上挂接点
-- local ui, root = GUI:npcUI("shijieditu")
-- 修改后:创建居中父节点
local parent = GUI:Win_Create("shijieditu", 0, 0, 0, 0, false, false, true, false, false, false, 1)
local screenWidth = SL:GetMetaValue("SCREEN_WIDTH") or 1280
local screenHeight = SL:GetMetaValue("SCREEN_HEIGHT") or 720
-- 设置父节点居中
GUI:setPosition(parent, screenWidth/2, screenHeight/2)
GUI:setAnchorPoint(parent, 0.5, 0.5)
-- 创建UI界面
local ui, root = GUI:npcUI("shijieditu")
-- 将UI界面添加到居中父节点
GUI:addChild(parent, root)
-- 设置UI界面居中
GUI:setPosition(root, 0, 0)
GUI:setAnchorPoint(root, 0.5, 0.5)
-- 修改背景层创建,使用新的父节点
local bgLayer = GUI:Layout_Create(parent, "transparent_bg", 0, 0, 0, 0, false)
GUI:setLocalZOrder(bgLayer, -1)
GUI:setContentSize(bgLayer, {width = screenWidth, height = screenHeight})
GUI:setPosition(bgLayer, 0, 0)
GUI:setAnchorPoint(bgLayer, 0.5, 0.5)
GUI:Layout_setBackGroundColorType(bgLayer, 1)
GUI:Layout_setBackGroundColor(bgLayer, "#000000")
GUI:Layout_setBackGroundColorOpacity(bgLayer, 150)
GUI:setOpacity(bgLayer, 0)
GUI:setTouchEnabled(bgLayer, true)
-- 修改关闭事件,关闭整个父节点
GUI:addOnClickEvent(bgLayer, function()
GUI:removeFromParent(parent)
end)
-- 修改关闭按钮事件
if GUI:Win_IsNotNull(ui.guanbi) then
GUI:addOnClickEvent(ui.guanbi, function()
GUI:delayTouchEnabled(ui.guanbi, 0.2)
local fadeOutAction = GUI:ActionSequence(
GUI:ActionFadeTo(0.3, 0),
GUI:CallFunc(function()
SL:print("淡出完成,关闭窗口")
GUI:removeFromParent(parent)
end)
)
if GUI:Win_IsNotNull(bgLayer) then
GUI:runAction(bgLayer, fadeOutAction)
end
if GUI:Win_IsNotNull(root) then
GUI:runAction(root, fadeOutAction)
end
end)
end
-- 其他代码保持不变...
```
**关键修改点:**
1. **创建居中父节点**:使用 `GUI:Win_Create` 创建新的父节点
2. **设置居中位置**:将父节点设置在屏幕中心 `(screenWidth/2, screenHeight/2)`
3. **设置锚点**:将锚点设置为 `(0.5, 0.5)` 确保以中心点为基准
4. **调整UI结构**:将原来的UI界面添加到新的居中父节点下
5. **修改关闭逻辑**:使用 `GUI:removeFromParent(parent)` 来关闭整个界面
这样修改后,你的UI界面就会显示在屏幕正中间了。如果还有任何问题,随时问我!
← 返回问答库