Menu
CoddyTech

Özet: Ganimet Tablosu

Coddy'nin Unity Journey'sinin Unity'de Oyun Mimarisi bölümünün bir parçası. Ders 18 / 50.

challenge icon

Görev

Kolay

Bir hazine sandığı, Boşluk tuşuna her bastığında bir eşya düşürür. LootChest.cs dosyasını yaz. Sahne, ganimet tablosunu Inspector'da doldurur; bu yüzden adlar eşleşmelidir:

  • Sırasıyla Common, Rare, Epic ve Legendary değerlerini içeren bir Rarity enum'u.
  • Inspector'ın gösterebileceği bir LootEntry sınıfı; bu sınıfta bir string itemName, bir GameObject prefab ve bir Rarity rarity bulunmalı. Ayrıca sandıkta table adında herkese açık bir List<LootEntry> olmalı. Sahnenin tablosunda sırasıyla Apple ve Bread (Common), Silver Ring (Rare), Dragon Egg (Epic) ve Golden Crown (Legendary) bulunur.
  • public int WeightOf(Rarity rarity), bir girdinin ağırlığını nadirliğine göre verir: Common 10, Rare 4, Epic 2, Legendary 1. public int TotalWeight(), tablonun tamamındaki ağırlıkları toplar.
  • public LootEntry Pick(int roll), 0'dan TotalWeight() değerine kadar (bu değer dahil değil) bir zar atışı için tabloyu sırayla dolaşır; her girdi ağırlığı kadar zar atışını kapsar: 0 ile 9 arasındaki atışlar Apple'ı, 10 ile 19 arasındakiler Bread'i, 20 ile 23 arasındakiler Silver Ring'i verir ve bu şekilde devam eder.
  • Boşluk tuşu bir kez Random.Range(0, TotalWeight()) ile zar atar, o girdiyi seçer, prefab'ını sandığın 1.5 birim üstünde oluşturur ve nadirliğini ve adını Rare: Silver Ring biçiminde günlüğe yazar.

Play'e bas, sandığı birkaç kez aç, sonra Check'e bas.

Kendin dene

using System.Collections.Generic;
using UnityEngine;

public class LootChest : MonoBehaviour
{
}

Unity'de Oyun Mimarisi bölümündeki tüm dersler