Post List

[유니티 엔진] StringToHash란?

StringToHash란?


정리 : StringToHash 란, 유니티 엔진에서 우리가 Animator Controller의 Parameters에 접근할 수 있게 도와주는 Animator 클래스의 멤버입니다.

다음과 같은 순서로 포스팅하겠습니다.
1. Animator Controller에서 Parameter 생성.
2. 생성한 Parameter를 C# Script로 제어.

1) Animator Controller에서 Parameter 생성하는 방법
project 뷰 → Create  Animatior Controller 순으로 클릭을 하게 되면, 아래와 같은 Animator Controller 가 생성됩니다.


더블클릭하면, Scene 뷰 옆에 Animator 뷰가 나타납니다. 
Parameters 아래 Name으로 parameter를 검색할 수 있는 탭이 있습니다. 이 탭의 오른쪽의 +를 클릭하면, Float, Int, Bool, Trigger 이상 4가지의 parameter를 생성할 수 있습니다.


여기서 Trigger 형식의 Roll 파라미터를 생성합니다.



2) 생성한 Parameter를 C# Script로 제어하는 방법아래는 앞서 생성했던 파라미터를 제어할 스크립트 예시입니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewAnimController : MonoBehaviour {

    // Animator Component를 저장할 animator 변수 생성.
    private Animator animator;

    // Roll 이라는 문자열(string)을 hash값으로 변경하는 코드.
    // StringToHash로, Roll이라는 string을, int로 변경한 후 hashRoll에 저장.
    private readonly int hashRoll = Animator.StringToHash("Roll");

    private void Start()
    {
        animator.GetComponent();
    }

    // Rolling 함수에서 앞서 생성한 Roll 이라는 이름의 parameter를 제어할 수 있음.
    void Rolling()
    {
        // 아래 코드로 Trigger 형식의 Roll 파라미터를 set 한다.
        animator.SetTrigger(hashRoll);
    }
}


코드를 정리하면,
1. 문자열인 "Roll"을 해시값으로 변경해 저장합니다.
     → private readonly int hashRoll = Animator.StringToHash("Roll")
2. animator 변수에, 게임 오브젝트의 컴포넌트를 추출 및 저장합니다.
     → animator.GetComponent<Animator>();
3. 변경한 해시값을 사용하여 Set Trigger.
     → animator.SetTrigger(hashRoll);



이상으로 포스팅을 마치겠습니다.


댓글