השלב הבא
חלק מהיחידה בניית משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 19 מתוך 60.
לכל סצנה ברשימת הסצנות של הבנייה יש מספר, אינדקס הבנייה שלה: 0 לראשונה, 1 לבאה אחריה, וכן הלאה. LoadScene מקבלת את המספר הזה וגם שם, ו־SceneManager.sceneCountInBuildSettings מציין כמה סצנות יש ברשימה. מכיוון שהשלבים מסודרים ברשימה, השלב הבא הוא האינדקס של הסצנה הפעילה ועוד 1. היציאה הזאת טוענת אותו, ואחרי השלב האחרון היא עוצרת:
void OnTriggerEnter(Collider other)
{
if (!other.CompareTag("Player")) return;
int next = SceneManager.GetActiveScene().buildIndex + 1;
if (next < SceneManager.sceneCountInBuildSettings)
{
SceneManager.LoadScene(next);
}
else
{
Debug.Log("You finished the game!");
}
}כשיש ארבע סצנות, האינדקסים הם 0 עד 3 ו־sceneCountInBuildSettings הוא 4, ולכן בשלב האחרון next הוא 4, כלומר אחד מעבר לסוף. לכן הבדיקה היא next < sceneCountInBuildSettings: הפקודה LoadScene(4) לא תטען דבר ותציג ביומן את השגיאה של Unity: Cannot load scene: Invalid scene name (empty string) and invalid build index 4.
עכשיו סקריפט יציאה אחד משמש לכל השלבים, ואף אחד מהם לא מציין שם של סצנה. כדי להוסיף שלב, מוסיפים את הסצנה שלו לרשימה; כדי לשנות את הסדר, גוררים את הסצנות למקומות אחרים ברשימה.
אתגר
קלגרום לכל מטרה לפתוח את השלב הבא.
- ב־
Start(), הצג את"Level " + level + " of " + levelsבתוךlevelText:levelהוא ה־buildIndexשל הסצנה הפעילה, ו־levelsהואSceneManager.sceneCountInBuildSettings - 1. - ב־
OnTriggerEnter, עבור Player, טען אתbuildIndex + 1, או את0(התפריט) כאשר הערך אינו קטן מ־sceneCountInBuildSettings.
לחץ על "שחק" וסיים את כל שלושת השלבים: התפריט יופיע שוב. ואז לחץ על "בדיקה".
נסו בעצמכם
using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;
public class Goal : MonoBehaviour
{
public TMP_Text levelText;
void Start()
{
// הצג "Level 2 of 3": מספר השלב הזה וכמה שלבים יש בסך הכול
}
void OnTriggerEnter(Collider other)
{
// השחקן הגיע ליעד: טען את השלב הבא, או את התפריט לאחר השלב האחרון
}
}
כל השיעורים ביחידה בניית משחקים אמיתיים
10פרויקט: משחק פלטפורמה תלת־ממדי
המסלולפלטפורמות נעותתרגלו בעצמכם: Unity אונליין