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.
Tantangan
MudahBuat tombol Space membuka peti dan menjatuhkan satu item berdasarkan bobot.
- Tulis
public LootEntry Pick(int roll): telusuritable; kembalikan entry saatrolllebih kecil dari bobotnya, jika tidak, kurangi roll dengan bobot tersebut. Setelah perulangan,return null;. - Saat Space ditekan, pilih dengan
Random.Range(0, TotalWeight()), munculkanprefab-nya 1.5 unit di atas peti, lalu catatentry.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
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Arsitektur Game di Unity
1Komponen, Bukan Hierarki
Komponen KecilSkrip Dasar MusuhKomponen AbstrakKomponen yang Bekerja BersamaRangkuman: Turret ModularRangkuman: Meriam Kembar4Data yang Diserialisasi
Class yang Dapat DiserialisasiList di InspectorEnum di InspectorRangkuman: Tabel LootRangkuman: Acak Loot2Antarmuka di Unity
IDamageableAntarmuka dan TryGetComponentGetComponentsRingkasan: Tombol InteractRingkasan: Terdekat dalam Jangkauan5ScriptableObjects
Aset DataStatistik SenjataPengaturan BersamaSelamatkan AnginGelombang sebagai DataRekap: database ItemBeli dari Toko8Kode yang Dapat Digunakan Kembali
Extension methodSingleton GenerikHelper GenerikUlasan: FindNearestLatihan sendiri: Playground Unity