טעינת סצנה
חלק מהיחידה בונים משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 17 מתוך 56.
משחק Unity מחולק לסצנות: תפריט, כל שלב, כתוביות הסיום. כל סצנה היא קובץ בפני עצמו עם אובייקטים משלה, וסקריפט עובר לסצנה אחרת באמצעות SceneManager.LoadScene, מתוך מרחב השמות UnityEngine.SceneManagement. כפתור Play בתפריט הזה, שמחובר דרך Inspector, פותח את שלב Forest:
using UnityEngine;
using UnityEngine.SceneManagement;
public class MainMenu : MonoBehaviour
{
public void Play()
{
SceneManager.LoadScene("Forest");
}
}Unity יכולה לטעון רק סצנות שנמצאות ברשימת הסצנות של ה-build: ב-Unity 6 זה נמצא תחת File > Build Profiles, באזור Scene List (בגרסאות ישנות יותר החלון נקרא Build Settings). השם חייב להיות זהה בדיוק לשם קובץ הסצנה. אם סצנה חסרה מהרשימה, או שיש שגיאת הקלדה כמו "Forrest", שום דבר לא נטען וה-Console מציגה שגיאה שמתחילה ב-Scene 'Forrest' couldn't be loaded ומציינת שהסצנה לא נוספה ל-build, והמשחק נשאר בתפריט.
המעבר אינו מיידי. שאר הפריים הנוכחי מתבצע תחילה, ולכן שורות אחרי LoadScene עדיין רצות; בתחילת הפריים הבא Unity הורסת את כל האובייקטים של הסצנה הישנה ובונה את הסצנה החדשה, שהסקריפטים שלה מתחילים מחדש עם Awake ו-Start.
אתגר
קלמרכז עם שני שערים. בבנייה הזו יש שלוש סצנות: Hub (הראשונה), Desert ו-Glacier. ב-Hub, שער אחד מוביל ל-Desert ואחד ל-Glacier, ובכל אחד מהם יש שער חזרה ל-Hub. לכל שער יש את הסקריפט Portal, ובחלון Inspector מוגדר בו sceneName של הסצנה שאליה הוא מוביל. מקשי החצים מזיזים את השחקן (מוכן).
כתבו את Portal.cs: כשהשחקן (עם התג Player) נכנס לשער בהליכה, יש לטעון את הסצנה ששמה מצוין ב-sceneName של אותו שער.
לחצו על Play, בקרו בשני המקומות ואז לחצו על Check.
נסו בעצמכם
using UnityEngine;
public class Portal : MonoBehaviour
{
public string sceneName;
// כאשר השחקן נכנס, טען את הסצנה ששמה sceneName
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה בונים משחקים אמיתיים
10פרויקט: משחק פלטפורמה תלת־ממדי
המסלולפלטפורמות נעות