《 Unity 官方案例精講》一書中在第 9 章介紹了角色換裝示例與 Asset Bundle 的使用。示例中還展示了如何用 SkinnedMeshRenderer 渲染模型。雖然是好幾年的示例了,但其中的換裝的一些基本思想還是可以借鑒的,示例中動畫的播放不用太在意,是 legacy 動畫播放,了解下就好。下面先來看一下運(yùn)行圖。

character change
完整的示例代碼點(diǎn)擊 這里 。
文件 DressingCreateABEditor.cs 包含了創(chuàng)建 Asset Bundle 代碼。文件 CharacterGenerator.cs 包含了加載 Asset Bundle 并創(chuàng)建角色模型和換裝代碼。文件 CharacterABMgr.cs 實(shí)現(xiàn)了簡單的同步加載 Asset Bundle 代碼。代碼很直觀清晰,不多做說明了,具體細(xì)節(jié)看代碼便可。
運(yùn)行游戲
- 創(chuàng)建 Asset Bundle 。點(diǎn)擊菜單項
Recipes/Dressing Room Example/Create Asset Bundle創(chuàng)建 Asset Bundle 。 - 打開 DressingTest.scene 場景文件。運(yùn)行游戲。
- 點(diǎn)擊菜單查看換裝效果。
注意事項
- fbx 模型文件導(dǎo)入時,有些
File Scale是 1 而有些是 0.01 ,如果是 0.01 需要設(shè)置Scale Factor為 100 。 - fbx 模型文件導(dǎo)入時,在 Rig 標(biāo)簽下,
Aniamation Type選擇 Legacy ,Generation選擇Store in root(New)( Unity5.5 不知道以后還有沒有此選項),點(diǎn)擊 Apply 按鈕后,Unity 識別 fbx 模型文件對應(yīng)的動畫 fbx 模型文件,并建立依賴關(guān)系,并將其中的動畫添加到角色用到的 fb 模型導(dǎo)入時的Animation組件上。示例中播放動畫就是通過Animation組件播放。 - fbx 模型文件導(dǎo)入時,不需要導(dǎo)入 Mateirals 。勾掉
Import Materials選項。示例中會在運(yùn)行時,根據(jù)文件名動態(tài)設(shè)置模型用到的 Materials 。
打包流程與加載流程
換裝其實(shí)就是加可更換的肢體部位對應(yīng)的不同材質(zhì),來實(shí)現(xiàn)換裝。打包 Asset Bundle ,必要時通過文件名建立映射關(guān)系,如肢體部位與對應(yīng)的材質(zhì)。流程如下。
- 將每個角色的基本信息打包成一個 Asset Bundle ,如 name_characterbase.assetbundle 。使用此資源之后創(chuàng)建用于渲染的 GameObject 。
- 將每個角色的可更換的肢體部位分別打包成一個 Asset Bundle ,如果 name_part-number.assetbundle 或 name_part.assetbundle 。其中包含了對應(yīng)的網(wǎng)格,骨骼和材質(zhì)信息。之后從此資源中選擇渲染需要的資源。
- 如何去加載肢體部位用到的 Materials 呢?把用于肢體部位的 Material 資源名稱與肢體部位 Asset Bundle 建立映射關(guān)系,打包成一個 Asset Bundle ,如 characterelements.assetbundle 。這個 Asset Bundle 是所有資源共享的。
由于示例目的在于展示換裝和 Asset Bundle 如何搭配使用,所以資源加載方面完全使用了同步加載,便于理順流程。
- 先加載 characterelements.assetbundle 。獲取當(dāng)前共有多少個角色,每個角色有多少的可更好的肢體部位,每個肢體部位可以更換哪些材質(zhì)。
- 加載 name_characterbase.assetbundle 創(chuàng)建 GameObject 。
- 加載各肢體部位對應(yīng)的 Asset Bundle ,準(zhǔn)備渲染數(shù)據(jù)。
- 顯示角色并播放動畫。
顯示完成后,便可由通過菜單換裝。
我的博客地址 https://my.oschina.net/iirecord/blog 。