界面的炫彩体验有一半来自特效:GUI:Effect_Create 把引擎特效挂到界面控件上,按钮的流光、面板的开场光效、VIP 图标的粒子环绕都是特效控件在工作。特效与动作系统、骨骼动画(SpineAnim)共同构成前端的表现三件套。
---创建特效 parent:父节点 ID:x/y:坐标 effectType/effectId:特效类型与ID sex/act/dir:角色动作参数
function GUI:Effect_Create(parent, ID, x, y, effectType, effectId, sex, act, dir) end
-- 领奖按钮的流光特效
local fx = GUI:Effect_Create(win, "awardFx", 130, 45, 0, 5101, 0, 0, 0)
GUI:Effect_play(fx)
-- 播完自动移除
GUI:Effect_setAutoRemoveOnFinish(fx, true)
特效按 effectType 与 effectId 引用特效资源库,挂载坐标定在控件体系的坐标系里。Effect_play 启动播放,setAutoRemoveOnFinish 让特效播完自动移除,一次性特效的清理自动化。特效的循环播放(光环类不设自动移除)与一次性播放(奖励类自动移除)是两种生命周期的范式。
-- 特效 + 动作:奖励图标的高光扫过
local icon = GUI:Image_Create(win, "awardIcon", 130, 60, "award.png")
local shine = GUI:Effect_Create(win, "shine", 130, 60, 0, 5202, 0, 0, 0)
GUI:Effect_play(shine)
local fade = GUI:ActionFadeIn(0.6)
icon:runAction(fade)
特效与动作的组合拳:图标淡入的同时高光扫过,动作系统(runAction 配 ActionFadeIn、ActionMoveTo、ActionScaleTo)管几何与透明度的动画,特效管粒子与光效,两层的叠加构成完整的奖励动效。骨骼动画 SpineAnim 是第三件套:角色与高阶动画(技能演示、宠物动作)用 Spine,控件的轻量表现用 Effect,表现的技术选型按复杂度分层。
同屏特效的数量监控,特效是渲染成本的大头,低端机的特效分级(数量与精度)是设置页的标配。
特效的资源加载是异步的,特效控件创建的瞬间可能还在加载,加载完成回调后再 play 的顺序问题踩过一轮。特效的循环播放泄漏(不设自动移除又不手动移除)在长驻界面里累积,特效的存量与界面生命周期的绑定要明确。
特效的 ID 分配表由表现侧统一管理,服务端推送的特效指令引用同一张表。特效的播放时机与业务事件的绑定在封装层做:领奖、升级、击杀的标准特效封装成函数,业务调用封装不直调接口。低端机的特效降级策略:特效数量减半与粒子密度降低的两级降级在设置页可配。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 盗号与诈骗得手的金币需要洗白:一串账号互相倒手,每笔都看似正常交易,合在一起是资金流向的回环。环路检测把…
实战应用:用在哪里 千人同屏的沙城战场里,每一刀、每个技能、每次移动都要广播给视野内的玩家。原始的逐个广播让带宽与 CPU …
实战应用:用在哪里 前后端 Lua 消息通道(sendluamsg 与 RegisterLuaNetMsg)好用,但消息号一…
实战应用:用在哪里 聊天气泡是玩家社交的第一现场:文字、表情、道具链接混排在气泡里,飘在角色头顶。气泡的实现是 RichTe…
实战应用:用在哪里 开服第七天,祖玛教主的首次刷新引爆了三个行会的正面冲突:从晚上八点打到九点半, ninety 分钟里刷新…
实战应用:用在哪里 玩家改名看似只是换一个字符串,实际上名字散落在邮件、行会名册、婚姻关系、聊天记录、排行榜快照等十几个地方…