資源管理模式之Unity3D的Prefab與電子表格
阿新 • • 發佈:2018-12-22
最近在專案中進行資源優化. 我們的專案一直以來都是以傳統的電子表格配置為中心的資源驅動載入方法, 拿角色攜帶的特效要播放出來這個case來具體點說就是:
1. 技能部分的特效可以遍歷動作表播放的所有特效id, 提前預載
2. buff類特效是動態確定的,無法分析. 需要通過角色表新增資源id在載入角色時載入特效
這種做法的缺點:
當角色特效效果調整時, 美術和策劃需要調整特效id表. 多出來不用的特效也載入是感覺不出來的, 分析也是很困難的
所以這種以傳統的電子表格配置為中心的方式在Unity3D裡, 記憶體, 包優化會是個大問題.
那麼, 什麼是Unity3D的開發核心思想?
除了元件思想外, 就是Prefab, 貫徹整個編輯器及引擎自始至終
處理角色攜帶特效載入後播放的這個case, 用Prefab為中心的資源管理來做的話, 大概就是這樣:
1. 程式編寫一個角色特效列表指令碼, 把List暴露出來可以在編輯器裡使用
2. 美術在做技能時, 把要用到的特效拖拽到List中
3. 特效無需再編制全域性ID編碼
4. 策劃根據這個角色掛接的特效索引, 在配置表裡新增播放指令
這樣做的優點:
角色引用到的資源才會被打到最終遊戲包內, 不使用的資源是不會被載入的
類似的, 在UI特效裡, 也應該是將要播放的特效掛接到物件中, 而不是動態通過程式碼去載入
在Unity3D中, Prefab將圖片,Shader, 特效, 指令碼等一切平等看待, 只要有引用, 一次性載入.
同時, 也可以通過靜態工具分析Prefab.
如果是通過程式碼載入的效果, 則只能讓程式設計師做優化, 這種過程無法讓Unity3D官方後期提供的工具進行優化
所以, 推薦使用Prefab為中心的資源管理模式