/// <summary>
    /// マップを生成
    /// </summary>
    /// <param name="map">マップのデータ</param>
    public static void GenerateMap(int[,] map)
    {
        isGanerate = false;
        System.DateTime dt = System.DateTime.Now;

        int width  = map.GetLength(1);
        int height = map.GetLength(0);

        stageSize = new Vector2(width, height);

        generatedStage = new Piece[height, width];
        for (int i = 0; i < height; i++)
        {
            for (int j = 0; j < width; j++)
            {
                Vector2 position = new Vector2(j, i);

                //背景画像を設置
                SpriteRenderer back = new GameObject("[BackGroundChip]").AddComponent <SpriteRenderer>();
                back.transform.position = position;
                back.sprite             = ResourceLoader.GetChips(R_MapChipType.MainChip)[0];
                back.sortingOrder       = 0;

                int id = map[height - (i + 1), j];
                //Debug.Log(id);

                //idが14以外のときはピースを作成
                if (id != 14)
                {
                    CreatePiece(position, id);
                }
                else
                {
                    //それ以外はクリア場所を作成
                    Hole.CreateHole(position);
                }
            }
        }

        //画像ロード用
        for (int i = 0; i < height; i++)
        {
            for (int j = 0; j < width; j++)
            {
                Piece p = generatedStage[(height - (i + 1)), j];
                if (p)
                {
                    p.SpriteLoad();
                }
            }
        }

        System.TimeSpan ts = System.DateTime.Now - dt;
        Debug.Log("Map Generated. time: " + ts.Milliseconds + "ms");
        isGanerate = true;


        Vector2 center = new Vector2((width - 1f) * 0.5f, (height - 1f) * 0.5f);

        //背景画像を設置
        SpriteRenderer backGround = new GameObject("[BackGround]").AddComponent <SpriteRenderer>();

        backGround.sprite               = ResourceLoader.GetOtherSprite(R_OtherSpriteType.BackGround);
        backGround.color                = new Color(0.6f, 0.6f, 0.6f, 1);
        backGround.sortingOrder         = -1;
        backGround.transform.position   = center;
        backGround.transform.localScale = new Vector2(1, 1) * 2f;

        //環境エフェクト再生
        var ps = ParticleManager.Play(ParticleType.AmbientEffect, center, Quaternion.identity);
        var s  = ps.shape;

        s.scale = center * 3f;

        Vector3 cameraPos = center;

        cameraPos.x += 0.6f;
        cameraPos.z  = -1;

        //カメラ位置設定
        Camera.main.transform.position = cameraPos;
    }