我正在基于分配给动画器组件的当前控制器通过脚本创建Animator OverrideController。我已经为位置创建了动画曲线,并且该曲线有效。当我尝试为透明度(材质颜色alpha)设置动画时,它不起作用。我是否无法正确访问此属性?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AnimationScript : MonoBehaviour {
void Start()
{
AnimationClip clip = new AnimationClip();
AnimationCurve curve = AnimationCurve.EaseInOut(0.0f, transform.position.x, 1.0f, transform.position.x);
clip.SetCurve("", typeof(Transform), "localPosition.x", curve);
curve = AnimationCurve.Linear(0.0f, 1.0f, 1.0f, 0.0f);
clip.SetCurve("", typeof(Material), "_Color.a", curve);
Animator anim = GetComponent<Animator>();
AnimatorOverrideController animatorOverrideController = new AnimatorOverrideController(anim.runtimeAnimatorController);
// "loop" is the name of clip not name of state
animatorOverrideController["loop"] = clip;
anim.runtimeAnimatorController = animatorOverrideController;
}
}
但是,旧版动画组件的类似代码有效:
void Start()
{
Animation anim = GetComponent<Animation>();
AnimationCurve curve;
// create a new AnimationClip
AnimationClip clip = new AnimationClip();
clip.legacy = true;
// update the clip to a change color
curve = AnimationCurve.Linear(0.0f, 1.0f, 2.0f, 0.0f);
clip.SetCurve("", typeof(Material), "_Color.a", curve);
// now animate the GameObject
anim.AddClip(clip, clip.name);
anim.Play(clip.name);
}
我缺少什么,为什么第一个脚本不起作用?