Menu
CoddyTech

복습: 전리품 뽑기

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

이 장에서는 직렬화 가능한 클래스, 리스트, 열거형을 인스펙터에 넣었고, 상자의 표는 이 세 가지를 모두 사용합니다. 이제 상자에서 이 표를 기반으로 뽑기가 이루어집니다.

challenge icon

챌린지

쉬움

Space를 누르면 상자가 열리고 가중치에 따라 아이템 하나가 떨어지게 하세요.

  1. public LootEntry Pick(int roll)을 작성하세요. table을 순회하고, roll이 가중치보다 작으면 항목을 반환하고, 그렇지 않으면 가중치를 빼세요. 반복문이 끝난 뒤에는 return null;을 실행하세요.
  2. Space를 누르면 Random.Range(0, TotalWeight())로 항목을 선택하고, 상자보다 1.5 단위 위에 prefab을 생성한 다음 entry.rarity + ": " + entry.itemName을 로그에 기록하세요.

‘플레이’를 누른 뒤 Space를 누르세요. 대부분 Common: Apple 또는 빵이 나옵니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public enum Rarity { Common, Rare, Epic, Legendary }

[System.Serializable]
public class LootEntry
{
    public string itemName;
    public GameObject prefab;
    public Rarity rarity;
}

public class LootChest : MonoBehaviour
{
    public List<LootEntry> table;

    public int WeightOf(Rarity rarity)
    {
        switch (rarity)
        {
            case Rarity.Common: return 10;
            case Rarity.Rare: return 4;
            case Rarity.Epic: return 2;
            case Rarity.Legendary: return 1;
        }
        return 0;
    }

    public int TotalWeight()
    {
        int total = 0;
        foreach (LootEntry entry in table) total += WeightOf(entry.rarity);
        return total;
    }

    // 여기에 Pick(int roll)과 Space로 상자를 여는 기능을 구현합니다
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

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

직접 연습해 보세요: Unity 플레이그라운드