2016-01-18 5 views
1

Как я могу получить имя текущего состояния слоя на моем компоненте Animator? Я понимаю, что я могу сравнить имя с GetCurrentAnimatorStateInfo(0).IsName("statename"), но я не хочу запускать его для каждого состояния в моем слое. Можно ли просто получить имя текущего состояния?Получить имя текущего состояния анимации

ответ

4

Я не думаю, что это было возможно. Единственное хорошее решение, я могу думать о том, чтобы использовать 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; 
} 
+0

Хорошо, спасибо за разъяснения и предлагаемого решения. –

+0

Это лучший aproach. Но получить имя можно по рефлексии. Но это было бы очень дорого. –