Menu
CoddyTech

עמדת יצירה

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

במשחק הישרדות, שולחן יצירה הופך את מה שאוספים לדברים שאפשר להשתמש בהם. שני כפתורים אוספים עץ ואבן, ושלושה מתכונים הופכים אותם לדברים נוספים: שתי יחידות עץ יוצרות קרש, קרש אחד ושתי יחידות אבן יוצרים גרזן, וארבעה קרשים יוצרים רפסודה. אפשר ללחוץ על כפתור של מתכון רק כאשר יש במלאי את כל מה שהמתכון דורש, והיצירה צורכת את הפריטים האלה. המתכונים הם נתונים שממלאים בשולחן דרך Inspector, כך שלמתכון חדש לא נדרש קוד חדש. המלאי מודיע על כל שינוי לכל מי שמאזין, והוא נשמר כ-JSON בכל פעם שהוא משתנה, כך ששום דבר לא הולך לאיבוד כשעוזבים את המשחק.

שני שיעורים בונים את זה. בשיעור הזה כותבים את Inventory, על ה-Backpack; המתכונים של שולחן היצירה יגיעו בהמשך.

challenge icon

אתגר

קשה

חלק 1: השלימו את Inventory; מערכת האיסוף מוכנה.

  1. הוסיפו את ItemStack שניתן לסריאליזציה (item ו־count ציבוריים) ואת InventoryData (List<ItemStack> stacks ציבורי).
  2. השלימו את Count, את Add, את Remove (מחסנית שמגיעה ל־0 מוסרת) ואת Describe: Wood 3, Plank 1 או empty.
  3. כל שינוי שומר את הנתונים ב־inventory.json שב־Application.persistentDataPath ומפעיל את Changed; ‏Awake טוענת אותם.

לחצו על "שחק", אספו ואז שחקו שוב: העץ חוזר. לאחר מכן לחצו על "בדיקה".

נסו בעצמכם

using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

// ItemStack ו-InventoryData מופיעים כאן

public class Inventory : MonoBehaviour
{
    public event Action Changed;

    void Awake()
    {
        // טען את inventory.json אם הוא קיים
    }

    public int Count(string item)
    {
        return 0;
    }

    public void Add(string item, int amount)
    {
    }

    public void Remove(string item, int amount)
    {
    }

    public string Describe()
    {
        return "empty";
    }
}

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

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