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를 통해서 파일 이름과 메뉴 경로를 정해줄 수 있다는 것입니다.
위의 코드를 작성하고 Create > VirusData > Source 를 클릭하여 ScriptableObject를 생성하고 클릭하면 볼 수 있는 인스펙트 화면입니다.
대량의 변수를 한 번에 관리해야 하는 일이 있을 때 ScriptableObject를 사용하면 유용하게 사용할 수 있을 것으로 생각됩니다.
728x90
'Unity' 카테고리의 다른 글
[Unity] 오브젝트 생성과 파괴는 뭐야? (0) | 2020.11.19 |
---|---|
[Unity] 유니티에서 Enum 변수를 사용하는 법 (0) | 2020.11.11 |
[Unity] GetCurrentAnimatorStateInfo로 애니메이션 상태 체크하기 (0) | 2020.06.23 |
[Unity] 공중에 있는 땅 통과 후 착지 구현 (0) | 2020.06.15 |
[Unity] Video Player 페이드 인, 페이드 아웃 효과 만들기 (2) (0) | 2020.06.13 |