我有一个AnimatorController,并希望在运行时使用另一个剪辑覆盖它。该项目应该作为WebGL项目运行,因此不可能创建一个新的AnimatorController,因为它位于UnityEditor命名空间中,在将项目构建为WebGL项目时不会导出(如果您有解决方案,也可以发布它)。
所以我尝试使用AnimatorOverrideController,但我不知道为什么动画没有播放......
在按下播放之前默认加载Basic_Run_02,它应该被SadWalk.fbx中的剪辑覆盖。
有人知道动画没有播放的原因吗?
public class AnimationHelper : MonoBehaviour
{
public AnimationClip state;
public AnimatorOverrideController overrideController;
void Start(){
state = Resources.Load("SadWalk", typeof(AnimationClip)) as AnimationClip;
PlayMotion (state.name);
}
void PlayMotion(string name){
RuntimeAnimatorController myController = gameObject.GetComponent<Animator>().runtimeAnimatorController;
overrideController = new AnimatorOverrideController ();
overrideController.name = "Test";
overrideController.runtimeAnimatorController = gameObject.GetComponent<Animator>().runtimeAnimatorController;
overrideController ["Basic_Run_02"] = state;
//Debug.Log (overrideController.clips.ToString);
gameObject.GetComponent<Animator>().runtimeAnimatorController = overrideController;
gameObject.GetComponent<Animator> ().StartPlayback ();
}
}
答案 0 :(得分:0)
UnityEngine名称空间中也提供了Animator和RuntineAnimatorController类,因此您应该进行如下更改:
gameObject.GetComponent<UnityEngine.Animator>().runtimeAnimatorController = overrideController;
并且overrideController的类型应为UnityEngine.RuntimeAnimatorController
,例如:
public AnimatorOverrideController overrideController;
现在,如果您导出到WebGL,您的代码将起作用。