我将移动之类的动画和攻击的动画分别导出为不同的文件,在unity中生成了两个SkeletonDataAsset,我尝试通过以下代码来切换动画
SkeletonDataAsset animator;//通过unity的inspector窗口拖拽赋值
//切换动画文件的函数
SkeletonDataAsset atkAsset = Resources.Load<SkeletonDataAsset>("Spine4.2/" + AttackAnimation);
animator.ClearState();
animator.skeletonDataAsset = atkAsset ;
animator.initialSkinName = GameData.Instance.skinName;
animator.Initialize(true);
该方法能够成功更换skeletonDataAsset,(从inspector中查看skeletonDataAsset名称确实是变化了)
但是会导致更多的问题
目前遇到的问题:
animator.Initialize后导致SkeletonRootMotion失效
animator所监听的spine事件失效
以及其他通过animator赋值和使用过animator的对象都出现问题
是不是不推荐这种在游戏运行中更换SkeletonDataAsset的行为,如果可以更换SkeletonDataAsset,有没有办法解决这些问题