Menu
CoddyTech

Rangkuman: Acak Loot

Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 22 dari 64.

Bab ini menempatkan class yang dapat diserialisasi, list, dan enum di Inspector, dan tabel peti menggunakan ketiganya. Sekarang peti melakukan pengundian berdasarkan tabel itu.

challenge icon

Tantangan

Mudah

Buat tombol Space membuka peti dan menjatuhkan satu item berdasarkan bobot.

  1. Tulis public LootEntry Pick(int roll): telusuri table; kembalikan entry saat roll lebih kecil dari bobotnya, jika tidak, kurangi roll dengan bobot tersebut. Setelah perulangan, return null;.
  2. Saat Space ditekan, pilih dengan Random.Range(0, TotalWeight()), munculkan prefab-nya 1.5 unit di atas peti, lalu catat entry.rarity + ": " + entry.itemName.

Tekan tombol “Main” lalu Space: biasanya muncul Common: Apple atau Bread. Lalu tekan tombol “Periksa”.

Coba sendiri

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) dan kode untuk membuka peti dengan Space ditulis di sini
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Arsitektur Game di Unity

Latihan sendiri: Playground Unity