센로그

[Unity] Scriptable Object (스크립터블 오브젝트) 본문

게임/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)와 같이 싱글톤 형태로도 사용하는 듯 하다.

Comments