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