作业五:简易警示系统 综合应用:当精英怪物(等级大于50)进入视野时,在屏幕中央显示红色警告文字,3秒后自动消失。要求使用GUI库创建文字UI。
怎么获取 屏幕中央的 挂节点
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-24 21:54:08 |
👁️ 阅读: 6
要获取屏幕中央的挂接点,你可以使用以下方法:
**方法一:使用已有的挂接点作为父节点,然后通过计算设置居中位置**
```lua
-- 获取任意一个免费的顶层挂接点(比如左上角)
local parent = GUI:Attach_LeftTop_T()
-- 创建文字节点
local warningText = GUI:Text_Create(parent, "warning_text", 0, 0, 24, "#ff0000", "警告:精英怪物出现!")
-- 获取父节点尺寸
local screenSize = GUI:getContentSize(parent)
-- 计算屏幕中心坐标
local centerX = screenSize.width / 2
local centerY = screenSize.height / 2
-- 设置锚点到中心(这样文字会以中心点为基准)
GUI:setAnchorPoint(warningText, 0.5, 0.5)
-- 设置位置到屏幕中心
GUI:setPosition(warningText, centerX, centerY)
```
**方法二:使用已有的挂接点并设置相对位置**
```lua
-- 获取顶层挂接点
local parent = GUI:Attach_LeftTop_T()
-- 创建文字节点
local warningText = GUI:Text_Create(parent, "warning_text", 0, 0, 24, "#ff0000", "精英怪物警告!")
-- 设置锚点到中心
GUI:setAnchorPoint(warningText, 0.5, 0.5)
-- 设置位置为父节点中心(如果父节点覆盖全屏)
local parentSize = GUI:getContentSize(parent)
GUI:setPosition(warningText, parentSize.width / 2, parentSize.height / 2)
```
**完整作业示例:**
```lua
-- 创建警告文字的函数
function createWarningText(message)
-- 获取顶层挂接点
local parent = GUI:Attach_LeftTop_T()
-- 创建红色警告文字
local warningText = GUI:Text_Create(parent, "elite_monster_warning", 0, 0, 28, "#ff0000", message)
-- 设置字体样式(可选)
GUI:Text_setFontName(warningText, "fonts/font5.ttf")
-- 设置锚点到中心
GUI:setAnchorPoint(warningText, 0.5, 0.5)
-- 获取屏幕尺寸并居中
local screenSize = GUI:getContentSize(parent)
GUI:setPosition(warningText, screenSize.width / 2, screenSize.height / 2)
-- 设置初始不透明度为0(用于淡入效果)
GUI:setOpacity(warningText, 0)
-- 淡入效果
GUI:runAction(warningText,
GUI:ActionSequence(
GUI:ActionFadeTo(0.3, 255), -- 0.3秒淡入
GUI:DelayTime(3), -- 显示3秒
GUI:ActionFadeTo(0.3, 0), -- 0.3秒淡出
GUI:CallFunc(function()
-- 3秒后移除节点
GUI:removeFromParent(warningText)
end)
)
)
return warningText
end
-- 使用示例:当检测到精英怪物时
function onEliteMonsterAppear()
-- 假设从服务端获取怪物等级
local monsterLevel = SL:GetMetaValue("MONSTER_LEVEL", monsterID) or 0
if monsterLevel > 50 then
createWarningText("⚠️ 警告:等级" .. monsterLevel .. "精英怪物出现!")
end
end
```
**关键点说明:**
1. `GUI:Attach_LeftTop_T()` 获取的是顶层左上角挂接点,它覆盖整个屏幕
2. `GUI:getContentSize()` 获取父节点的尺寸,用于计算中心位置
3. `GUI:setAnchorPoint(warningText, 0.5, 0.5)` 设置锚点到中心,这样文字会以自身中心点对齐
4. 通过计算 `screenSize.width / 2` 和 `screenSize.height / 2` 得到屏幕中心坐标
这样就能在屏幕中央显示警告文字了!
← 返回问答库