게임/Unity, C#
[Unity] Scriptable Object (스크립터블 오브젝트)
seeyoun
2023. 6. 30. 11:51
◆ Scriptable Object
Unity 에서 흔히 아는 MonoBehaviour을 상속하는 클래스는 동작을 구현하는 역할을 한다.
이외에도 ScriptableObject를 상속하는 클래스를 만들 수 있는데, 이는 데이터 컨테이너 역할을 한다.
◆ Scriptable Object 사용법
■ 생성
ScriptableObject의 인스턴스는 다음과 같이 에셋으로 저장해 사용할 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "Apple Data", menuName = "Scriptable Object/Apple", order = int.MaxValue)]
public class Apple : ScriptableObject
{
[SerializeField]
private string appleName;
public string AppleName{get;}
[SerializeField]
private int energy;
public int Energy { get; }
}
이런 방식으로 데이터를 만들고 관리할 수 있다.
■ 사용
Apple형 객체를 만들어서 ScriptableObject 객체를 할당하면, 바로 접근 가능하다.
public class ApplePower : MonoBehaviour
{
public Apple apple;
void Start()
{
Debug.Log("apple power : "+apple.Energy);
}
}
이런 식으로 apple 객체를 만들고
할당하여 접근할 수 있다.
Apple Data의 에너지가 0 이므로
실행하면 0이 나온다.
참고) 다음 링크(https://drehzr.tistory.com/1501?category=362808)와 같이 싱글톤 형태로도 사용하는 듯 하다.