最近在項目中進行資源優(yōu)化. 我們的項目一直以來都是以傳統(tǒng)的電子表格配置為中心的資源驅(qū)動加載方法, 拿角色攜帶的特效要播放出來這個case來具體點說就是:
1. 技能部分的特效可以遍歷動作表播放的所有特效id, 提前預載
2. buff類特效是動態(tài)確定的,無法分析. 需要通過角色表添加資源id在加載角色時加載特效
這種做法的缺點:
當角色特效效果調(diào)整時, 美術和策劃需要調(diào)整特效id表. 多出來不用的特效也加載是感覺不出來的, 分析也是很困難的
所以這種以傳統(tǒng)的電子表格配置為中心的方式在Unity3D里, 內(nèi)存, 包優(yōu)化會是個大問題.
那么, 什么是Unity3D的開發(fā)核心思想?
除了組件思想外, 就是Prefab, 貫徹整個編輯器及引擎自始至終
處理角色攜帶特效加載后播放的這個case, 用Prefab為中心的資源管理來做的話, 大概就是這樣:
1. 程序編寫一個角色特效列表腳本, 把List暴露出來可以在編輯器里使用
2. 美術在做技能時, 把要用到的特效拖拽到List中
3. 特效無需再編制全局ID編碼
4. 策劃根據(jù)這個角色掛接的特效索引, 在配置表里添加播放指令
這樣做的優(yōu)點:
角色引用到的資源才會被打到最終游戲包內(nèi), 不使用的資源是不會被加載的
類似的, 在UI特效里, 也應該是將要播放的特效掛接到對象中, 而不是動態(tài)通過代碼去加載
在Unity3D中, Prefab將圖片,Shader, 特效, 腳本等一切平等看待, 只要有引用, 一次性加載.
同時, 也可以通過靜態(tài)工具分析Prefab.
如果是通過代碼加載的效果, 則只能讓程序員做優(yōu)化, 這種過程無法讓Unity3D官方后期提供的工具進行優(yōu)化
所以, 推薦使用Prefab為中心的資源管理模式