我如何使用 enum、switch、case 和 return 来决定何时使用 Animator 状态?

How can i use enum,switch,case and return to decide when to use Animator states?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Animations : MonoBehaviour {

    public enum AnimatorStates
    {
        WALK, RUN, IDLE
    }

    private static Animator _anim;

    // Use this for initialization
    void Start ()
    {
        _anim = GetComponent<Animator>();
    }

    private static  AnimStates(AnimatorStates states)
    {
        switch (states)
        {
            case AnimatorStates.IDLE:
                return _anim.Play("idle");
        }
    }

    // Update is called once per frame
    void LateUpdate ()
    {

    }
}

第一个问题是 return 应该是什么类型?静态后:

private static  AnimStates(AnimatorStates states)

第二个问题是在 LateUpdate 中创建案例后如何使用它,如果我没有错,我应该从 LateUpdate 或 Update 函数内部调用动画?

最后,我以后如何从另一个脚本使用这个脚本? 举个例子,如果在另一个脚本中我会做类似的东西,那么只是为了逻辑而不是真正的代码:

if (text == "walk")
    Animations.walk

这种逻辑。

据我了解,您不需要将 _animAnimStates 标记为静态。在这种情况下,我想像下面的代码会为您完成。

public class Animations : MonoBehaviour
{
    public enum AnimatorStates
    {
        WALK, RUN, IDLE
    }

    private Animator _anim;

    void Start()
    {
        _anim = GetComponent<Animator>();
    }

    private void PlayState(AnimatorStates state)
    {
        string animName = string.Empty;
        switch (state)
        {
            case AnimatorStates.IDLE:
                animName = "idle";
                break;
        }
        _anim.Play(animName);
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space)) {
            PlayState(AnimatorStates.IDLE);
        }
    }
}