일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 해시
- Firebase
- BFS
- 포톤
- Inventory
- 순열
- 구현
- 이분탐색
- UE4
- c#
- QueryDSL
- 문자열
- Photon
- 언리얼엔진
- unityui
- Unity3d
- 알고리즘
- 내일배움캠프
- 스파르타내일배움캠프TIL
- 워크플로
- 프로그래머스
- 유니티
- UnrealEngine
- 스파르타내일배움캠프
- C++
- 스택
- Unity2D
- FSM
- Unity
- 유클리드호제법
Archives
- Today
- Total
개발 낙서장
[Unity] Animator.StringToHash 본문
애니메이터의 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