Unity AB包動態載入Spine動畫
阿新 • • 發佈:2021-02-05
技術標籤:Unity
剛開始想使用把spine動畫做成預設體加載出來,但是載入之後無法指令碼控制spine的動畫片段,整個spine會維持在做成預設體的設定.
後來改變想法把動畫所需的AssetData和Material動態載入,然後用著兩個資原始檔去生成spine動畫,程式碼如下:
IEnumerator getABPack()
{
var unityWebRequest = UnityWebRequestAssetBundle.GetAssetBundle(path, 0);
yield return unityWebRequest.SendWebRequest ();
AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(unityWebRequest);
SkeletonDataAsset skeletonDataAsset = bundle.LoadAsset<SkeletonDataAsset>("skeleton_SkeletonData");
Material material = bundle.LoadAsset<Material>("SkeletonGraphicDefault" );
SkeletonGraphic skeletonGraphic = SkeletonGraphic.NewSkeletonGraphicGameObject(skeletonDataAsset, transform.parent, material);
// 要把spine引入unity的Runtime庫下面的SkeletonGraphicDefault材質球也打包,並且載入之後設定shader才可以正確顯示,否則會丟失材質
skeletonGraphic.material = bundle.LoadAsset<Material> ("SkeletonGraphicDefault");
skeletonGraphic.material.shader = Shader.Find("Spine/SkeletonGraphic");
skeletonGraphic.AnimationState.SetAnimation(0, "run", true);
bundle.Unload(false);
}
// SkeletonAnimation的動態建立方法
// SkeletonAnimation.NewSkeletonAnimationGameObject(skeletonDataAsset);