Menu
CoddyTech
flag Ar iconالعربيةdown icon

مراجعة: جدول الغنائم

جزء من قسم هندسة الألعاب في Unity في رحلة Unity على Coddy. الدرس 18 من 50.

challenge icon

التحدي

سهل

يُسقط صندوق كنز عنصرًا واحدًا في كل مرة تضغط فيها على Space. اكتب LootChest.cs. يملأ مشهد اللعبة جدول الغنائم في Inspector، لذا يجب أن تتطابق الأسماء:

  • تعداد 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) الجدول بالترتيب، لقيمة roll من 0 إلى ما قبل TotalWeight()، بحيث يغطي كل عنصر عددًا من قيم roll يساوي وزنه: القيم من 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