Scriptable Object 와 프리팹의 차이점 :
ScriptableObject는 "데이터를 위한 클래스",
**Prefab은 "게임에 등장하는 오브젝트의 청사진"**입니다.
🔷 ScriptableObject는 이런 데 유용해요
- 게임 내 공통 데이터 저장 (예: 무기 정보, 속성, 스킬 계수)
- 씬 간 데이터 공유
- 런타임에서 여러 오브젝트가 같은 데이터 참조
- 메모리 절약 / 참조 관리 효율
✅ ScriptableObject를 사용하는 게 적합한 상황
상황설명예시
| 🔁 여러 오브젝트가 같은 데이터를 공유할 때 | 데이터 일관성을 유지하면서 메모리 절약 | 모든 슬라임이 같은 스탯(HP, 속도 등)을 사용 |
| ⚙️ 자주 바뀌는 설정을 에디터에서 편하게 수정하고 싶을 때 | 프리팹 열지 않고도 직접 데이터 수정 가능 | 전체 게임 설정, 난이도 수치, 퀘스트 조건 |
| 📦 데이터를 코드에서 독립시켜 재사용하고 싶을 때 | 데이터와 로직을 분리 | 무기 정보, NPC 대사, 아이템 효과 |
| 🧪 테스트나 밸런싱 시, 값만 바꿔서 결과를 실험하고 싶을 때 | 코드 수정 없이 수치만 조정 | 공격력 10 → 15로 바꿔보기 등 |
🔶 Prefab은 이런 데 유용해요
- 게임에 반복적으로 등장하는 오브젝트를 미리 만들어놓기
- Instantiate로 씬에 동적으로 배치
- 기본적으로 MonoBehaviour를 포함한 GameObject
✅ Prefab만으로 충분한 상황
상황설명예시
| 🧱 게임에 등장할 실제 오브젝트를 생성할 때 | 눈에 보이고 동작하는 오브젝트 | 캐릭터, 몬스터, 총알, 트랩, UI 버튼 |
| 🧩 상태가 개별적이고 서로 다른 인스턴스가 필요한 경우 | 각각이 독립적인 동작을 가질 때 | 보스 슬라임 A, B가 각각 다른 체력 |
| 🎮 런타임에서 Instantiate로 배치하려는 경우 | 게임 씬에 배치해서 사용할 목적 | 보상 상자, 이펙트, 스킬 이펙트 오브젝트 |
| 💥 시각적, 물리적 상호작용이 필요한 경우 | Rigidbody, Collider 등 사용 시 | 떨어지는 바위, 발사체, 캐릭터 본체 등 |
--- Unity 실전 팁 ---
Shift + F 를 누르면 카메라를 현재 내가 보는 뷰로 정렬할 수 있음
간단한 데이터 수정으로 인한 리로르를 피하려면 프로젝트 설정에서 Enter Play Mode 옵션을 바꿔줘
플레이 모드에서 수정한 내용을 원본에 적용할 수 없으니 플레이 모드를 구분하기 쉬운 색으로 변경하려면 preference 세팅에서 PlayColor Tint를 변경해라
Lov Viewer : 디버깅 로그를 확인할 수 있는 유니티 무료 에셋
에디터가 멈춰서 직전에 작업한 내용들을 백업한 파일이 프로젝트 폴더 내 temp 폴더 안에서 backup이 확장자로 붙은 파일을 찾아 unity로 변경 후 에셋 폴더에 추가
'[내일배움캠프 Unity 9기]' 카테고리의 다른 글
| 05/19 TIL 스카이 박스의 애니메이션 설정, 조명 처리 (1) | 2025.05.19 |
|---|---|
| 05/16 TIL - 유니티 프로젝트 숙련 강의 수강 (1) | 2025.05.16 |
| 05/14 TIL - 람다식 클로저, RigidBody 없는 Collider의 트리거 (0) | 2025.05.14 |
| 05/13 TIL c#에서의 구조체와 클래스의 차이 (0) | 2025.05.13 |
| 05/12 TIL - 프로젝트 작업 방향성 (0) | 2025.05.12 |