Menu
CoddyTech

복습: 전리품 테이블

Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 50개 중 18번째.

challenge icon

챌린지

쉬움

보물 상자는 Space를 누를 때마다 아이템 하나를 떨어뜨립니다. LootChest.cs를 작성하세요. 씬에서 인스펙터에 전리품 테이블을 채우므로 이름이 일치해야 합니다.

  • Common, Rare, Epic, Legendary 순서로 구성된 Rarity 열거형.
  • 인스펙터에 표시할 수 있는 LootEntry 클래스. 문자열 itemName, GameObject prefab, Rarity rarity를 포함하며, 상자에는 table이라는 이름의 공개 List<LootEntry>가 있어야 합니다. 씬의 테이블에는 Apple과 Bread(Common), Silver Ring(Rare), Dragon Egg(Epic), Golden Crown(Legendary)이 순서대로 들어 있습니다.
  • public int WeightOf(Rarity rarity)는 희귀도에 따라 항목의 가중치를 반환합니다. Common은 10, Rare는 4, Epic은 2, Legendary는 1입니다. public int TotalWeight()는 테이블 전체의 가중치를 합산합니다.
  • public LootEntry Pick(int roll)은 0부터 TotalWeight() 미만까지의 roll을 입력받아 테이블을 순서대로 순회하며, 각 항목에 가중치만큼의 roll 범위를 할당합니다. roll이 0~9이면 Apple, 10~19이면 Bread, 20~23이면 Silver Ring이 반환되는 식입니다.
  • Space를 누르면 Random.Range(0, TotalWeight())를 한 번 호출해 roll을 생성하고 해당 항목을 선택한 뒤, 상자보다 1.5유닛 위에 프리팹을 생성하고 희귀도와 이름을 Rare: Silver Ring과 같은 형식으로 로그에 출력합니다.

Play를 누르고, 상자를 몇 번 연 다음 Check를 누르세요.

직접 해보기

using System.Collections.Generic;
using UnityEngine;

public class LootChest : MonoBehaviour
{
}

Unity 게임 아키텍처의 모든 레슨