《 Unity 官方案例精講》一書中在第 9 章介紹了角色換裝示例與 Asset Bundle 的使用。示例中還展示了如何用 SkinnedMeshRenderer
渲染模型哀九。雖然是好幾年的示例了竖伯,但其中的換裝的一些基本思想還是可以借鑒的醉者,示例中動畫的播放不用太在意峻黍,是 legacy 動畫播放躁劣,了解下就好促煮。下面先來看一下運行圖邮屁。
character change
完整的示例代碼點擊 這里 。
文件 DressingCreateABEditor.cs 包含了創(chuàng)建 Asset Bundle 代碼菠齿。文件 CharacterGenerator.cs 包含了加載 Asset Bundle 并創(chuàng)建角色模型和換裝代碼佑吝。文件 CharacterABMgr.cs 實現(xiàn)了簡單的同步加載 Asset Bundle 代碼。代碼很直觀清晰绳匀,不多做說明了芋忿,具體細節(jié)看代碼便可炸客。
運行游戲
- 創(chuàng)建 Asset Bundle 。點擊菜單項
Recipes/Dressing Room Example/Create Asset Bundle
創(chuàng)建 Asset Bundle 戈钢。 - 打開 DressingTest.scene 場景文件痹仙。運行游戲。
- 點擊菜單查看換裝效果殉了。
注意事項
- fbx 模型文件導入時开仰,有些
File Scale
是 1 而有些是 0.01 ,如果是 0.01 需要設置Scale Factor
為 100 宣渗。 - fbx 模型文件導入時抖所,在 Rig 標簽下,
Aniamation Type
選擇 Legacy 痕囱,Generation
選擇Store in root(New)
( Unity5.5 不知道以后還有沒有此選項)田轧,點擊 Apply 按鈕后,Unity 識別 fbx 模型文件對應的動畫 fbx 模型文件鞍恢,并建立依賴關系傻粘,并將其中的動畫添加到角色用到的 fb 模型導入時的Animation
組件上。示例中播放動畫就是通過Animation
組件播放帮掉。 - fbx 模型文件導入時弦悉,不需要導入 Mateirals 。勾掉
Import Materials
選項蟆炊。示例中會在運行時稽莉,根據(jù)文件名動態(tài)設置模型用到的 Materials 。
打包流程與加載流程
換裝其實就是加可更換的肢體部位對應的不同材質涩搓,來實現(xiàn)換裝污秆。打包 Asset Bundle ,必要時通過文件名建立映射關系昧甘,如肢體部位與對應的材質良拼。流程如下。
- 將每個角色的基本信息打包成一個 Asset Bundle 充边,如 name_characterbase.assetbundle 庸推。使用此資源之后創(chuàng)建用于渲染的 GameObject 。
- 將每個角色的可更換的肢體部位分別打包成一個 Asset Bundle 浇冰,如果 name_part-number.assetbundle 或 name_part.assetbundle 贬媒。其中包含了對應的網(wǎng)格,骨骼和材質信息肘习。之后從此資源中選擇渲染需要的資源际乘。
- 如何去加載肢體部位用到的 Materials 呢?把用于肢體部位的 Material 資源名稱與肢體部位 Asset Bundle 建立映射關系井厌,打包成一個 Asset Bundle 蚓庭,如 characterelements.assetbundle 。這個 Asset Bundle 是所有資源共享的仅仆。
由于示例目的在于展示換裝和 Asset Bundle 如何搭配使用器赞,所以資源加載方面完全使用了同步加載,便于理順流程墓拜。
- 先加載 characterelements.assetbundle 港柜。獲取當前共有多少個角色,每個角色有多少的可更好的肢體部位咳榜,每個肢體部位可以更換哪些材質夏醉。
- 加載 name_characterbase.assetbundle 創(chuàng)建 GameObject 。
- 加載各肢體部位對應的 Asset Bundle 涌韩,準備渲染數(shù)據(jù)畔柔。
- 顯示角色并播放動畫。
顯示完成后臣樱,便可由通過菜單換裝靶擦。
我的博客地址 https://my.oschina.net/iirecord/blog 。