내가 Enum을 처음 배웠을 때 든 생각은 "저걸 어따쓰지" 이였다. 상수에 이름을 붙여서 어떠한 이득을 주는지 알지 못했고 그것이 필요한 상황을 만나지 못했기 때문이다. 하지만 프로젝트를 같이하던 한 프로그래머 분이 이것을 활용하는 것을 보았고 그때부터 Enum의 활용과 필요성에 대해 느끼게 되었다.
enum Item
{
axe, //0
meat, //1
rope = 5 //5
stone = 10 //10
}
enum은 쉽게 말하면 상수에 이름을 붙이는 것이다. 위처럼 Item을 선언하면 Item.axe는 0, Item.meat는 1이 된다. 이러한 Enum을 이용하면 아이템처럼 특정 이름에 인덱스를 필요로 하는 경우에 활용될 수 있다.
enum Item
{
axe, //0
meat, //1
rope = 5 //5
stone = 10 //10
}
private void Get_Item_Name(Item itemCode)
{
switch(itemCode)
{
case Item.axe:
Debug.Log("Axe");
break;
case Item.meat:
Debug.Log("Meat");
break;
case Item.rope:
Debug.Log("Rope");
break;
case Item.stone:
Debug.Log("Stone");
break;
}
}
이렇게 switch와 함깨쓰면 더욱 편리하게 활용할 수 있다. 위 함수에서는 단순히 Debug.Log로 아이템의 이름을 출력했다. 하지만 실제 게임에서 이를 활용한다면 이보다 더 복잡하고 많은 작업들을 처리할 수 있다. 만약 Enum을 사용하지 않았었다면 직접 Get_Item_Name 함수에 아이템 인덱스를 넣어서 주거나 문자열로 작성해야 할것이다. 하지만 문자열로 작성할 경우 오탈자가 발생하기가 쉬워진다. 하지만 enum을 사용하면 아래 사진과 같이 자동완성으로 enum에 선언해 두었던 것들을 알려준다.
위 사진은 내 프로젝트에서 플레이어 애니메이션을 전환할 때 사용하는 함수를 다른곳에서 호출할 때 사진이다. 나는 이렇게 특정 애니메이션으로 전환할 때 enum과 switch를 활용하고 있다.
'Unity 분석' 카테고리의 다른 글
MonoBehaviour (0) | 2023.01.08 |
---|---|
코루틴의 작동방식 (0) | 2023.01.06 |
메모리 구조와 유니티 - GC에 대한 심층적 이해 (0) | 2023.01.05 |
GameObject.Find() (0) | 2023.01.04 |
물체가 이동하면서 얇은 벽을 통과하는 경우 (0) | 2023.01.04 |