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

랜덤 규칙 다듬기: 같은 택배가 4회 이상 연속되지 않게 하기

난이도초급 프로젝트
예상 시간50분
선수지식12강 시간 기반 난이도

13강. 랜덤 규칙 다듬기: 같은 택배가 4회 이상 연속되지 않게 하기

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

완전 무작위 생성은 같은 택배가 길게 이어져 공정하지 않게 느껴질 수 있습니다. 네 번째 선택에서는 직전 종류를 후보에서 제외합니다.

2. 학습 목표​

3. 핵심 개념​

같은 종류가 4회 이상 나오지 않는다는 뜻은 최대 3회까지 허용한다는 의미입니다. 조건을 만족할 때까지 재추첨하는 while 문은 후보가 하나면 끝나지 않습니다. 가능한 후보 목록을 먼저 만들고 한 번 뽑습니다.

4. 단계별 실습​

C# · 파일 경로: Assets/_Project/Scripts/Gameplay/PackageSelector.cs

PackageSelector.cs
using System.Collections.Generic;
using DeliverySorter.Data;
using UnityEngine;

namespace DeliverySorter.Gameplay
{
public sealed class PackageSelector : MonoBehaviour
{
[SerializeField] private PackageDefinition[] definitions;
[SerializeField, Min(1)] private int maxConsecutive = 3;
private PackageDefinition last;
private int streak;
private readonly List<PackageDefinition> candidates = new();

public PackageDefinition Next()
{
candidates.Clear();
foreach (PackageDefinition definition in definitions)
{
if (definition == null) continue;
if (definitions.Length > 1 && streak >= maxConsecutive && definition == last) continue;
candidates.Add(definition);
}

if (candidates.Count == 0) return null;
PackageDefinition selected = candidates[Random.Range(0, candidates.Count)];
streak = selected == last ? streak + 1 : 1;
last = selected;
return selected;
}

public void ResetSequence() { last = null; streak = 0; }
}
}

Unity Editor·Inspector 작업: PackageSelector GameObject에 두 정의 에셋과 Max Consecutive 3을 연결하고 Spawner가 배열에서 직접 뽑는 대신 selector.Next()를 호출합니다.

테스트 작업: 1,000번 선택한 Id를 기록해 같은 Id가 4회 연속 없는지 검사합니다. 에셋 하나, null 포함, 빈 배열에서도 무한 반복이 없어야 합니다.

5. 코드가 동작하는 이유​

연속 제한에 도달하면 직전 에셋만 후보에서 제외합니다. 후보 하나 상황은 제외 조건을 적용하지 않아 정상 반환하고, 빈 후보는 null로 명시해 Spawner가 생성을 건너뜁니다.

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

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

랜덤 규칙 다듬기: 같은 택배가 4회 이상 연속되지 않게 하기 미니 퀴즈

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

0 / 2
  1. 문제 1“랜덤 규칙 다듬기: 같은 택배가 4회 이상 연속되지 않게 하기”에서 다음 단계로 넘어가기 전에 확인할 핵심은 무엇인가요?
  2. 문제 2“랜덤 규칙 다듬기: 같은 택배가 4회 이상 연속되지 않게 하기”의 작업 기준으로 ‘조건을 만족할 때까지 무한 재추첨’을 진단하거나 바로잡은 선택은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

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

13강. 랜덤 규칙 다듬기: 같은 택배가 4회 이상 연속되지 않게 하기 미완료 상태