עמדת יצירה
חלק מהיחידה ארכיטקטורת משחקים ב-Unity במסלול ה-Unity של Coddy. שיעור 62 מתוך 64.
במשחק הישרדות, שולחן יצירה הופך את מה שאוספים לדברים שאפשר להשתמש בהם. שני כפתורים אוספים עץ ואבן, ושלושה מתכונים הופכים אותם לדברים נוספים: שתי יחידות עץ יוצרות קרש, קרש אחד ושתי יחידות אבן יוצרים גרזן, וארבעה קרשים יוצרים רפסודה. אפשר ללחוץ על כפתור של מתכון רק כאשר יש במלאי את כל מה שהמתכון דורש, והיצירה צורכת את הפריטים האלה. המתכונים הם נתונים שממלאים בשולחן דרך Inspector, כך שלמתכון חדש לא נדרש קוד חדש. המלאי מודיע על כל שינוי לכל מי שמאזין, והוא נשמר כ-JSON בכל פעם שהוא משתנה, כך ששום דבר לא הולך לאיבוד כשעוזבים את המשחק.
שני שיעורים בונים את זה. בשיעור הזה כותבים את Inventory, על ה-Backpack; המתכונים של שולחן היצירה יגיעו בהמשך.
אתגר
קשהחלק 1: השלימו את Inventory; מערכת האיסוף מוכנה.
- הוסיפו את
ItemStackשניתן לסריאליזציה (itemו־countציבוריים) ואתInventoryData(List<ItemStack> stacksציבורי). - השלימו את
Count, אתAdd, אתRemove(מחסנית שמגיעה ל־0 מוסרת) ואתDescribe:Wood 3, Plank 1אוempty. - כל שינוי שומר את הנתונים ב־
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
1רכיבים, לא היררכיות
רכיבים קטניםסקריפט בסיסי לאויברכיבים מופשטיםרכיבים שפועלים יחדחזרה: צריח מודולריחזרה: תותח כפול4נתונים שעברו סריאליזציה
מחלקות שניתנות לסריאליזציהרשימות ב־Inspectorטיפוסי Enum ב־Inspectorחזרה: טבלת שללהגרלת השלל2ממשקים ב-Unity
IDamageableממשקים ו-TryGetComponentGetComponentsסיכום: מקש אינטראקציהסיכום: הקרוב ביותר בטווחתרגלו בעצמכם: Unity אונליין