복습: 전리품 테이블
Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 50개 중 18번째.
챌린지
쉬움보물 상자는 Space를 누를 때마다 아이템 하나를 떨어뜨립니다. LootChest.cs를 작성하세요. 씬에서 인스펙터에 전리품 테이블을 채우므로 이름이 일치해야 합니다.
Common,Rare,Epic,Legendary순서로 구성된Rarity열거형.- 인스펙터에 표시할 수 있는
LootEntry클래스. 문자열itemName, GameObjectprefab, Rarityrarity를 포함하며, 상자에는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
{
}