AnimatorOverrideController如何代替Animator

一、AnimatorOverrideController是什么?


AnimatorOverrideController相当于一个虚拟的AnimatorController,用于重写(即在代码中编辑)AnimatorController



二、使用AnimatorOverrideController好处


普通的AnimatorController需要在运行前设置好clip,在运行时无法修改,而AnimatorOverrideController可以在运行时随意修改替换当前的clip。这样当为某个游戏物体添加Animator组件时,不需要每个物体都设置一个特定的AnimatorController,只需要一个AnimatorOverrideController就可以代替所有的AnimatorController,非常方便。


三、如何创建AnimatorOverrideController


首先创建一个通用的AnimatorController,创建完后拖拽进Animator组件。
其中需要先放置 两个/两个以上的空Clip,用于替换。
(以下会说明原因)

四、如何使用AnimatorOverrideController来替换Clip


官方写法:
1.创建AnimatorOverrideController
 	protected Animator animator;
    protected AnimatorOverrideController animatorOverrideController;

    public void Start()
    {
        animator = gameobject.GetComponent<Animator>();
        
		//创建新的AnimatorOverrideController并赋值给runtimeAnimatorController
        animatorOverrideController = new AnimatorOverrideController(animator.runtimeAnimatorController);
        animator.runtimeAnimatorController = animatorOverrideController;//必须有这一步
    }

2.替换clip

 	public void SetClip(AnimationClip clip)
    {
        string key = $"Clip_AAA";//这里的key是指原AnimatorOverrideController或/AnimatorController中的状态名

        animatorOverrideController [key] = clip;//将新的clip赋值给animatorOverrideController某个状态
		animator.Play(key);//播放该片段
    }

在这里插入图片描述

这里拿的官方图片,状态机里的Grounded、Die、Falling等都是我上面定义的Key,可以理解一下

注:因为Animator创建后会自动播放默认Clip,所以设置两个或以上的Clip。如上图默认状态为Grounded,因此替换的Clip可以放在处Grounded中,再通过animator.Play(key)方法播放替换的片段。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值