界面的炫彩体验有一半来自特效: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 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 沙巴克的荣誉不只有城主:护城使者、功勋元老、攻城先锋,一套头衔体系把攻城战的参与者分成清晰的荣誉层级。头…
实战应用:用在哪里 私聊是骚扰的高发区:广告号群发、情感纠缠、代充推销。私聊的防护是双闸设计:频率的闸(频控)管节奏,关系的…
实战应用:用在哪里 VIP 等级变化时,头顶徽章、属性面板加成、特权列表三处界面要同时刷新。分散刷新的写法容易漏一处,事件驱…
实战应用:用在哪里 行会基金的每一笔进出都要两本账:基金余额的当前值是一本,捐献支出的流水是另一本。余额回答"现在有多少",…
实战应用:用在哪里 pullpay 是服务端主动发起的充值接口:游戏内触发支付流程(拉起收银台、生成订单),配合订单标记实现…
实战应用:用在哪里 某周五晚八点的沙巴克攻城战,开战 10 分钟内在线人数从 1800 掉到 1400——不是玩家流失,是网…