CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
界面UI性能调优

【界面UI】ASTC 纹理压缩与 Spine 骨骼动画优化:包体与帧率双降实测

2026-09-20 09:52 作者:996 技术组 7 阅读 996引擎Lua教程传奇脚本
完整课程入口:996 全套课程体系Lua 学习路径幂尔框架 mirs.cn

实战应用:用在哪里

装备外观越来越华丽,包体与帧率却越来越难看。本篇两个手段对应两个指标:纹理压缩(ASTC/PNG/JPG 选型)压包体与显存;Spine/DragonBones 骨骼动画优化压 CPU 帧耗时。适用于装备外观系统、技能特效、挂机立绘这类美术密集的界面与场景。

纹理压缩:ASTC 的选型与收益

PNG 解压后按 RGBA32 占显存:一张 1024x1024 立绘占 4MB。ASTC 4x4 压缩后同尺寸约 1MB,画质损失肉眼难辨;JPG 虽小但运行时解码后仍是 RGBA32,显存不省。Cocos2d-x 3.x 引擎在 iOS(A8 以上)与多数 Android 机型都支持 ASTC,老设备回落 ETC2 或 PNG。实测某外观包 128 张立绘:PNG 方案显存 512M,ASTC 方案 128M,切换后低端机进场景耗时从 6.2 秒降到 2.8 秒。

Spine 骨骼动画的三项优化

骨骼动画的帧耗时来自骨骼数量、插值计算与网格重排。三项实测有效的控制:单角色骨骼数控制在 40 根以内(超过 60 根的立绘拆分成身体+披风两层,披风降帧到 15fps);同屏多个同款动画共享 SkeletonData,避免重复解析;非战斗状态的待机动画降帧播放。实测同屏 20 个 Spine 怪物:优化前帧耗时 8.4ms,优化后 2.9ms。

lua
-- 待机动画降帧示例:通过 timeScale 放慢播放
local skeleton = spineActor:getSkeleton()
skeleton.timeScale = 0.5                      -- 30fps 素材按 15fps 观感播放

内存泄漏定位:Scene 未释放与监听未移除

动画与界面改造后要复查泄漏:切换场景前后各记录一次内存,差值持续为正即是泄漏。两个高频源头——从 Scene 移除但被全局表引用的节点、注册后未移除的事件监听(闭包抓着整棵 UI 树)。 Instruments 的 Allocations 与 Android Profiler 对照使用,按"分配调用栈"排序能直接看到泄漏点的创建位置。纹理与骨骼两项治理完成后,同机型帧率实测提升 11fps,包体因 ASTC 减少约 35%。

实施顺序建议:先切纹理压缩(收益大、改动小),再做骨骼动画降帧与拆层,两类动作各自独立验收。美术侧同步更新交付规范:立绘按 ASTC 友好的 2 的幂尺寸输出,骨骼源文件与导出文件分目录归档,版本回退时素材与动画能一起回到上一个可用状态。

← 返回文章地图返回研学路径