function MiniMap.UpdateMonsters()
GUI:removeAllChildren(MiniMap._nodeMonster)
local monsters = SL:GetMetaValue("MAP_GET_MONSTERS")
for i, v in pairs(monsters) do
local mapX = tonumber(v.x) or 1
local mapY = tonumber(v.y)
在 `for i, v in pairs(monsters) do` 循环内部,添加一个条件判断,跳过特定名称的怪物。修改后的代码如下:
```lua
function MiniMap.UpdateMonsters()
GUI:removeAllChildren(MiniMap._nodeMonster)
local monsters = SL:GetMetaValue("MAP_GET_MONSTERS")
for i, v in pairs(monsters) do
-- 新增判断:如果怪物名称是'昆仑引路兽',则跳过本次循环,不显示
if v.name == '昆仑引路兽' then
goto continue
end
local mapX = tonumber(v.x) or 1
local mapY = tonumber(v.y) or 1
local nodePos = MiniMap.CalcMiniMapPos({x = mapX, y = mapY})
if nodePos then
local node = GUI:Node_Create(MiniMap._nodeMonster, "node_monster"..i, nodePos.x, nodePos.y)
-- 显示
local path = (v.time and v.time > 0) and "icon_xdtzy_10_6.png" or "icon_xdtzy_10_1.png"
local icon = GUI:Image_Create(node, "icon", 0, 0, "res/private/minimap/"..path)
GUI:setAnchorPoint(icon, 0.5, 0.5)
GUI:setScale(icon, 0.7)
local nameBG = GUI:Image_Create(node,"nameBG", 0, 20, "res/private/minimap/icon_xdtzy_06.png")
GUI:setIgnoreContentAdaptWithSize(nameBG, false)
GUI:setAnchorPoint(nameBG, 0.5, 0.5)
local textName = GUI:Text_Create(node, "textName", 0, 20, 14, "#ffffff", "")
local monsterColor = v.color or "#ffffff"
if v.color and tonumber(v.color) then
monsterColor = SL:GetHexColorByStyleId(tonumber(v.color))
end
GUI:Text_setTextColor(textName, monsterColor)
GUI:Text_enableOutline(textName, "#000000", 1)
GUI:Text_setString(textName, v.name)
GUI:setAnchorPoint(textName, 0.5, 0.5)
local textTime = GUI:Text_Create(node, "textTime", 0, 0, 13, "#ffffff", "")
GUI:Text_setTextColor(textTime, "#ffff00")
GUI:Text_enableOutline(textTime, "#000000", 1)
GUI:setAnchorPoint(textTime, 0.5, 0.5)
local endTime = SL:GetMetaValue("SERVER_TIME") + v.time
local function callback()
local remaining = math.max(endTime - SL:GetMetaValue("SERVER_TIME"), 0)
local suffix = (remaining and remaining > 0) and SL:TimeFormatToStr(remaining) or ""
GUI:Text_setString(textTime, suffix)
if suffix and string.len( suffix ) > 0 then
GUI:setPosition(textName ,0, 36)
GUI:setPosition(nameBG ,0, 36)
GUI:setPosition(textTime ,0, 20)
else
GUI:setPosition(textName ,0, 20)
GUI:setPosition(nameBG ,0, 20)
end
end
schedule(textTime, callback, 1)
callback()
local zOrder = MiniMap._miniMapHei - nodePos.y
GUI:setLocalZOrder(node, zOrder)
end
::continue::
end
end
```
**修改说明:**
1. 在循环开始处理怪物数据 `v` 时,立即检查 `v.name` 是否等于 `'昆仑引路兽'`。
2. 如果条件成立,则使用 `goto continue` 语句跳转到循环末尾的标签 `::continue::` 处,从而跳过创建节点、图片、文字等所有显示逻辑。
3. 这样,名为“昆仑引路兽”的怪物就不会在小地图上生成任何可视元素。
注意,`schedule` 函数在浮生梦老师的前端课程内容中通常指代一个定时器功能,请确保它在你的上下文中正确定义和使用。如果对 `goto` 语句的用法不熟悉,也可以使用 `if not (v.name == '昆仑引路兽') then ... end` 将整个显示逻辑包裹起来,效果相同。