Tekrar: Ganimeti At
Coddy'nin Unity Journey'sinin Unity'de Oyun Mimarisi bölümünün bir parçası. Ders 22 / 64.
Bu bölümde Inspector'da serileştirilebilir sınıflar, listeler ve enum'lar kullanıldı; sandığın tablosunda da bu üçünün hepsi var. Artık sandık bu tabloya göre rastgele seçim yapıyor.
Görev
KolaySandığın açılmasını ve ağırlığa göre bir eşya düşürmesini Space tuşuna bağla.
public LootEntry Pick(int roll)metodunu yaz:tableüzerinde ilerle;rolldeğeri ağırlığından küçükse girdiyi döndür, değilse ağırlığı çıkar. Döngüden sonrareturn null;.- Space tuşuna basıldığında
Random.Range(0, TotalWeight())ile seçim yap,prefabnesnesini sandığın 1.5 birim üzerinde oluştur veentry.rarity + ": " + entry.itemNameifadesini günlüğe yaz.
“Oyna” düğmesine bas ve Space tuşuna bas: çoğunlukla Common: Apple veya Bread düşer. Ardından “Kontrol et” düğmesine bas.
Kendin dene
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) ve sandığı Space ile açma işlemi buraya gelecek
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Unity'de Oyun Mimarisi bölümündeki tüm dersler
1Kalıtım Değil, Bileşenler
Küçük BileşenlerTemel Düşman Script'iSoyut BileşenlerBirlikte Çalışan BileşenlerTekrar: Modüler TaretTekrar: Çift Namlulu Top4Serileştirilmiş Veriler
Serileştirilebilir SınıflarInspector'da ListelerInspector'da Enum'larTekrar: Ganimet TablosuTekrar: Ganimeti At2Unity'de Arayüzler
IDamageableArayüzler ve TryGetComponentGetComponentsÖzet: Etkileşim TuşuÖzet: Erişim Mesafesindeki En Yakın5ScriptableObjects
Veri VarlıklarıSilah İstatistikleriOrtak AyarlarRüzgârı KaydetVeri Olarak DalgalarTekrar: Eşya VeritabanıTekrar: Dükkândan Satın Al8Yeniden Kullanılabilir Kod
Genişletme MetotlarıGeneric SingletonGeneric YardımcılarTekrar: FindNearestKendi başına pratik yap: Unity playground