跳到主要内容

资源管理:包体、分包、加载、缓存和释放

依据:Cocos Creator 3.8 Asset Bundle 与资源释放文档。具体微信包体及缓存限额应查当前平台规则;本文不预设历史数值。微信真机未验证。

一张图片不只有一个大小​

下载时的压缩字节、解码后的像素、GPU 纹理和引擎对象是不同成本。一个小文件也可能展开为很大的纹理;把 PNG 再压缩只影响部分交付成本,不会按同样比例降低解码后的像素内存。

资源依次经过下载、解码、纹理上传与场景引用,成本驻留在不同层

作为计算示例,一张 1024×1024 的 RGBA8 图像,仅基础像素数据就是 1024×1024×4 字节,即 4 MiB。这个估算不包含 mipmap、对齐、解码副本、引擎对象和平台实现差异,也不是某台手机的实测值。纹理压缩可能改变 GPU 存储方式,需要同时确认格式支持与画质。

分包解决交付顺序,不自动解决内存​

将关卡地图、角色展示和活动资源分成 Bundle,可以让首屏只加载需要的内容。共享资源应放在合理的公共依赖中;同一张大图被多个包重复交付会增加下载。分包后的资源一旦被加载并持有,仍可能驻留内存。

场景、预制体与共享图集的引用关系,释放一个面板不等于释放共享资源

资源释放依赖引用关系。一个弹窗被隐藏,不代表其图集已经释放;销毁节点,也不意味着所有共享资源都应该被强制释放。Cocos 的引用管理支持按生命周期持有与释放。异步加载完成时还应检查请求所属页面是否已经关闭,防止迟到的结果重新挂回过时界面。

设计一次可观察的打开流程​

打开背包先显示骨架界面,再请求图标资源;加载失败提供重试或占位。关闭后取消无用的后续更新,释放本页面拥有的引用,保留明确需要复用的公共资源。下次打开能否命中缓存应有记录,而不能从“感觉更快”推断缓存策略正确。

常见失败:反复打开后内存一直涨​

按同样操作循环打开关闭,并在固定时机观察对象、纹理和引用。区分短期缓存平台、垃圾回收波动和持续泄漏。排查未移除事件监听、未停动画、未清理计时器、缓存列表无限增长以及异步回调持有页面。不要每关结束就无差别释放所有资源,那可能造成下一关重新下载或纹理闪烁。

最先做的优化​

先缩小首屏必需资源集合,避免全量预加载;再按真实显示尺寸整理素材,最后处理格式和压缩。UI 设计阶段就能决定背包图标是否共享尺寸、活动页面是否复用公共皮肤,这些往往比后期改一个加载 API 更有影响。继续阅读 性能边界 与 背包案例。

官方来源与适用范围​

资料核查日期:2026-10-30。文中的案例参数与图解用于教学;目标项目应按所用版本及平台重新验证。