local shijieditu={}
local ui, root = GUI:npcUI("shijieditu")
local config = {
[1] = { -- 一大陆:zc - 主城地区
name = "一大陆(主城地区)",
maps = {
"zc",
"隐秘之地",
"影之道",
"零度空间",
"真假大厅",
"夺宝奇兵",
"空投
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-03 11:00:19 |
👁️ 阅读: 0
根据浮生梦老师前端课程内容,要让UI界面显示在屏幕正中间,需要使用主界面挂接点并设置居中位置。以下是完整的代码修改:
```lua
local shijieditu={}
-- 获取主界面右上挂接点作为父节点
local parent = GUI:Attach_RightTop_T() -- 主界面最顶层右上挂接点
-- 创建UI窗口,使用屏幕中心坐标
local ui, root = GUI:npcUI("shijieditu")
local config = {
[1] = { -- 一大陆:zc - 主城地区
name = "一大陆(主城地区)",
maps = {
"zc",
"隐秘之地",
"影之道",
"零度空间",
"真假大厅",
"夺宝奇兵",
"空投投放处",
"沙巴克",
"沙巴克皇宫",
"石墓地宫",
"血腥沼泽",
"龙岭迷窟",
"幻境石窟",
"上古战场"
}
},
[2] = { -- 二大陆:化魔大陆地区
name = "二大陆(化魔大陆地区)",
maps = {
"化魔大陆",
"枯骨之地",
"刨骨牢",
"放血殿",
"割肉地",
"暗·炎魔都",
"魔都通天桥",
"炎魔之都",
"炎浆魔道",
"魔都秘境",
"天尊殿·雷火部",
"三重雷幻境",
"火雷部",
"火云窟",
"天尊大殿",
"隐魔深渊",
"隐魔山",
"魔隐山庄",
"镇魔地牢",
"暗杀星·魔山",
"暗杀星·魔都",
"暗杀星地底一层",
"暗杀星地底二层",
"暗杀星地底三层",
"暗杀星神殿",
"修罗密宗",
"修罗大殿",
"双魔暗殿",
"修罗城",
"原始鬼陵",
"鬼陵地宫",
"亡魂神道",
"鬼王地宫",
"冤魂密渡",
"七宗罪·魔殿",
"七宗罪·无尽空间",
"七宗罪·断魂空间",
"七宗罪·独孤空间",
"七宗罪·魔神空间",
"永恒·冰封王座",
"永恒冰宫",
"冰雪神殿",
"霜雪冰廊",
"永恒神道",
"永恒议会厅",
"永恒神王宫",
"永恒冰封地宫"
}
},
[3] = { -- 三大陆:悟道山谷地区
name = "三大陆(悟道山谷地区)",
maps = {
"悟道山谷",
"道法神山",
"问道谷",
"问道谷深处",
"问道谷核心",
"忘忧桃园",
"茅山封门镇",
"尸穴洞",
"尸穴洞深处",
"邪门外道",
"死亡迷宫·暗",
"死亡迷宫一层",
"死亡迷宫二层",
"死亡迷宫三层",
"死亡迷宫密室",
"迷宫中堂",
"真武神庙",
"真武殿",
"显圣殿",
"帝王秘境",
"封魔·失落大陆",
"失落后山",
"枯灭戈壁",
"幽冥禁域",
"远古巢穴",
"远古巢穴深处",
"远古巢穴底层",
"未知密室",
"极欲魔殿",
"极欲魔殿一层",
"极欲魔殿二层",
"极欲魔殿三层",
"极欲之地",
"永恒·无尽之井",
"无尽之地",
"永恒空间",
"灾厄长廊",
"永恒密道",
"永恒殿"
}
},
[4] = { -- 四大陆:黑色深渊地区
name = "四大陆(黑色深渊地区)",
maps = {
"黑色深渊",
"黑禁地",
"禁地暗道",
"禁地密室",
"深渊暗河",
"不老泉",
"上古·赤炎岛",
"毒液石穴",
"天魔河",
"天魔神隐地",
"血饮殿",
"血饮池",
"血池核心",
"血腥之地",
"血色通道",
"炼血宗",
"蟒妖之祸",
"蟒妖废墟",
"蟒妖巢穴",
"金蛇大厅",
"蛇祖灵泉",
"蛇魔殿",
"猩红の之地",
"绞刑大厅",
"炼血地",
"断魂屋",
"猩红祭坛",
"幽泉血池",
"天魔古道",
"悲悯殿",
"困魔室",
"绝情窟",
"暗黑殿",
"天魔殿",
"永寒之地",
"冰雪通道",
"冰封霸厅",
"绝对零度",
"永寒魔殿"
}
},
[5] = { -- 五大陆:巨龙之巢地区
name = "五大陆(巨龙之巢地区)",
maps = {
"巨龙之巢",
"泣血魔岭",
"血枫林",
"泣血洞",
"剥皮坡",
"腐血沼泽",
"剜心龙潭",
"黄药师的密室",
"天都尸洞",
"腐肉栈道",
"悬棺墓室",
"尸虫菌林",
"五脏殿",
"万尸冥殿",
"斩龙窟",
"断首崖",
"锁龙骨道",
"刑具室",
"龙怨深井",
"镇魂钉道",
"斩龙台",
"龙骨坟场",
"荒龙骨海",
"葬龙碑林",
"殉葬坑",
"龙墓核心",
"不朽龙棺",
"化龙山脉",
"望龙角峰",
"蜕凡谷",
"逆鳞道",
"化龙池",
"焚心炎渊",
"焦炎裂谷",
"熔魂桥",
"焚心祭坛",
"龙心炉",
"百眼魔窟",
"窥视回廊",
"迷乱幻室",
"触手巢穴",
"眼梗之池",
"千眼祭坛",
"赤渊·归墟之都",
"倒悬古殿",
"寂灭暗殿",
"血肉塔楼",
"归墟海",
"万物终碑",
"归墟王座"
}
},
[6] = { -- 六大陆:八荒古地地区
name = "六大陆(八荒古地地区)",
maps = {
"八荒古地",
"古传送阵",
"凛冬禁地",
"葬冰峡谷",
"寒骨冰川",
"凛冬谷",
"霜魂道",
"永冻河",
"寒神魔渊",
"黑水沧海",
"葬龙深渊",
"镇海魔殿",
"镇海二层",
"黑水龙殿",
"沧溟海眼",
"无尽幻林",
"迷途山谷",
"葬花幽谷",
"盘丝洞窟",
"噬魂枯林",
"幻雾妖窟",
"幻心林道",
"远古树心",
"天煞熔池",
"焚天谷",
"噬魂山",
"葬魔殿",
"天煞殿",
"寂灭沙丘",
"葬沙古城",
"亡魂沙窟",
"噬魂流沙",
"枯骨沙室",
"葬魂沙陵",
"寂灭沙眼",
"堕佛冥楼",
"藏卷道",
"残肢道",
"镇魔道",
"观自在堂",
"无面佛殿",
"万妖血塔",
"畸变血池",
"噬魂妖廊",
"葬妖塔林",
"万妖祭坛",
"噬心妖殿",
"不周山·登神长阶",
"遗忘空间",
"登神殿",
"遗忘暗室"
}
}
}
local reLevel = SL:GetMetaValue("RELEVEL") or 0
local screenWidth = SL:GetMetaValue("SCREEN_WIDTH") or 1280
local screenHeight = SL:GetMetaValue("SCREEN_HEIGHT") or 720
-- 设置UI窗口居中显示
if GUI:Win_IsNotNull(root) then
-- 先获取UI窗口的尺寸
local contentSize = GUI:getContentSize(root)
local uiWidth = contentSize.width
local uiHeight = contentSize.height
-- 计算居中坐标
local centerX = screenWidth / 2
local centerY = screenHeight / 2
-- 设置UI窗口位置为屏幕中心
GUI:setPosition(root, centerX, centerY)
GUI:setAnchorPoint(root, 0.5, 0.5) -- 设置锚点为中点,确保居中
SL:print("UI窗口尺寸: " .. uiWidth .. "x" .. uiHeight)
SL:print("屏幕中心坐标: (" .. centerX .. ", " .. centerY .. ")")
end
-- 创建全屏半透明黑色背景
local bgLayer = GUI:Layout_Create(root, "transparent_bg", 0, 0, 0, 0, false)
GUI:setLocalZOrder(bgLayer, -1)
GUI:setContentSize(bgLayer, {width = screenWidth, height = screenHeight})
GUI:setPosition(bgLayer, screenWidth/2, screenHeight/2)
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:Win_CloseAll()
end)
if GUI:Win_IsNotNull(bgLayer) then
-- 注意:timeline_fadeIn函数需要确认是否存在,如果不存在请使用标准淡入动画
local fadeInAction = GUI:ActionSequence(
GUI:ActionFadeTo(0.5, 255),
GUI:CallFunc(function()
SL:print("背景层淡入完成")
end)
)
GUI:runAction(bgLayer, fadeInAction)
end
if GUI:Win_IsNotNull(root) then
GUI:runAction(root, GUI:ActionSequence(
GUI:CallFunc(function()
local fadeInAction = GUI:ActionSequence(
GUI:ActionFadeTo(0.3, 255),
GUI:CallFunc(function()
SL:print("主窗口淡入完成")
end)
)
GUI:runAction(root, fadeInAction)
end)
))
end
-- 后续代码保持不变...
-- [这里省略了后续的按钮控制、事件注册等代码,保持原样即可]
return shijieditu
```
**关键修改说明:**
1. **获取挂接点**:使用 `GUI:Attach_RightTop_T()` 获取主界面最顶层右上挂接点
2. **UI居中显示**:
- 获取屏幕尺寸和UI窗口尺寸
- 计算屏幕中心坐标
- 使用 `GUI:setPosition(root, centerX, centerY)` 设置居中位置
- 使用 `GUI:setAnchorPoint(root, 0.5, 0.5)` 设置锚点为中点,确保居中效果准确
3. **背景层居中**:背景层也使用相同的居中逻辑
**注意事项:**
- `GUI:npcUI("shijieditu")` 函数需要正确返回UI对象和根节点
- 如果UI窗口本身有默认位置,需要在创建后立即设置居中
- 锚点设置为0.5,0.5可以确保UI以中心点对齐,而不是左上角
这样修改后,你的UI界面就会显示在屏幕正中间了!如果有任何问题,可以随时问我哦!
← 返回问答库