프로그래밍/Unity

ScriptableObject

selinatsu 2024. 10. 2. 13:43
반응형

스크립트 파일을 Asset 형태로 만든 Object.

주로 Data 를 처리하기 위해 사용하며 각 field를 에디터에서 편집할 수 있다.

 

이를 위해서 class MoneBehaviour 대신 ScriptableObject 를 상속받는다.

따라서 GameObject 에 Component 로 추가할 수 없고 Asset 형태로 존재하게 된다.

또한 쉽게 메뉴에서 생성할 수 있도록 CreateAssetMenu() 로 정의해준다. 

 

Class 에 Data 구조를 작성하면, 객체마다 해당 Data 크기만큼 메모리에 할당하게 된다.

한 두개의 객체를 생성한다면 문제될 게 없지만, 수많은 객체를 선언해야 할 때는 메모리를 낭비하게 된다.

이 때 생성된 객체가 ScriptableObject의 Data 를 참조하게 만든다면 이러한 낭비를 줄일 수 있게 된다.

 

예)

여러 명의 관중이 등장하는 게임을 만든다고 가정해본다면... 

 

public enum eGenderType { Male, Female }
public enum eAgeType { Kid, Junior, Adult, Senior }
public enum eAnimationType { Idle, Shout, Cheer, Boo }

class Clowd
{
    public eGenderType Gender { get; private set; } = eGenderType.Male;
    public eAgeType Adult { get; private set; } = eAgeType.Adult;
    public eAnimationType Animate { get; private set; } = eAnimationType.Idle;
}

 

로 선언하고 각 객체가 Clowd Data 를 참조하게 만든다.

 

 

 

반응형