2017-03-25 9 views
1

나는 간단한 상태 머신과 간단한 애니메이션을하려고하지만, 유니티는 오류 메시지가 출력합니다 :Unity Animator.Play()를 호출 할 때 오류 메시지 : 유효하지 않은 레이어 -1?

잘못된 레이어 지수 '-1' 을 UnityEngine.Animator : 플레이 (문자열, INT32, 단일)

나는 애니메이터 상태 머신이 기본적으로 ID = -1이되어야하는 "기본 레이어"에 있는지 확인했습니다.

또한 게임의 모든 레이어 ID를 인쇄했는데 모두 "-1"이며 올바른 대답인지 여부는 확실하지 않습니다. 각 레이어마다 고유 한 또는 다른) ID?

그러나 관계없이 Unity는 여전히 불행히도 위와 같은 오류를 인쇄합니다. 참고로

using UnityEngine; 

public class Thanh_Space_Man : MonoBehaviour { 

    public Animator anim; 

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

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

     if(Input.GetKeyDown("1")) 
     {   
      anim.Play ("Run_Rifle_Foreward", -1, 0f);   
     } 

     if(Input.GetKeyDown("2")) 
     { 
      anim.Play ("Idle_Rifle_01", -1, 0f); 
     } 


    } 
} 

: 내가 여기

유니티 5.5.2의 최신 버전을 사용하고

는 코드 내가 유니티에서 초보자입니다. :-)

+1

애니메이션 상태가 정확히 철자가 맞습니까? 즉 "Run_Rifle_Forward". 이것은 애니메이션 상태 중 하나와 정확히 같아야합니다. –

+0

예, 철자가 정확합니다. 귀하의 의견에 감사드립니다. – Thanh

+1

-1은 그것이 발견되지 않는다는 것을 의미한다고 생각합니다. 당신이 그것을 인쇄했을 때 당신이 뭔가 잘못한 것을 의미합니다. 나는 똑같은 실수를 저질렀다. 첫 번째 레이어가 1에서 시작한다고 생각합니다. – Maakep

답변

1

이들은 "CustomLayer"가 Tags & Layer manager에서 수동으로 만든 레이어 인 LayerMask.NameToLayer를 사용할 때 얻게되는 값입니다.

Debug.Log(LayerMask.NameToLayer("asd")); // => -1 
Debug.Log(LayerMask.NameToLayer("UI")); // => 5 
Debug.Log(LayerMask.NameToLayer("CustomLayer")); // => 8 
Debug.Log(LayerMask.NameToLayer("customlayer")); // => -1 
Debug.Log(LayerMask.NameToLayer("Default")); // => 0 

업데이트 :

영업 이익은 문제 발견 : 오류가 나는 애니메이션 상태의 이름을 철자가 잘못되었다는 것을

난 그냥 알아 냈어요을 때 Animator.Play()를 호출합니다. 상태 이름을 올바르게 사용하면 올바르게 작동합니다. Animator.Play()를 호출 할 때 레이어 ID를 0 또는 -1로 전달하는지 여부에 관계없이 두 경우 모두 사용할 수 있다는 것이 훨씬 더 흥미 롭습니다.

+0

내 계층은 Everything, Nothing, Default, UI, Water, ...로 나열됩니다. 각 계층에는 고유 한 (다른) ID가 있습니다. 그러나, 내가 anim.Play ("Run_Rifle_Forward", ID, 0f)를 호출하면; 1, 2, 4 또는 5와 같은 정수 ID를 전달하면 Unity는 항상 "Invalid Layer index 1"또는 2 또는 4 또는 5라고 말합니다. 이상합니다. 나는 여기에 내 코드에 잘못된 다른 것이 있거나 내 장면이 올바르게 설정되어 있지 않다고 생각하고있다 ... – Thanh

+1

오, 미안 - 네가 NameToLayer에 문제가 있다고 생각했다. 나는 당신의 문제를 재현하려고 노력할 것이다 – Maakep

+1

고마워, 프레드릭. 나는 너에게 어떤 디버그 기술을 배웠다. :-) – Thanh