界面的炫彩体验有一半来自特效: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 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
设计初衷 新手的第一个 30 级决定留存:被红名追杀一次、被高级玩家抢一次 BOSS,新号当周流失率直接翻倍。新手走廊是 1…
设计初衷 拍卖行的恶意挂拍有两种:挂天价试探市场、批量挂垃圾物刷屏——挂拍零成本,恶意就没有代价。保证金机制让挂拍押上真金白…
设计初衷 家园系统回答的是长线玩家"下线之后游戏还在为我工作"的情感需求:种下去的种子在离线时生长,上线收割即是回馈。产出设…
底层原理 缓存防的是重复查询,但有一类查询永远查不到:恶意玩家批量请求不存在的物品名,每次都绕过缓存直击底层查询——缓存对"…
底层原理 金币、功勋这类关键数值,单账本一旦被静默改坏(bug 写错、内存篡改),没有任何报警——账本自己不会喊冤。双写校验…
底层原理 内存涨了不回落,十有八九是有张该死的表被谁攥着不放。Lua 的回收按可达性判定:只要还存在一条从全局表、活跃闭包或…