본문으로 건너뛰기
게임 프로젝트 기초집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강. 게임 규칙 설계: 성공·실패·점수·목숨 조건을 명확하게 만들기 미완료 상태