Menu
CoddyTech

הצגה והסתרה

חלק מהיחידה יסודות התכנות ב-Unity במסלול ה-Unity של Coddy. שיעור 34 מתוך 67.

SetActive(false) מכבה GameObject שלם: הוא לא מוצג, הוא כבר לא מתנגש, הסקריפטים שעליו מפסיקים לקבל Update(), וגם הילדים שלו מושבתים. SetActive(true) מחזיר את הכול לפעולה, ו-activeSelf מציין אם הוא פעיל. הסקריפט הזה, שמחובר ללחצן, מסתיר את הדלת שבשדה door שלו בלחיצה על העכבר:

public GameObject door;

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        door.SetActive(false);
    }
}

סקריפט שמסתיר את האובייקט של עצמו באמצעות gameObject.SetActive(false) לא יכול להחזיר אותו לפעולה, כי Update() שלו כבר לא רץ. לכן המתג נמצא על אובייקט אחר, שמחזיק הפניה לאובייקט שהוא מציג ומסתיר.

enabled מכבה רכיב אחד ומשאיר את שאר האובייקט ללא שינוי. GetComponent<Renderer>().enabled = false הופך אובייקט לבלתי נראה, אבל המתנגש שלו עדיין חוסם דברים: קיר בלתי נראה. סקריפט עם enabled = false לא מקבל עוד קריאות Update(), אבל האובייקט נשאר בסצנה, עדיין מוצג ועדיין מתנגש, והרכיבים האחרים שלו ממשיכים לפעול.

challenge icon

אתגר

בינוני

הסקריפט של הידית מחזיק את הגשר בשדה bridge שלו. גרמו למקש הרווח להפעיל את הגשר: הלחיצה הראשונה מסתירה אותו, הלחיצה הבאה מחזירה אותו, וכך הלאה, החלפה אחת בכל לחיצה.

הסתירו את הגשר כולו, כולל המתנגש, כדי שאף אחד לא יוכל לעמוד על גשר שאינו שם.

לחצו על Play, לחצו על מקש הרווח כמה פעמים, ואז לחצו על Check.

נסו בעצמכם

using UnityEngine;

public class BridgeSwitch : MonoBehaviour
{
    public GameObject bridge;

    void Update()
    {
        // לחיצה על Space מסתירה את הגשר, והלחיצה הבאה מציגה אותו שוב
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות התכנות ב-Unity