Scriptable Object
- 간단한 데이터 컨테이너이며, 오브젝트에 붙이지 않고 에셋으로 사용 가능.
- 코드랑 데이터를 깨끗하게 분리할 수 있음.
- 프로젝트 뷰에 있는 에셋이기 때문에 재사용성이 큼.
(여러 씬에서 동시에 공유하며 사용가능.)
- 인스펙터에서 데이터만 편하게 수정·테스트 가능.
(디자이너나, 기획자가 코드를 몰라도 쉽게 수정이 가능하여, 협업에 도움이 됨)
- 라이프사이클이 씬에 묶여 있지 않아서 관리가 편함
( ScriptableObject는 에셋이라, 씬이 바뀌어도 그대로 유지됨.)
생성 및 사용방법
1. 새 ScriptableObject 스크립트 만들기
1) 폴더 만들기
- Assets/2.Scripts/Data 같은 폴더를 하나 만들어두는 걸 추천.

2) C# 스크립트 기본 틀
- MonoBehaviour 대신 ScriptableObject를 상속
- [CreateAssetMenu(...)] 어트리뷰트 를 작성
( fileName : 새로 만들 때 기본 파일 이름, menuName : Create 메뉴에 어떻게 표시할지 경로 )
2. ScriptableObject 에셋 실제로 만들기
1. Project 창에서 원하는 폴더로 이동
2. 폴더 안 빈 공간에서 우클릭
(예시 : Create -> Game -> Round Data)

3. 에셋 생성 완료

3. MonoBehaviour에서 ScriptableObject 사용하기
1) 하이어라키에서, 오브젝트 안에 있는 컴포넌트에 해당 에셋을 할당하기

Mono Behaviours 과 Scriptable Object 차이
생명주기의 차이
ScriptableObject는 MonoBehaviour처럼 모든 생명주기 함수를 다 쓰지 않음.

- Awake, Start, Update 는 ScriptableObject의 생명주기 함수로 동작하지 않음

'게임 개발(유니티) > 공부사항' 카테고리의 다른 글
| 모바일 화면 고정 / DOTween 기능 (1) | 2025.12.17 |
|---|---|
| Lunar-Assault_Recon_ 공부사항 #4 (0) | 2025.10.06 |
| Lunar-Assault_Recon_ 공부사항 #3 (0) | 2025.10.05 |
| Lunar-Assault_Recon_ 공부사항 #2 (0) | 2025.10.04 |
| Lunar-Assault_Recon_ 공부사항 #1 (0) | 2025.10.01 |