Menu
CoddyTech

מערכים

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

מערך מכיל ערכים רבים מאותו סוג ברצף. אחרי סוג המערך מופיעים סוגריים מרובעים, והערכים שלו מופיעים בין סוגריים מסולסלים:

int[] scores = { 10, 25, 7 };

לכל ערך יש אינדקס, כלומר המיקום שלו ברצף, והספירה מתחילה ב־0: scores[0] הוא 10, scores[1] הוא 25 ו־scores[2] הוא 7. scores.Length הוא מספר הערכים, ובמקרה הזה 3. בקשה לקבלת scores[3] עוצרת את הסקריפט עם IndexOutOfRangeException: אין ערך רביעי.

לולאת for שרצה עד Length עוברת על כל הערכים, בלי קשר לתוכן המערך:

for (int i = 0; i < scores.Length; i++)
{
    Debug.Log("Score " + i + ": " + scores[i]);
}

כשאין צורך באינדקס, foreach קצרה יותר: foreach (int s in scores) { Debug.Log(s); } רצה פעם אחת לכל ערך, לפי הסדר.

challenge icon

אתגר

בינוני

צרו קו רקיע באורך 7 מגדלים באמצעות מערך ולולאה.

  1. הוסיפו את 6f ואת 2f לסוף של heights: { 2f, 5f, 3f, 1f, 4f, 6f, 2f }.
  2. החליפו את השורה PlaceTower ב־for (int i = 0; i < heights.Length; i++).
  3. בתוכה, קראו ל־PlaceTower(i * 1.5f - 4.5f, heights[i]);.

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

נסו בעצמכם

using UnityEngine;

public class Skyline : MonoBehaviour
{
    void Start()
    {
        float[] heights = { 2f, 5f, 3f, 1f, 4f };

        // הצב מגדל אחד לכל גובה.
        PlaceTower(-4.5f, heights[0]);
    }

    void PlaceTower(float x, float height)
    {
        GameObject tower = GameObject.CreatePrimitive(PrimitiveType.Cube);
        tower.name = "Tower";
        tower.transform.position = new Vector3(x, height / 2, 0);
        tower.transform.localScale = new Vector3(1, height, 1);
        tower.GetComponent<Renderer>().material.color = new Color(0.35f, 0.45f, 0.7f);
    }
}

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

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