Menu
CoddyTech

לולאות בתוך לולאות

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

שורה דורשת לולאה אחת. קומה שלמה, עם שורות ועמודות, דורשת לולאה בתוך לולאה:

for (int column = 0; column < 3; column++)
{
    for (int row = 0; row < 2; row++)
    {
        Debug.Log(column + ", " + row);
    }
}

בכל סיבוב של הלולאה החיצונית, הלולאה הפנימית רצה עד הסוף. לכן הקוד הזה מדפיס 0, 0 ו-0, 1, ואז 1, 0 ו-1, 1, ואז 2, 0 ו-2, 1: 3 עמודות כפול 2 שורות, 6 שורות בסך הכול.

לשתי הלולאות דרושים מונים בעלי שמות שונים. כאן הם נקראים לפי מה שהם סופרים, column ו-row, וכך קל יותר לקרוא את הקוד מאשר כאשר משתמשים ב-i וב-j.

challenge icon

אתגר

בינוני

בנו רצפה מ־12 אריחים: 4 עמודות ו־3 שורות.

  1. בתוך Start(), החליפו את PlaceTile(0, 0); ב־for (int column = 0; column < 4; column++).
  2. בתוך הסוגריים המסולסלים של הלולאה, כתבו for (int row = 0; row < 3; row++), וקראו ל־PlaceTile(column, row); בתוך הלולאה הפנימית.

לחצו על "שחק": תופיע רצפה של 4 על 3 אריחים. לאחר מכן לחצו על "בדיקה".

נסו בעצמכם

using UnityEngine;

public class TileFloor : MonoBehaviour
{
    void Start()
    {
        // הנח אריחים ב-4 עמודות ו-3 שורות.
        PlaceTile(0, 0);
    }

    void PlaceTile(int column, int row)
    {
        GameObject tile = GameObject.CreatePrimitive(PrimitiveType.Cube);
        tile.name = "Tile";
        tile.transform.position = new Vector3(column * 1.1f - 1.65f, 0.1f, row * 1.1f);
        tile.transform.localScale = new Vector3(1, 0.2f, 1);
        tile.GetComponent<Renderer>().material.color = new Color(0.85f, 0.85f, 0.9f);
    }
}

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

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