השמדה
חלק מהיחידה יסודות התכנות ב-Unity במסלול ה-Unity של Coddy. שיעור 52 מתוך 67.
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 עדיין רצות ואפשר עדיין למצוא את האובייקט עד שהפריים מסתיים.
אתגר
בינוניהChute משחרר מטבע בכל שנייה; החלק הזה כבר כתוב. שנה אותו כך ש:
- כל מטבע ייעלם 3 שניות אחרי שהוא מופיע, כך שלעולם לא יהיו יותר מ-3 מטבעות בו-זמנית;
- מקש הרווח יהרוס את ה-chute עצמו, כך שלא יופיעו עוד מטבעות. המטבעות שכבר יצאו עדיין ייעלמו בזמן.
לחץ על Play, צפה במשך כמה שניות, לחץ על מקש הרווח, ואז על Check.
נסו בעצמכם
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;
}
// Space: להשמיד את המצנח
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות התכנות ב-Unity
1הסקריפט הראשון שלך
שלום, Unityהצב את הקובייהזוז בכל פרייםהסתובב בכל שנייהנווט בעזרת המקשיםסיכום: נהג בקובייה4וקטורים
חיבור וקטוריםכיווניםמרחב מקומי ומרחב עולמימהירות אלכסוניתהמרחק בין עצמיםVector3 הוא מבנה נתוניםסיכום: הטסת רחפן10מחזור החיים של הסקריפט
Awake ו-StartUpdate ו-LateUpdateOnEnable ו-OnDisableסדר מחזור החייםסיכום: מתעד מחזור החיים