Print Friendly and PDF

유니티/유니티 이론

[이론] Scriptable Object

나는야 개발자 2025. 6. 10. 07:37
반응형

Scriptable Object란?

- 데이터를 저장하는데 사용되는 데이터만 저장하는 데이터 컨테이너

- 메모리 공간 절약

- 런타임에 동적으로 생성/삭제 가능

- 런타임 시 ScriptableObject의 값을 변경하면 앱에 즉시 업데이트 됨(앱을 종료해도 변경한 값이 그대로 유지됨)

 

사용방법

using UnityEngine;

[CreateAssetMenu(fileName = "Data", menuName = "ScriptableObjects/SpawnManagerScriptableObject", order = 1)]
public class SpawnManagerScriptableObject : ScriptableObject
{
    public string prefabName;

    public int numberOfPrefabsToCreate;
    public Vector3[] spawnPoints;
}

- ScriptableObject를 상속받은 후 CreateAssetMene속성으로 생성

 

ScriptableObject vs Mono Begaviours

 

  라이프 사이클 저장 방식 구성
Scriptable Object Awake -> OnEnable -> Reset -> OnDisable -> OnDestory

간단한 구조로 되어 있음
에셋으로 저장되며 사용하기 위해선 Mono Begaviours에 참조를 하도록 해야함  굉장히 간단하게 되어 있음
Mono Begaviours Awake -> OnEnable -> Start -> FixedUpdate -> Update ... 등등 바로 컴포넌트로 할당 가능 생성만해도 여러 정보들이 달려 있어 구성이 복잡함

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

Q. 메모리가 절약되는 이유? 

A. 클래스는 맴버변수 만큼 메모리가 할당이 되고 그걸 생성하게 되면 생성된 갯수만큼 할당이 된다.

Scriptable Object는 다르다. 하나의 프리팹에 할당 후 생성하면 Scriptable Object가 생성된 갯수 만큼 할당하는 것이 아닌 하나의 ScriptableObject에 생성된 모든 오브젝트에 연결되어 있어 메모리 사용에 효율적이라고 함 

즉, 쉽게 얘기하면 하나의 ScriptableObject가 여러 객체에 공유되므로 효율적임

 

Q. XML, JSON와 ScriptableObject와의 차이점

A. XML, JSON는 공용 포맷이고 ScriptableObject는 유니티에서 사용할 수 있는 데이터 컨테이너다

A. XML, JSON는 외부에서 편집하기에 편하지만 유니티 내부에선 불편함

A. ScriptableObject는 외부에선 불편하지만 Editor에선 쉽게 작동함

 

Q. ScriptableObject와 XML, JSON과의 성능 차이

A. JSON과 XML을 런타임 도중에 사용하기 위해선 텍스트 불러오기 -> 파싱 하는 과정에서 오버헤드가 발생함

A. ScriptableObject는 유니티와 직렬화로 통합되어 있어 파싱하지 않아도 되기 때문에 빠른로딩과 오버헤드가 발생하지 않는다.

 

참고자료

- 유니티TIPS

 

- https://unity3dperformance.com/index.php/2024/10/30/json-vs-scriptableobjects/

 

Loading Data in Unity: JSON vs ScriptableObject - Unity3D Performance Blog

Meta Description: Explore the performance differences between loading data from JSON files and ScriptableObjects in Unity3D. Discover optimization techniques for better gameplay on mobile devices.

unity3dperformance.com

- https://discussions.unity.com/t/what-are-the-pros-and-cons-of-scriptableobjects-vs-json-for-data-files/200754/3

 

반응형

'유니티 > 유니티 이론' 카테고리의 다른 글

[이론] Addressable  (0) 2025.06.15
[이론] UniTask  (3) 2025.06.12
[이론] async/await  (0) 2025.06.11
[이론] 코루틴  (0) 2025.06.11
[이론] 생명주기(라이프사이클)  (0) 2025.06.08