如何在Animator组件的图层中获取当前状态的名称?我意识到我可以将名称与GetCurrentAnimatorStateInfo(0).IsName("statename")进行比较,但是我不想在层中的每个状态下都运行该名称。是否可以简单地获取当前状态的名称?

最佳答案

我认为这是不可能的。我能想到的唯一好的解决方案是使用switch语句和nameHash像这样:

Animator animator = GetComponent<Animator>();

// Get the id of all state for this object
int runId = Animator.StringToHash("Run");
int jumpId = Animator.StringToHash("Jump");

AnimatorStateInfo animStateInfo = animator.GetCurrentAnimatorStateInfo(0);

switch (animStateInfo.nameHash)
{
    case runId:
        Debug.Log("Current state is Run");
        break;
    case jumpId:
        Debug.Log("Current state is Jump");
        break;
    default:
        Debug.Log("Current state is not in this list");
        break;
}

10-07 19:57