Menu
CoddyTech

Ôn tập: Quay vật phẩm

Thuộc phần Kiến trúc trò chơi trong Unity trong hành trình Unity của Coddy. Bài học 22 trên 64.

Chương này đã đưa các lớp có thể tuần tự hóa, danh sách và kiểu liệt kê vào Inspector, và bảng của chiếc rương sử dụng cả ba. Giờ chiếc rương sẽ chọn vật phẩm từ bảng đó.

challenge icon

Thử thách

Dễ

Nhấn Space để mở rương và rơi ra một vật phẩm dựa trên trọng số.

  1. Viết public LootEntry Pick(int roll): duyệt qua table; trả về mục khi roll nhỏ hơn trọng số của mục đó, nếu không thì trừ đi trọng số. Sau vòng lặp (loop), dùng return null;.
  2. Khi nhấn Space, chọn mục bằng Random.Range(0, TotalWeight()), tạo prefab của mục đó ở vị trí cao hơn rương 1.5 đơn vị và ghi nhật ký entry.rarity + ": " + entry.itemName.

Nhấn Chơi rồi nhấn Space: thường sẽ nhận được Common: Apple hoặc Bread. Sau đó nhấn Kiểm tra.

Tự làm thử

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;
    }

    // Viết Pick(int roll) và phần mở rương bằng phím Space ở đây
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến trúc trò chơi trong Unity

Tự luyện tập: Playground Unity