Unity Asset Bundle 角色換裝示例 官方例子

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

character change

完整的示例代碼點擊 這裏
文件 DressingCreateABEditor.cs 包含了建立 Asset Bundle 代碼。文件 CharacterGenerator.cs 包含了加載 Asset Bundle 並建立角色模型和換裝代碼。文件 CharacterABMgr.cs 實現了簡單的同步加載 Asset Bundle 代碼。代碼很直觀清晰,很少作說明了,具體細節看代碼即可。動畫

運行遊戲

  • 建立 Asset Bundle 。點擊菜單項 Recipes/Dressing Room Example/Create Asset Bundle 建立 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 選項。示例中會在運行時,根據文件名動態設置模型用到的 Materials 。

打包流程與加載流程

換裝其實就是加可更換的肢體部位對應的不一樣材質,來實現換裝。打包 Asset Bundle ,必要時經過文件名創建映射關係,如肢體部位與對應的材質。流程以下。code

  • 將每一個角色的基本信息打包成一個 Asset Bundle ,如 name_characterbase.assetbundle 。使用此資源以後建立用於渲染的 GameObject 。
  • 將每一個角色的可更換的肢體部位分別打包成一個 Asset Bundle ,若是 name_part-number.assetbundle 或 name_part.assetbundle 。其中包含了對應的網格,骨骼和材質信息。以後今後資源中選擇渲染須要的資源。
  • 如何去加載肢體部位用到的 Materials 呢?把用於肢體部位的 Material 資源名稱與肢體部位 Asset Bundle 創建映射關係,打包成一個 Asset Bundle ,如 characterelements.assetbundle 。這個 Asset Bundle 是全部資源共享的。

因爲示例目的在於展現換裝和 Asset Bundle 如何搭配使用,因此資源加載方面徹底使用了同步加載,便於理順流程。blog

  • 先加載 characterelements.assetbundle 。獲取當前共有多少個角色,每一個角色有多少的可更好的肢體部位,每一個肢體部位能夠更換哪些材質。
  • 加載 name_characterbase.assetbundle 建立 GameObject 。
  • 加載各肢體部位對應的 Asset Bundle ,準備渲染數據。
  • 顯示角色並播放動畫。

顯示完成後,即可由經過菜單換裝。遊戲

相關文章
相關標籤/搜索