ブログ

ダンジョン作成(二次元配列+switch文, for文)


1)switch文バージョン

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Map6 : MonoBehaviour
{
    private string[][] map = new string[10][];

    [SerializeField]
    private GameObject wallPrefab;
    [SerializeField]
    private GameObject ballPrefab;

    void Start()
    {
        for(int i = 0; i < map.Length; i++)
        {
            map[i] = new string[10];
        }

        map[0] = new[] { "w", "w", "w", "w", "w", "w", "w", "w", "w", "w" };
        map[1] = new[] { "w", " ", " ", " ", " ", " ", " ", " ", " ", "w" };
        map[2] = new[] { "w", "w", "w", "w", "w", "w", "w", "w", " ", "w" };
        map[3] = new[] { "w", " ", " ", " ", " ", " ", " ", "w", " ", "w" };
        map[4] = new[] { "w", " ", "w", "w", "w", "w", " ", "w", " ", "w" };
        map[5] = new[] { "w", " ", "w", "b", "w", "w", " ", "w", " ", "w" };
        map[6] = new[] { "w", " ", "w", " ", " ", " ", " ", "w", " ", "w" };
        map[7] = new[] { "w", " ", "w", "w", "w", "w", "w", "w", " ", "w" };
        map[8] = new[] { "w", " ", " ", " ", " ", " ", " ", " ", " ", "w" };
        map[9] = new[] { "w", "w", "w", "w", "w", "w", "w", "w", "w", "w" };

        for (int i = 0; i < map.Length; i++)
        {
            for (int j = 0; j < map[i].Length; j++)
            {
                if (map[i][j] != null)
                {
                    switch (map[i][j])
                    {
                        case "w":
                            Instantiate(wallPrefab, new Vector3(-4.5f + j, 0.5f, 4.5f - i), Quaternion.identity);
                            break;

                        case "b":
                            Instantiate(ballPrefab, new Vector3(-4.5f + j, 0.5f, 4.5f - i), Quaternion.identity);
                            break;
                    }
                }
            }
        }
    }
}

2)if文バージョン

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Map6 : MonoBehaviour
{
    private string[][] map = new string[10][];

    [SerializeField]
    private GameObject wallPrefab;
    [SerializeField]
    private GameObject ballPrefab;

    void Start()
    {
        for (int i = 0; i < map.Length; i++)
        {
            map[i] = new string[10];
        }

        map[0] = new[] { "w", "w", "w", "w", "w", "w", "w", "w", "w", "w" };
        map[1] = new[] { "w", " ", " ", " ", " ", " ", " ", " ", " ", "w" };
        map[2] = new[] { "w", "w", "w", "w", "w", "w", "w", "w", " ", "w" };
        map[3] = new[] { "w", " ", " ", " ", " ", " ", " ", "w", " ", "w" };
        map[4] = new[] { "w", " ", "w", "w", "w", "w", " ", "w", " ", "w" };
        map[5] = new[] { "w", " ", "w", "b", "w", "w", " ", "w", " ", "w" };
        map[6] = new[] { "w", " ", "w", " ", " ", " ", " ", "w", " ", "w" };
        map[7] = new[] { "w", " ", "w", "w", "w", "w", "w", "w", " ", "w" };
        map[8] = new[] { "w", " ", " ", " ", " ", " ", " ", " ", " ", "w" };
        map[9] = new[] { "w", "w", "w", "w", "w", "w", "w", "w", "w", "w" };

        for (int i = 0; i < map.Length; i++)
        {
            for (int j = 0; j < map[i].Length; j++)
            {
                if (map[i][j] != null)
                {
                    if (map[i][j] == "w")
                    {
                        Instantiate(wallPrefab, new Vector3(-4.5f + j, 0.5f, 4.5f - i), Quaternion.identity);
                    }
                    else if(map[i][j] == "b")
                    {
                        Instantiate(ballPrefab, new Vector3(-4.5f + j, 0.5f, 4.5f - i), Quaternion.identity);
                    }
                }
            }
        }
    }
}