1. 程式人生 > 其它 >Unity AB包動態載入Spine動畫

Unity AB包動態載入Spine動畫

技術標籤: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);