N년 개발을 하면서 사실 이 개념에 생소했는데
요번에 이용하게 된 겸 확실히 정리하고자 이 게시물을 작성하게 되었습니다.
ENUM (열거형)
- 정의: enum은 미리 정의된 상수 집합을 이름으로 관리하는 자료형이다.
- 상태/타입관리 사용하면 좋다.
- 장점
- 숫자 값 대신 의미 있는 이름을 사용하여 가독성을 높인다
- 타입 안전성을 제공한다. (문자열보다 안전)
- 예시
public enum RatType
{
Normal,
Golden,
Poison,
Bomb
}
- 추천 방식과 주의할 점
- 문자열 대신 enum 사용하기 (오타 방지, 성능 ↑)
- 단, enum 값이 너무 많아지면 ScriptableObject로 관리하는 게 더 낫다
ScriptableObject
- 정의: Unity에서 제공하는 데이터 컨테이너.
- 게임 밸런스 데이터, 아이템 정보, 적 스펙, 스킬 설정 등 데이터 중심의 관리 필요할 때 사용
- Prefab을 매번 수정하지 않고 값만 바꿔야 할 때 사용
- 장점
- 씬에 종속되지 않고 독립적으로 데이터 관리 가능
- Inspector에서 직관적으로 수정 가능
- Prefab처럼 재사용성이 좋음
- 예시
[CreateAssetMenu(fileName = "RatData", menuName = "Game/RatData")]
public class RatData : ScriptableObject
{
public RatType ratType;
public int scoreValue;
public Sprite ratSprite;
}
- 추천 방식과 주의할 점
- 데이터 중심 게임일수록 적극 활용
- Resources.Load보다는 Inspector에서 Drag&Drop을 권장 (런타임 성능 최적화)
- 변경 가능성이 많은 수치들은 Prefab보다는 ScriptableObject에 몰아두기
Static Events
- 정의: static class에 Action 이벤트를 등록해서, 게임 전역에서 발생하는 이벤트를 관리하는 방식.
- 특정 이벤트(예: 적 잡힘, 아이템 획득, 폭탄 폭발 등)가 여러 곳에서 반응해야 할 때 사용
- UI 업데이트, 사운드 재생, 점수 시스템 등 다양한 객체를 연결해야 할 때 사용
- 장점
- GameManager 같은 무거운 싱글톤에 의존하지 않아도 됨
- 전역 접근 가능 & 호출 간단
- 이벤트 기반으로 코드가 깔끔해짐 (Observer 패턴과 유사)
- 예시
[CreateAssetMenu(fileName = "RatData", menuName = "Game/RatData")]
public class RatData : ScriptableObject
{
public RatType ratType;
public int scoreValue;
public Sprite ratSprite;
}
- 추천 방식과 주의할 점
- 사용 후 반드시 null 체크 필요
RatGameEvents.OnRatCaught?.Invoke(RatType.Normal, 10);
- 이벤트 해제(-=)를 잘 해줘야 메모리 누수 방지 가능
- 작은 규모 프로젝트 → 편하고 빠름
- 큰 규모 프로젝트 → Event Bus, Message System 같은 더 체계적인 방법 고려
- 사용 후 반드시 null 체크 필요
반응형
'IT > 공부 정리' 카테고리의 다른 글
[UNITY] 유니티 폰트, 글씨체 추가하기 TextMeshPro TMP 폰트 만들기 (3) | 2025.07.31 |
---|---|
[Git] 깃 던전 공략법 (2) | 2024.09.09 |
[Unity] 복습: C#기본기 (0) | 2024.07.04 |
[Unity] 유니티복습 생명주기 (0) | 2024.06.19 |
[Unity] HTTP 통신 (0) | 2023.06.16 |