Menu
CoddyTech

חזרה: טבלת שלל

חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 18 מתוך 50.

challenge icon

אתגר

קל

תיבת אוצר מפילה פריט אחד בכל פעם שלוחצים על Space. כתבו LootChest.cs. הסצנה ממלאת את טבלת השלל שלה ב־Inspector, לכן השמות חייבים להתאים:

  • enum בשם Rarity עם Common, Rare, Epic ו־Legendary, בסדר הזה.
  • מחלקה בשם LootEntry שה־Inspector יכול להציג, עם מחרוזת itemName, אובייקט GameObject מסוג prefab ו־Rarity בשם rarity, ועל התיבה רשימה ציבורית List<LootEntry> בשם table. הטבלה של הסצנה מכילה את Apple ואת Bread (Common), את Silver Ring (Rare), את Dragon Egg (Epic) ואת Golden Crown (Legendary), בסדר הזה.
  • public int WeightOf(Rarity rarity) מחזירה את המשקל של רשומה לפי הנדירות שלה: Common 10, Rare 4, Epic 2, Legendary 1. public int TotalWeight() מחברת את המשקלים של הטבלה כולה.
  • public LootEntry Pick(int roll), עבור גלגול מ־0 ועד, אך לא כולל, TotalWeight(), עוברת על הטבלה לפי הסדר, כאשר כל רשומה מכסה מספר גלגולים השווה למשקל שלה: גלגולים 0 עד 9 נותנים את Apple, 10 עד 19 את Bread, 20 עד 23 את Silver Ring, וכן הלאה.
  • לחיצה על Space מגרילה פעם אחת באמצעות Random.Range(0, TotalWeight()), בוחרת את הרשומה המתאימה, יוצרת את ה־prefab שלה 1.5 יחידות מעל התיבה ומתעדת את הנדירות ואת השם שלה, כמו Rare: Silver Ring.

לחצו על Play, פתחו את התיבה כמה פעמים, ואז לחצו על Check.

נסו בעצמכם

using System.Collections.Generic;
using UnityEngine;

public class LootChest : MonoBehaviour
{
}

כל השיעורים ביחידה ארכיטקטורת משחקים ב-Unity