728x90
반응형
Animator.StringToHash
유니티(Unity)에서 애니메이션 상태를 제어할 때 Animator.StringToHash 함수를 사용하면 성능을 최적화할 수 있다.
이 함수는 문자열을 정수 해시 값으로 변환하는 역할을 한다.
왜 StringToHash를 사용하는가?
유니티의 애니메이터(Animator)는 상태 전환 시 문자열을 사용하여 상태를 식별한다.
문자열 비교는 계산 비용이 크기 때문에, 이를 해시 값으로 변환하여 비교하는 것이 더 효율적이다.
Animator.StringToHash 함수는 문자열을 해시 값으로 변환해 이러한 비용을 줄여준다.
사용 예시
다음과 같이 파라미터가 있으면
이렇게 트리거를 호출할텐데
animator.SetTrigger("Idle");
animator.SetTrigger("Move");
Animator.StringToHash를 사용한다면
animator.SetTrigger(Animator.StringToHash("Idle"));
animator.SetTrigger(Animator.StringToHash("Move"));
이렇게 코드가 변한다.
하지만 이대로 사용한다면 안좋기 때문에
주로 캐싱을 해서 사용한다.
public class AnimatorTestController : MonoBehaviour
{
private Animator animator;
// 해시 값을 저장할 변수 선언
private int idleHash;
private int moveHash;
void Start()
{
animator = GetComponent<Animator>();
// 초기화 단계에서 한 번만 해시 값을 계산하여 저장한다
idleHash = Animator.StringToHash("Idle");
moveHash = Animator.StringToHash("Move");
}
void Update()
{
if (Input.GetKey(KeyCode.W))
{
// 미리 계산된 해시 값을 사용하여 성능을 최적화한다
animator.SetTrigger(runHash);
}
else
{
animator.SetTrigger(moveHash);
}
}
}
728x90
반응형
'Unity' 카테고리의 다른 글
랜덤값 구하기 Vector2, Vector3 (0) | 2024.07.05 |
---|---|
SMB(State Machine Behaviors)와 FSM(Finite State Machine) 비교 (0) | 2024.07.03 |
ScriptableObject 사용 방법 (0) | 2024.06.26 |
StateMachineBehaviour 사용 방법 (0) | 2024.06.26 |
Coroutine과 UniTask 비교 (0) | 2024.06.22 |