-- 隐藏所有小球
for i = 1, 5 do
local widget = ui["Effect_"..i]
if GUI:Win_IsNotNull(widget) then
GUI:setVisible(widget, false)
end
end
-- 显示小球 + 只播放最新一个动画
for i = 1, effectPos do
local widget = ui["Effect_" .. i]
if not GUI:Wi
这段代码整体思路不错,但有几个地方需要根据浮生梦老师前端课程内容进行调整:
```lua
-- 隐藏所有小球
for i = 1, 5 do
local widget = ui["Effect_"..i]
if GUI:Win_IsNotNull(widget) then
GUI:setVisible(widget, false)
end
end
-- 显示小球 + 只播放最新一个动画
for i = 1, effectPos do
local widget = ui["Effect_" .. i]
if not GUI:Win_IsNull(widget) then
GUI:setVisible(widget, true)
if i == effectPos and effectPos ~= zhuansheng.lastEffectPos then
-- 获取小球位置
local pos = GUI:getPosition(widget)
local x = pos.x
local y = pos.y
-- 父节点用场景最上层 root 或者父容器
local parent = ui.root or zhuansheng.parent._ui.root or GUI:getParent(widget)
-- 创建特效:同位置,层级高一点
local effectWidget = GUI:Effect_Create(
parent,
"eff_86325",
x, -- X和小球完全一样
y, -- Y和小球完全一样
0, -- 特效类型:0代表特效
86325, -- 特效ID
nil, -- 性别(可选)
nil, -- 动作(可选)
nil, -- 方向(可选)
nil -- 播放速度(可选)
)
-- 小球弹动
GUI:runAction(widget, GUI:ActionSequence(
GUI:ActionScaleTo(0.2, 1.2),
GUI:ActionScaleTo(0.2, 1.0)
))
-- 播完删除
GUI:Effect_addOnCompleteEvent(effectWidget, function()
if not GUI:Win_IsNull(effectWidget) then
GUI:removeFromParent(effectWidget)
end
end)
end
end
end
```
主要调整:
1. `GUI:getPosition(widget)` 返回的是table,需要先获取再使用
2. `GUI:Effect_Create` 的参数修正:第5个参数应该是特效类型(0-特效,1-NPC等),不是层级
3. 特效层级问题:如果需要层级更高,建议使用`GUI:setLocalZOrder(effectWidget, 10)`在创建后设置
注意:特效类型0表示普通特效,86325是特效ID,其他参数保持nil使用默认值即可。