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

게임 규칙 설계: 성공·실패·점수·목숨 조건을 명확하게 만들기

난이도초급 프로젝트
예상 시간45분
선수지식3강 프로젝트 구조

4강. 게임 규칙 설계: 성공·실패·점수·목숨 조건을 명확하게 만들기

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

점수와 목숨 수치가 여러 스크립트에 흩어지면 밸런스 변경이 코드 수정이 됩니다. 변하지 않는 설계 규칙과 플레이 중 상태를 분리합니다.

2. 학습 목표

3. 핵심 개념

ScriptableObject는 Project의 에셋으로 저장되는 공유 설계 데이터입니다. 시작 목숨·보너스 같은 규칙을 보관하지만 현재 점수나 남은 목숨처럼 매 플레이 바뀌는 상태는 세션 객체가 소유합니다. 배포된 빌드의 저장 파일 용도가 아닙니다.

4. 단계별 실습

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

GameRules.cs
using UnityEngine;

namespace DeliverySorter.Data
{
[CreateAssetMenu(fileName = "GameRules", menuName = "Delivery Sorter/Game Rules")]
public sealed class GameRules : ScriptableObject
{
[field: SerializeField, Min(1)] public int StartingLives { get; private set; } = 3;
[field: SerializeField, Min(0)] public int WrongSortPenalty { get; private set; } = 1;
[field: SerializeField, Min(1)] public int ComboStep { get; private set; } = 3;
[field: SerializeField, Min(0)] public int ComboBonus { get; private set; } = 50;
}
}

Unity Editor 작업: Assets/_Project/Data에서 Create → Delivery Sorter → Game Rules로 DefaultGameRules.asset을 만듭니다.

Inspector 연결 작업: 새 빈 GameObject GameSession을 만들되 아직 모든 기능을 붙이지 않습니다. 다음 강의에서 세션 컴포넌트의 rules 필드에 에셋을 연결할 예정입니다.

테스트 작업: Starting Lives를 0과 음수로 입력해 Inspector가 1 이상으로 제한하는지 확인하고, 에셋 값을 바꿔도 C# 재컴파일이 일어나지 않는지 봅니다.

5. 코드가 동작하는 이유

CreateAssetMenu가 규칙 인스턴스를 Project 에셋으로 만들고 [Min]이 Inspector 입력 실수를 줄입니다. 프로퍼티의 private setter는 다른 런타임 코드가 규칙을 임의로 변경하지 못하게 합니다.

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

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

게임 규칙 설계: 성공·실패·점수·목숨 조건을 명확하게 만들기 미니 퀴즈

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

0 / 2
  1. 문제 1“게임 규칙 설계: 성공·실패·점수·목숨 조건을 명확하게 만들기” 기능을 확장하기 좋은 구조로 설명한 것은 무엇인가요?
  2. 문제 2“게임 규칙 설계: 성공·실패·점수·목숨 조건을 명확하게 만들기”에서 ‘수치를 여러 MonoBehaviour에 복사’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

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

4강. 게임 규칙 설계: 성공·실패·점수·목숨 조건을 명확하게 만들기 미완료 상태