首页/ 第 16 章 · 性能优化/ 第 266 课
LESSON 266 · 性能优化

资源与加载优化

资源优化完成。下一课学内存管理。

⏱ 约 14 分钟📊 难度:入门🗂 第 16 章 · 性能优化📍 第 266 / 300 课
课程进度
266 / 300

🎯本节学习目标

  • 优化纹理与音频
  • 优化模型
  • 掌握加载方式

🚀课程导读

“包太大”“加载慢”是资源问题。本课学资源“瘦身”。

纹理与音频优化

最占体积的两种。

  1. 【纹理】贴图是体积大户:
  2. 尺寸 2 的幂、尽量 1024 以下(UI/小物 256-512)。
  3. Compression 选 ASTC(安卓)/ASTC+(iOS)等平台格式。
  4. Mipmap:需要远景的 3D 贴图开;UI/特效关(省内存)。
  5. Max Size 限制:按用途裁剪最大尺寸。
  6. 【音频】
  7. 短音效用 Decompress On Load(即时);长 BGM 用 Streaming(流式,省内存)。
  8. 压缩格式(Vorbis/MP3)体积小。
  9. 采样率 44.1k 够用,别用 96k。
  10. 【模型】
  11. Mesh Compression 压缩;顶点/骨骼精简(美术侧)。
  12. 【图集】UI/精灵图集(第 203 课)。
  13. 【检查】Project 里按 Size 排序找大资产。
  14. 【完成】资源“瘦身”。
  15. 【测试】打包体积对比。
  16. 【推荐】发布前统一走一遍资源检查。
  17. 【注意】压缩过度会糊/有声损,按平台平衡。
💡
资源瘦身:纹理压格式、音频选流式、模型压网格。三招降体积。

加载方式优化

别“一把梭”。

  1. 【Resources 文件夹】拖进去的都会打进包:别乱放。
  2. 【Resources.Load】运行时从 Resources 加载:
  3. GameObject obj = Resources.Load<GameObject>("Prefabs/Cube");
  4. Instantiate(obj);
  5. 【问题】Resources 里的都进包:用 AssetsBundle/Addressables 更省。
  6. 【Addressables】官方资源管理:按需下载/加载,推荐(进阶)。
  7. 【场景异步】SceneManager.LoadSceneAsync 异步加载不卡(第 269 课)。
  8. 【延迟加载】远距资源到达才加载(LOD 思维)。
  9. 【卸载】Resources.UnloadUnusedAssets() 清理(少调)。
  10. 【AssetBundle】自定义分包(进阶)。
  11. 【选择】小项目用 Resources 简单够;大项目上 Addressables。
  12. 【完成】加载“按需”了!
  13. 【测试】对比包大小与加载时间。
  14. 【注意】Resources.Load 的路径是“相对 Resources”的路径。
  15. 【推荐】进阶必学 Addressables(进阶教程另行)。
加载优化 = 资源分类(按需加载)+ 异步(不卡帧)+ 不滥用 Resources。三招。

常见错误与排查

错误:Resources.Load 返回 null?
原因:路径错或资源没放 Resources 文件夹
解决:确认资源在 Resources 目录下;路径写对(不含 Resources 前缀)。

动手练习

课后小任务(做出来才算真的学会)

  • 压缩纹理并对比体积
  • 设置音频加载方式
  • 用 Resources.Load 按需加载

本节小结

资源优化完成。下一课学内存管理。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课脚本与 GC 优化