http://www.ceeger.com/forum/read.php?tid=19138
public AnimationClip clip;
Animator anim;
void Awake()
{
anim = GetComponent<Animator>();
}
void Start () {
AnimatorOverrideController overrideController = new AnimatorOverrideController();
overrideController.runtimeAnimatorController = anim.runtimeAnimatorController;
overrideController["testCip"] = clip;
anim.runtimeAnimatorController = overrideController;
}这里一定要注意, overrideController["testCip"] = clip;里面的testClip不是状态机里面的状态名,而是实际要替换的clip的名字.....
也可以用AnimationClipPair得到clip的名字
RuntimeAnimatorController tempController = anim.runtimeAnimatorController;
AnimatorOverrideController overrideController = new AnimatorOverrideController();
overrideController.runtimeAnimatorController = tempController;
overrideController.PerformOverrideClipListCleanup();//<span style="color:#ff0000;">这个函数在U5.3和5.0都不存在应该是去掉了吧</span>
overrideController[overrideController.clips[0].originalClip.name] = clip;
overrideController[overrideController.clips[1].originalClip.name] = clip2;
foreach (AnimationClipPair pairs in overrideController.clips)
{
Debug.Log(pairs.originalClip.name );
if (pairs.overrideClip!=null)
{
Debug.Log(pairs.overrideClip.name );
}
}
anim.runtimeAnimatorController = overrideController;
本文详细介绍如何在Unity中使用AnimatorOverrideController来替换特定的动画片段。通过实例代码展示了如何设置和应用动画覆盖,包括如何清理动画片段列表。适用于游戏开发者和技术美术人员。
875

被折叠的 条评论
为什么被折叠?



