본문으로 건너뛰기
게임 프로젝트 기초집LESSON 06

택배 데이터 설계: ScriptableObject로 종류·점수·표시 규칙 관리하기

난이도초급 프로젝트
예상 시간45분
선수지식5강 플레이 화면

6강. 택배 데이터 설계: ScriptableObject로 종류·점수·표시 규칙 관리하기

1. 이번 강의에서 해결할 문제

Blue와 Orange 분기를 여러 스크립트에 쓰면 새 종류 추가 때 생성·판정·UI 코드를 모두 고쳐야 합니다. 택배별 규칙을 에셋 하나로 묶습니다.

2. 학습 목표

3. 핵심 개념

ScriptableObject는 MonoBehaviour처럼 GameObject에 붙이지 않고 Project 에셋으로 만듭니다. 여러 택배 인스턴스가 읽기 전용 정의를 공유하므로 종류마다 Prefab을 복제하지 않아도 됩니다. 런타임 점수와 현재 위치는 데이터 에셋에 기록하지 않습니다.

4. 단계별 실습

C# · 파일 경로: Assets/_Project/Scripts/Data/PackageDefinition.cs

PackageDefinition.cs
using UnityEngine;

namespace DeliverySorter.Data
{
[CreateAssetMenu(fileName = "Package", menuName = "Delivery Sorter/Package Definition")]
public sealed class PackageDefinition : ScriptableObject
{
[field: SerializeField] public string Id { get; private set; } = "blue";
[field: SerializeField] public string DisplayName { get; private set; } = "파란 택배";
[field: SerializeField] public Sprite Sprite { get; private set; }
[field: SerializeField] public Color Color { get; private set; } = Color.blue;
[field: SerializeField, Min(0)] public int Score { get; private set; } = 100;
[field: SerializeField, Min(0.1f)] public float SpeedMultiplier { get; private set; } = 1f;
}
}

Unity Editor 작업: BluePackage.asset, OrangePackage.asset을 만들고 서로 다른 Id, 이름, 색, 점수를 입력합니다. 직접 만든 Sprite가 없으면 기본 Square를 사용합니다.

Inspector 연결 작업: 에셋의 Sprite가 비어 있을 때 색상만으로도 표시할 계획을 정합니다. 무료 에셋은 Assets/_Project/Docs/ThirdPartyAssets.md에 출처와 라이선스를 기록합니다.

테스트 작업: 두 에셋의 Id가 중복되지 않고 Score와 SpeedMultiplier가 음수가 되지 않는지 확인합니다.

5. 코드가 동작하는 이유

각 에셋은 같은 C# 타입이지만 서로 다른 직렬화 값을 갖습니다. Prefab은 생성될 때 정의를 받아 Sprite·색·점수 규칙을 적용하므로 종류 추가가 코드 분기로 이어지지 않습니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

택배 데이터 설계: ScriptableObject로 종류·점수·표시 규칙 관리하기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“택배 데이터 설계: ScriptableObject로 종류·점수·표시 규칙 관리하기”의 역할과 의존성을 판단하는 올바른 기준은 무엇인가요?
  2. 문제 2“택배 데이터 설계: ScriptableObject로 종류·점수·표시 규칙 관리하기”에서 ‘Id를 비우거나 중복’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

6강. 택배 데이터 설계: ScriptableObject로 종류·점수·표시 규칙 관리하기 미완료 상태