본문 바로가기

Unity

[Unity] ScriptableObject 가 뭐야?

728x90

유니티에서 "ScriptableObject는 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너입니다."라고 설명합니다. 

 

제 경험에서 ScriptableObject 는 결말이나 도감의 정보를 저장할 때 사용하면 좋을 것 같다고 생각합니다. 아래의 코드는 프로젝트를 하면서 바이러스의 정보와 이미지를 가지고 있는 도감을 만들 때 사용했던 코드입니다. 이렇게 하면 하나의 도감을 하나의 오브젝트로 저장하여 관리할 수 있어 편리함을 느꼈습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[CreateAssetMenu(fileName = "New Virus", menuName = "VirusData/Sources")]
public class EncyclopediaScriptableObject : ScriptableObject
{
    [Header("잠금 해제 되었는지 확인하는 변수")]
    public bool isOpen;
    [Header("잠금 이미지")]
    public Sprite lockImage;
    [Header("잠금 해제 이미지")]
    public Sprite openImage;
 
    [Header("바이러스 이름")]
    public string virusName;
    [Header("바이러스 발병 위치")]
    public string virusTroubleLocation;
    [Header("바이러스 예방법")]
    public string virusPreventive;
    [Header("바이러스 정보")]
    public string virusInformation;
}
 

 

코드에서 제일 중요한 부분은 부모 클래스로 ScirptableObject를 상속 받는 다는 것과 CreateAssetMenu를 통해서 파일 이름과 메뉴 경로를 정해줄 수 있다는 것입니다.

 

 

ScriptableObject 인스펙트 구현 화면

위의 코드를 작성하고 Create > VirusData > Source 를 클릭하여 ScriptableObject를 생성하고 클릭하면 볼 수 있는 인스펙트 화면입니다.

 

대량의 변수를 한 번에 관리해야 하는 일이 있을 때 ScriptableObject를 사용하면 유용하게 사용할 수 있을 것으로 생각됩니다.

728x90