내일배움캠프/Unity

제네릭 SO

서보훈 2025. 1. 2. 21:10

데이터 관리시 스크립터블 오브젝트에 리스트를 사용해서 관리하는 경우가 자주 있었는데, 관리해야하는 데이터들이 여러개일때 관련 내용을 하나의 스크립터블 오브젝트 클래스로 관리할 수 없을까 해서 내용을 찾아봤습니다.

 

스크립터블 오브젝트의 기본이 되는 클래스를 제네릭으로 선언한 뒤, 해당 클래스를 상속시키면서 관리할 데이터타입의 제네릭을 지정해주는 방식입니다.

public class SOList<T> : ScriptableObject
{
    public List<T> list;
}

[CreateAssetMenu(fileName = "DataSOList", menuName = "DataSO/Map List")]
public class MapListSO : SOList<MapData>
{
}

 

현재는 이런 방식이면 상속 시키는 의미가 없어보일 수 있으나, OnValidate() 메서드를 통해 리스트 순서에 맞게 아이디를 부여하는 경우 데이터에 따라 별도의 아이디를 지정할 수 있으며, 특정 값을 통해 원하는 내용을 반환받는 형태의 메서드를 부모 클래스에 구현하여 사용하는등, 확장성을 가지게 되는 장점이 있습니다.

'내일배움캠프 > Unity' 카테고리의 다른 글

유니티 - 터레인(Terrain)  (0) 2025.01.06
요구한것과 이해한것  (0) 2024.10.25
유니티 기능 - Rule Tile  (0) 2024.10.07
유니티 기능 - 타일맵  (0) 2024.10.07
유니티 추가기능 - DOTween 2  (0) 2024.09.13