local shijieditu={}
local ui, root = GUI:npcUI("shijieditu")
local config = {
[1] = { -- 一大陆:zc - 主城地区
name = "一大陆(主城地区)",
maps = {
"zc",
"隐秘之地",
"影之道",
"零度空间",
"真假大厅",
"夺宝奇兵",
"空投
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-04-03 11:23:11 |
👁️ 阅读: 0
要让你的UI界面显示在屏幕正中间,同时将root挂节点从主界面右上改为左下挂接点,需要修改以下几处代码:
```lua
-- 修改挂接点从右上改为左下
local ui, root = GUI:npcUI("shijieditu")
-- 改为使用左下挂接点
local root = GUI:Attach_LeftBottom_T()
-- 创建UI界面到新的根节点
local ui = GUI:Win_Create(root, "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
local centerX = screenWidth / 2
local centerY = screenHeight / 2
-- 设置UI界面位置为屏幕中心
GUI:setPosition(ui, centerX, centerY)
GUI:setAnchorPoint(ui, 0.5, 0.5) -- 设置锚点为中心,这样坐标就是中心点
-- 设置UI界面尺寸(根据你的设计需要调整)
local uiWidth = 800 -- 你的UI宽度
local uiHeight = 600 -- 你的UI高度
GUI:setContentSize(ui, {width = uiWidth, height = uiHeight})
-- 修改背景层的位置计算
local bgLayer = GUI:Layout_Create(ui, "transparent_bg", 0, 0, 0, 0, false)
GUI:setLocalZOrder(bgLayer, -1)
GUI:setContentSize(bgLayer, {width = screenWidth, height = screenHeight})
GUI:setPosition(bgLayer, 0, 0) -- 相对于父节点ui的位置
GUI:setAnchorPoint(bgLayer, 0, 0) -- 锚点设为左上角
-- 修改淡入动画部分
if GUI:Win_IsNotNull(ui) then
GUI:runAction(ui, GUI:ActionSequence(
GUI:CallFunc(function()
-- 自定义淡入函数(需要你实现)
local function timeline_fadeIn(widget, time, callback)
GUI:setOpacity(widget, 0)
GUI:runAction(widget, GUI:ActionSequence(
GUI:ActionFadeTo(time, 255),
GUI:CallFunc(function()
if callback then callback() end
end)
))
end
timeline_fadeIn(ui, 0.3, function()
SL:print("主窗口淡入完成")
end)
end)
))
end
```
主要修改点:
1. **挂接点变更**:从右上挂接点改为左下挂接点 `GUI:Attach_LeftBottom_T()`
2. **居中显示**:计算屏幕中心坐标,设置UI位置为中心点
3. **锚点设置**:将UI的锚点设为(0.5, 0.5),这样坐标就是中心点
4. **背景层调整**:背景层相对于UI父节点定位,而不是屏幕坐标
5. **淡入函数**:由于知识库中没有`lib:timeline_fadeIn`函数,我创建了一个自定义的淡入函数
注意:你需要根据你的UI实际尺寸调整`uiWidth`和`uiHeight`的值。另外,`lib:timeline_fadeIn`函数在知识库中不存在,我创建了一个简单的自定义版本,你可以根据实际需求调整。
← 返回问答库