(轉)Unity3d使用心得(2):Unity3d 動態下載動畫資源——AnimationClip 的使用 - 斯瑪特琦
引言:
在使用 Unity3d 開發微端、或者網頁遊戲的時候常常須要將資源打包成 AssetBundle ,然後通過 www 的方式動態的下載資源。今天要分享的是我再動態下載 Animation 骨骼動畫的時候走的一些彎路和自己最後的解決方式。
我們的項目中的動畫資源有上百套之多,每一套動畫大概在300KB 到 900KB 之前,所以有一個非常重要的需求就是動態的下載須要的動畫。
錯誤的方法:
我看到需求後想到的第一種方法是將 FBX 倒入的 Prefab 實例化,將當中的 Animation 通過 ScriptObject 保存成Asset文件,然後導出成 AssetBundle 文件。
在遊戲執行的時候將下載回來的 Animation 組件賦值給相應的 GameObject 的 Animation 變量中。
悲劇的是我在這個時候才發現 Animation 存取器是僅僅讀的。
正確的做法:
導出 Animation 中的 全部AnimationClip 對象作為數組加入到 ScriptObject 中,保存成Asset文件,然後導出成 AssetBundle 文件。在遊戲執行時,將下載回來的Clip對象加入到 Animation組件其中完畢動畫的動態載入。
AnimationClip 中包括了動畫的數據,能夠靈活的從Animation中加入刪除。
還有一個看似可行的方法:
將 Fbx 倒入的 Prefab 實例化的遊戲對象中。占用空間較大的數據 —— SkinnedMeshRenderer 組件中 Mesh(網格數據)、Shader 中的 Texture 分別導出成AssetBundle。將刪除了這兩個數據的剩余的 GameObject 連同動畫一起打成一個Prefab。在執行的時候動態的拼裝。
假設項目中的動態下載角色資源的方式是這樣的方式的話。能夠在一定程度上的繞開前文中遇到的問題。可是前一種解決方式是比較準確解決這個問題的一種方案。
(轉)Unity3d使用心得(2):Unity3d 動態下載動畫資源——AnimationClip 的使用 - 斯瑪特琦