using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
[ExecuteInEditMode]
public class AnimationCamera : MonoBehaviour
{
public string test;
public Camera animationCamera;
public Camera mainCamera;
private Animator _anim;
public List<AnimationClip> animations = new List<AnimationClip>();
private void Start()
{
test = "daniel";
animationCamera.enabled = false;
mainCamera.enabled = true;
_anim = GetComponent<Animator>();
}
private void Update()
{
_anim = GetComponent<Animator>();
foreach (AnimationClip ac in _anim.runtimeAnimatorController.animationClips)
{
animations.Add(ac);
}
if (Input.GetKeyDown(KeyCode.C))
{
animationCamera.enabled = !animationCamera.enabled;
mainCamera.enabled = !mainCamera.enabled;
if (animationCamera.enabled)
{
_anim.CrossFade("Animation_Sign", 0);
}
else
{
_anim.CrossFade("Animation_Idle", 0);
}
}
}
public IEnumerator PlaySignAnimation()
{
animationCamera.enabled = true;
_anim.CrossFade("Animation_Sign", 0);
yield return null; //new WaitForSeconds(animations[0]);
animationCamera.enabled = false;
mainCamera.enabled = true;
}
}
现在它将一直更新动画列表,并将继续在编辑器中将相同的项目添加到列表中。 因为在编辑器中我将更新Animator窗口,我想让它在每次我从Animator窗口添加或删除动画剪辑时自动更新动画列表。
答案 0 :(得分:1)
现在的方式是它会一直更新动画列表 将继续在编辑器中将相同的项目添加到列表中。
简单的解决方法是,只有在动画ac
中不存在动画List
时,才会将List
添加到动画中。{/ p>
变化:
foreach (AnimationClip ac in _anim.runtimeAnimatorController.animationClips)
{
animations.Add(ac);
}
到
foreach (AnimationClip ac in _anim.runtimeAnimatorController.animationClips)
{
if (!animations.Contains(ac))
{
animations.Add(ac);
}
}
可能还有其他方法,但这似乎很简单。
修改强>:
至于检查修改动画片段的时间,您可以订阅AnimationUtility.OnCurveWasModified
委托功能。