在使用AnimationEvent动态增加事件时,出现了这个问题,脚本内容如下:
public virtual void Awake()
{
attackedTarget = new List<Character>();
AddAttackEvent("Z_Attack", 1 / 6f, "AttackEvent");
AddAttackEvent("Z_Attack", 2 / 3f, "AttackEvent");
}
public void AttackEvent()
{
foreach (Character target in attackedTarget)
{
target.GetHit(target.attack.Value);
}
attackedTarget.Clear();
}
public void AddAttackEvent(string clipName, float frameTime, string eventName)
{
AnimationEvent evt = new AnimationEvent();
evt.time = frameTime;
evt.functionName = eventName;
AnimationClip tClip = new AnimationClip();
foreach (AnimationClip clip in animator.runtimeAnimatorController.animationClips)
{
if (clip.name.Contains(clipName))
{
tClip = clip;
}
}
tClip.AddEvent(evt);
}
脚本挂载的游戏物体上没有Animator组件。
解决方法:把该脚本挂载到Animation所对应Animator所在的游戏物体上。
本来是想在其他脚本上增加动画事件的,看来还是得乖乖挂载到Animator同一物体上。此时也可以利用Animation面板来直接增加动画事件。