הוספת רכיב
חלק מהיחידה יסודות התכנות ב-Unity במסלול ה-Unity של Coddy. שיעור 32 מתוך 67.
gameObject.AddComponent<T>() מוסיפה רכיב חדש מסוג T לאובייקט בזמן שהמשחק פועל, ומחזירה אותו כדי שתוכל להגדיר אותו בשורות הבאות. הוא שייך ל-GameObject, שאליו סקריפט ניגש דרך gameObject. המדורה הזאת מעניקה לעצמה אור כתום וחמים כשהמשחק מתחיל:
void Start()
{
Light glow = gameObject.AddComponent<Light>();
glow.color = new Color(1f, 0.5f, 0f);
glow.intensity = 2f;
}רכיב שנוסף בדרך הזאת נשאר כל עוד המשחק פועל. עצור את Play והאובייקט חוזר למצב שבו הוא נשמר בסצנה, בלי Light. גם הסקריפטים שלך הם רכיבים: gameObject.AddComponent<Spinner>() מוסיפה Spinner שמתחיל לפעול כמו כל סקריפט אחר.
אפשר להוסיף את רוב הרכיבים יותר מפעם אחת, אבל יש כאלה שלא: אובייקט יכול להכיל לכל היותר Rigidbody אחד, וניסיון להוסיף אחד נוסף יגרום להופעת שגיאה ב-Console. בקוד שעשוי לפעול יותר מפעם אחת, בודקים אם הרכיב כבר קיים באובייקט לפני שמוסיפים אותו.
אתגר
בינוניהקוקוס תלוי בעץ הדקל. לחיצה על Space מנערת את העץ: הקוקוס מקבל Rigidbody, כך שכוח הכבידה פועל עליו והוא נופל אל החול.
- לפני הלחיצה הראשונה על Space, הקוקוס תלוי במקומו.
- Space מוסיף Rigidbody רק כאשר עדיין אין לקוקוס אחד, כך שלחיצות נוספות לא עושות דבר.
לחץ על Play, לחץ על Space, ואז על Check.
נסו בעצמכם
using UnityEngine;
public class CoconutDrop : MonoBehaviour
{
void Update()
{
// Space: הוסף Rigidbody אם לקוקוס עדיין אין כזה
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות התכנות ב-Unity
1הסקריפט הראשון שלך
שלום, Unityהצב את הקובייהזוז בכל פרייםהסתובב בכל שנייהנווט בעזרת המקשיםסיכום: נהג בקובייה4וקטורים
חיבור וקטוריםכיווניםמרחב מקומי ומרחב עולמימהירות אלכסוניתהמרחק בין עצמיםVector3 הוא מבנה נתוניםסיכום: הטסת רחפן10מחזור החיים של הסקריפט
Awake ו-StartUpdate ו-LateUpdateOnEnable ו-OnDisableסדר מחזור החייםסיכום: מתעד מחזור החיים6אובייקטי משחק ורכיבים
הפניות ב-Inspectorקבלת רכיברכיבים חסריםהוספת רכיבRequireComponentהצגה והסתרהסיכום: מתג תאורה