1.核心打包原则
2.具体资源划分方案
1.资源划分策略
csharp
控制包大小: "单个包尽量 ≤ 10MB, 太大加载卡, 太小(≤100KB)就合并"
a.一起用的放一起
同一时间/同一场景会用到的资源, 打包到一个包里(比如: 主城的UI和主城的特效)
b.常换的单独放
经常要更新的资源(比如: 活动图标), 单独打包, 修改的时候只更这个一个包, 不用动其他
c.太大的单独放
每个资源体积特别大(比如: 5MB以上), 单独打包, 避免加载时卡顿
2.具体资源划分方案
csharp
1).UI资源(按钮, 弹窗, 图标等)
a.全游戏通用UI(比如: 按钮, 加载圈, 弹窗框架)
- 打包方式: 单独打包, 例如: ui_common.ab
- 通俗解释: 游戏全程都用, 加载一次就够, 不用重复打包
csharp
b.场景/模块专属UI(比如: 主城/副本/商城UI)
- 打包方式: 按场景/模块打包, 例如: ui_city.ab
- 通俗解释: 进主城才加载主城UI, 不浪费内存
csharp
c.活动UI(比如: 圣诞/春节活动)
- 打包方式: 单独打包, 例如: ui_activity_xmas.ab
- 通俗解释: 活动常改, 单独打包只更这一个包
csharp
d.小图标(比如: 道具/技能图标)
- 打包方式: 所有小图标合并打包, 例如: ui_icons_common.ab
- 通俗解释: 小图标太多, 单个打包会有几百个小包, 加载慢
csharp
2).特效资源(含buff特效)
a.通用特效(比如: 飘字/小火花/按钮高亮)
- 打包方式: 合并打包, 例如: effect_common.ab
- 通俗解释: 全游戏都用, 一次加载全局通用
csharp
b.通用buff(比如: 回血/暴击/减速buff)
- 打包方式: 合并打包, 例如: effect_buff_common.ab
- 通俗解释: 所有基础buff放一起, 战斗时一次加载
csharp
c.场景/职业专属特效(比如: 副本1战斗特效, 法师技能特效)
- 打包方式: 按场景/职业打包, 例如: effect_dungeon1.ab, effect_skill_mage.ab
- 通俗解释: 进副本1才加载副本1的特效, 法师出战才加载法师技能特效
csharp
d.超大特效(比如: Boss终极大招)
- 打包方式: 单独打包, 例如: effect_boss_ultimate.ab
- 通俗解释: 体积大, 只在Boss战用, 用完就卸载, 不占内存
csharp
e.活动专属特效(比如: 圣诞大招)
- 打包方式: 单独打包, 例如: effect_activity_xmas.ab
- 通俗解释: 活动结束就换, 单独打包方便更新
csharp
3).模型资源(角色/小怪/建筑)
a.通用模型(比如: 宝箱/石头)
- 打包方式: 单独打包, 例如: model_common.ab
- 通俗解释: 全游戏共用, 避免重复打包, 占体积
csharp
b.场景专属模型(比如: 主城建筑/副本小怪)
- 打包方式: 按场景打包, 例如: model_city.ab
- 通俗解释: 进主城加载主城建筑, 不加载副本的模型
csharp
c.角色模型(比如: 战士/法师)
- 打包方式: 按职业打包, 例如: model_role_warrior.ab
- 通俗解释: 选战士职业才加载战士模型, 节省内存
csharp
d.超大模型(比如: Boss模型)
- 打包方式: 单独打包, 例如: model_boss_dragon.ab
- 通俗解释: 体积 >= 5MB, 单独加载不卡
csharp
4).音频资源(音效/BGM/语音)
a.通用特效(比如: 按钮点击/普攻)
- 打包方式: 合并打包, 例如: audio_sound_common.ab
- 通俗解释: 小音效合并, 减少小包数量
csharp
b.场景BGM(比如: 主城/副本BGM)
- 打包方式: 按场景打包, 例如: audio_bgm_city.ab
- 通俗解释: 进主城播主城BGM, 加载对应包即可
csharp
c.超大音频(剧情长语言)
- 打包方式: 单独打包, 例如: audio_voice_story_final.ab
- 通俗解释: 时长 >= 1分, 单独加载不卡
csharp
5).场景资源(比如: 整个关卡/地图)
a.每个场景/关卡单独打包, 例如: scene_city.ab, scene_dungeon1.ab
b.原因: "加载关卡时要整体加载, 单独打包方便卸载(退出关卡就删场景包, 释放内存)"
csharp
6).通用依赖资源(所有资源都会用到的东西)
a.单独打包, 例如: common_shader.ac (shader, 通用材质, 字体)
b.关键: 别将这些东西跟着特效/模型打包, 比如所有特效都用一个shader, 单独打包后, 所有特效只需要"引用"它即可