Menu
CoddyTech

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.

challenge icon

Görev

Kolay

Sandığın açılmasını ve ağırlığa göre bir eşya düşürmesini Space tuşuna bağla.

  1. public LootEntry Pick(int roll) metodunu yaz: table üzerinde ilerle; roll değeri ağırlığından küçükse girdiyi döndür, değilse ağırlığı çıkar. Döngüden sonra return null;.
  2. Space tuşuna basıldığında Random.Range(0, TotalWeight()) ile seçim yap, prefab nesnesini sandığın 1.5 birim üzerinde oluştur ve entry.rarity + ": " + entry.itemName ifadesini 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
}
quiz iconKendini test et

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

Kendi başına pratik yap: Unity playground