השמדה
חלק מהיחידה יסודות הסקריפטים ב-Unity במסלול ה-Unity של Coddy. שיעור 67 מתוך 85.
Destroy(obj) מסירה GameObject מהסצנה, כולל הילדים שלו. ארגומנט שני מוסיף השהיה: Destroy(obj, 2f) מסירה אותו בעוד 2 שניות, והסקריפט שקרא לה ממשיך מיד. התותח הזה יורה בלחיצה על Space, וכל קליע שהוא יוצר נעלם כעבור 2 שניות:
public GameObject bulletPrefab;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
GameObject bullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity);
Destroy(bullet, 2f);
}
}העבירו את העותק, לא את ה-prefab: הקריאה Destroy(bulletPrefab) נדחית עם ההודעה Destroying assets is not permitted to avoid data loss. העבירו GameObject כשאתם מתכוונים לאובייקט. בתוך סקריפט, gameObject הוא האובייקט שעליו נמצא הסקריפט, לכן Destroy(gameObject) מסירה את האובייקט הזה, ואילו Destroy(this) מסירה רק את הסקריפט ומשאירה את האובייקט במקומו.
ההשמדה אף פעם לא מתרחשת מיד. Unity מסירה את האובייקט בסוף הפריים הנוכחי, אחרי הקריאות ל-Update() ול-LateUpdate() של הפריים, כך שהשורות שאחרי Destroy עדיין רצות, ועד סוף הפריים עדיין אפשר למצוא את האובייקט.
אתגר
בינוניהסר את המטבעות הישנים, ותן למקש הרווח להסיר את המתקן.
- שמור את המטבע החדש,
GameObject coin = Instantiate(...);, ואז קרא ל־Destroy(coin, 3f);. - בעת
Input.GetKeyDown(KeyCode.Space), קרא ל־Destroy(gameObject);.Destroy(this)יסיר רק את הסקריפט.
לחץ על "שחק": כל מטבע נעלם אחרי 3 שניות, ומקש הרווח עוצר את יצירת המטבעות החדשים. ואז לחץ על "בדיקה".
נסו בעצמכם
using UnityEngine;
public class CoinChute : MonoBehaviour
{
public GameObject coinPrefab;
public float interval = 1f;
float timer;
void Update()
{
timer += Time.deltaTime;
if (timer >= interval)
{
Instantiate(coinPrefab, transform.position, Quaternion.identity);
timer -= interval;
}
// מקש הרווח: השמדת המגלשה
}
}
כל השיעורים ביחידה יסודות הסקריפטים ב-Unity
1יסודות C# ב-Unity
שלום, Unityמשתניםמספרים עשרוניים צריכים fטקסט ב-Consoleמשתנים ששומרים ערכיםאם ואחרתהשוואת מספריםחזרה: אוסף המטבעות5וקטורים
חיבור וקטוריםכיווניםמרחב מקומי ומרחב עולמימהירות אלכסוניתהמרחק בין עצמיםVector3 הוא מבנה נתוניםסיכום: הטסת רחפן8אובייקטי משחק ורכיבים
הפניות ב-Inspectorקבלת רכיברכיבים חסריםהוספת רכיבRequireComponentהצגה והסתרהחזרה: מתג תאורה11פריפאבים ויצירת מופעים
פריפאבים ויצירת מופעיםיצירה לפי טיימריצירה ברשתרשימות של אובייקטיםהסרת האחרון שנוצרהשמדהיצירות אקראיותסיכום: זיקוקים6טרנספורמציות והיררכיה
הורים וילדיםלהניף את הדגלקנה מידהלהסתכל על דבריםלנוע לעבר נקודהסיכום: הירח המקיף12מחזור החיים של הסקריפט
Awake ו-StartUpdate ו-LateUpdateOnEnable ו-OnDisableסדר מחזור החייםסיכום: יומן מחזור החייםתרגלו בעצמכם: Unity אונליין