Menu
CoddyTech

配列

CoddyのUnityジャーニー「Unityスクリプトの基礎」セクションの一部。レッスン 41/85。

配列は、同じ型の値を複数、順番に保持します。型名の後に角括弧を付け、値は波括弧の中に並べます。

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

各値にはインデックスがあり、配列内の位置を示します。数え始めるのは0です。scores[0]は10、scores[1]は25、scores[2]は7です。scores.Lengthは値の個数で、ここでは3です。scores[3]を指定すると、4番目の値がないため、スクリプトはIndexOutOfRangeExceptionで停止します。

Lengthまで繰り返すforループを使うと、配列の要素数にかかわらず、すべての値を順に確認できます。

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

インデックスが必要ない場合は、foreachのほうが簡潔です。foreach (int s in scores) { Debug.Log(s); }は、各値に対して順番に1回ずつ実行されます。

challenge icon

チャレンジ

中級

配列とループを使って、7本の塔が並ぶスカイラインを作りましょう。

  1. heightsの末尾に6fと2fを追加します: { 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]);を呼び出します。

「プレイ」を押すと、高さの異なる7本の塔が一列に並びます。その後、「確認」を押します。

自分で試してみよう

using UnityEngine;

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

        // 各高さに対してタワーを1つずつ配置する。
        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プレイグラウンド