Menu
CoddyTech

יצירה ברשת

חלק מהיחידה יסודות הסקריפטים ב-Unity במסלול ה-Unity של Coddy. שיעור 64 מתוך 85.

לולאה בתוך לולאה עוברת על כל תא ברשת: הלולאה החיצונית בוחרת עמודה, והלולאה הפנימית עוברת לאורכה. הצב בתוכה Instantiate, וכך ייווצר אובייקט בכל תא. כך נבנית רצפה בגודל 3 על 3 מאריחים שרוחבם 2 יחידות, ולכן המרחק בין האריחים הוא 2 יחידות:

public GameObject tilePrefab;

void Start()
{
    for (int x = 0; x < 3; x++)
    {
        for (int z = 0; z < 3; z++)
        {
            Vector3 spot = new Vector3(x * 2, 0, z * 2);
            Instantiate(tilePrefab, spot, Quaternion.identity, transform);
        }
    }
}

האריחים ממוקמים בנקודות x = 0, 2, 4 ו־z = 0, 2, 4: תשעה אריחים, מ־(0, 0, 0) ועד (4, 0, 4). הלולאות רצות בתוך Start(), פעם אחת. בתוך Update() הן היו מוסיפות עוד תשעה אריחים בכל פריים.

הארגומנט הרביעי הוא אובייקט האב. תשעה אובייקטים מנותקים של Tile(Clone) היו יוצרים עומס בחלונית Hierarchy; העברת transform משייכת אותם לאובייקט שעליו נמצא הסקריפט, Floor, כך שאפשר לקפל אותם, להזיז אותם יחד או למחוק אותם יחד. המיקום שמועבר עדיין מוגדר ביחס לעולם.

challenge icon

אתגר

בינוני

בנו קיר מאובייקטי Brick מוכנים מראש, ברוחב של 4 ובגובה של 5.

  1. בתוך Start(), הריצו לולאה על c מ-0 עד 3, ובתוכה לולאה על r מ-0 עד 4.
  2. בלולאה הפנימית, קראו ל-Instantiate(brickPrefab, new Vector3(-1.5f + c, 0.25f + r * 0.5f, 0), Quaternion.identity, transform). הארגומנט האחרון הופך כל לבנה לילדה של הקיר.

לחצו על „שחק”: קיר של 20 לבנים עומד על הקרקע. לאחר מכן לחצו על „בדיקה”.

נסו בעצמכם

using UnityEngine;

public class WallBuilder : MonoBehaviour
{
    public GameObject brickPrefab;

    void Start()
    {
        // 4 עמודות על 5 שורות של לבנים, כל אחת מהן אובייקט בן של Wall זה
    }
}

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

תרגלו בעצמכם: Unity אונליין