如何使List成为属性?

时间:2017-05-09 06:33:23

标签: c# .net winforms

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

因此,如果我想稍后使用它,将更容易找到您想要使用的剪辑。

1 个答案:

答案 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();