개발 낙서장

[Unity] Animator.StringToHash 본문

Unity/Technic

[Unity] Animator.StringToHash

권승준 2023. 11. 28. 16:21

애니메이터의 boolean형 파라미터로 isMoving이 있다고 하자.
해당 파라미터가 true가 되면 애니메이션 State가 Move로 바뀌고 false가 되면 Idle로 바뀌게 구성을 해놓았을 때, 코드에서는 이렇게 호출할 것이다.

public void Idle()  
{  
    _animator.SetBool("isMoving", false);  
}

public void Move()  
{  
    _animator.SetBool("isMoving", true);  
}

이렇게 애니메이터의 파라미터를 문자열로 전달하게 되는데, 이 과정에서 매번 문자열 -> 해시로 변환이 이루어지기 때문에 호출이 빈번할수록 성능에 안 좋은 영향을 끼치게 된다.

따라서 사용하는 것이 Animator의 StringToHash 메소드인데 애니메이터의 파라미터들을 해시로 변환해 주는 함수이다.
반환값이 int 형식인 해시값이기 때문에 미리 변수에 캐싱해 사용하면 매번 변환할 필요 없이 편하게 사용할 수 있다.

public int _isMoving = Animator.StringToHash("isMoving");

public void Idle()  
{  
    _animator.SetBool(_isMoving, false);  
}

public void Move()  
{  
    _animator.SetBool(_isMoving, true);  
}

사용법 또한 기존과 동일하다. 문자열 자리에 캐싱한 해시 변수를 넣어주면 된다.
사용법도 편한데 성능도 좋아지니 안 쓸 이유가 전혀 없다.

Comments