Menu
CoddyTech

הגרלת השלל

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

בפרק הזה הצגנו במחווט את המחלקות הסריאליזביליות, הרשימות וה־enum, והטבלה של התיבה משתמשת בשלושתם. עכשיו התיבה מגרילה מתוכה.

challenge icon

אתגר

קל

הקישו על מקש הרווח כדי לפתוח את התיבה ולהפיל פריט אחד לפי משקלו.

  1. כתבו public LootEntry Pick(int roll): עברו על table; החזירו את הרשומה כשהערך של roll קטן מהמשקל שלה, אחרת החסירו את המשקל. אחרי הלולאה, return null;.
  2. בלחיצה על מקש הרווח, בחרו פריט באמצעות Random.Range(0, TotalWeight()), צרו מופע של prefab במרחק 1.5 יחידות מעל התיבה והציגו ביומן את entry.rarity + ": " + entry.itemName.

לחצו על ״שחק״ ועל מקש הרווח: לרוב תקבלו Common: Apple או Bread. לאחר מכן לחצו על ״בדיקה״.

נסו בעצמכם

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) ואת פתיחת התיבה באמצעות Space
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

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

תרגלו בעצמכם: Unity אונליין