using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AnimationCamera : MonoBehaviour
{
public Camera animationCamera;
public Camera mainCamera;
Animator _anim;
List<string> animations = new List<string>();
private void Start()
{
animationCamera.enabled = false;
mainCamera.enabled = true;
_anim = GetComponent<Animator>();
foreach (AnimationClip ac in _anim.runtimeAnimatorController.animationClips)
{
animations.Add(ac.name + " " + ac.length.ToString());
}
int cliptoplay = animations[0].IndexOf(" ");
string clip = animations[0].Substring(0, cliptoplay);
}
最后在变量字符串剪辑中我得到了名字。 在List动画中,我有每个剪辑的长度。
但我想知道如果我只在代码中输入visual studio,我是否可以做类似的事情:剪辑。 在点(剪辑)之后,我将得到每个剪辑名称及其长度的选项列表。例如,如果我输入今天的动画。我得到一个属性列表,如:animations.Add或animations.Insert或animations.IndexOf
我想做的是创建一些如果我将键入Clip。我将获得所有剪辑名称和长度的列表,例如:Clip.anim_001_length_10或Clip.myanim_length_21
因此,如果我想稍后使用它,将更容易找到您想要使用的剪辑。
答案 0 :(得分:0)
希望我理解正确,但为什么不使用AnimationClip
列表而不是字符串操作呢?
List<AnimationClip> animations = new List<AnimationClip>();
之后您可以通过创建新的AnimationClip
对象并从控制器的集合中复制属性来填充它:
foreach (AnimationClip ac in _anim.runtimeAnimatorController.animationClips)
{
animations.Add(new AnimationClip {name = ac.name, length = ac.length});
}
现在,如果您想获得所有剪辑名称的列表,您可以执行以下操作:
List<string> clipNames = animations.Select(clip => clip.name).ToList();
或者如果您想要所有长度均为<1的片段。 30:
List<AnimationClip> shortClips = animations.Where(clip => clip.length < 30).ToList();