게임 엔진/유니티

[유니티] 설정한 Enum 값 고정시키기

코딩너구리 2025. 5. 4. 15:37

게임에서 아이템, 스킬 등 캐릭터에게 스텟효과를 부여하거나, 특정 직업이나 버프를 걸어야 할 경우.

해당 데이터의 타입을 enum으로 짓는 경우가 있다.

(좌) 전직하기 위한 특성이름 / (우) 전직이름

나 같은 경우는 전직을 하기 위해서는 Trait이라는 고유 특성을 모아 전직하는 시스템이 있다.

그리고 이 데이터는 ScriptableObject에 담아두고 있다.

 

Might라는 특성의 ScriptableObject

여기서 특성을 통해 전직 가능한 직업들을 List로 담아 저장해두는데 여기서 문제가 발생한다.

enum 안에서 위치를 변경

   

추가로 직업을 만들어야 하거나, 삭제해야할 때 또는 위치를 조금이라도 바꾸려고 하면..

해당 데이터를 수정하지도 않았는데 바뀌어 버린 직업들

이렇게 밀려버리는 현상이 발생해 예기치 못한 버그를 발생하고, 해당 enum을 저장해두었던 모든 오브젝트를

수정해야하는 번거로움이 발생한다.

이러한 문제를 해결하기 위해서는 enum의 이름을 잃어버리지 않도록 string 변수이용할 수 있다.

string을 enum으로 변경시켜줄 함수
사용되는 곳

 

이런식으로 String을 통해 enum의 데이터를 고정 시킬 수 있다. 그러면 나중에 enum에 값을 손쉽게 수정이 가능하다.