前提・実現したいこと
Unityで穴掘り法を使って自動で迷路生成をしていて少し外からコードを持ってきて貼り付けていじったものです。しかしうまく動かずどうすればいいか困っています どのように変換できますか?
Unity側で"Default references will only be applied in edit mode."というものが出ます
コード
using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using System.Text; public class acti : MonoBehaviour { public GameObject cube; public GameObject wall; private static int s=12; int[,] Maze = new int[2 * s , 2 * s ]; private List<Cell> StartCells; private void Dig(int x, int y) { // 指定座標から掘れなくなるまで堀り続ける var rnd = new System.Random(); while (true) { // 掘り進めることができる方向のリストを作成 var directions = new List<Direction>(); if (this.Maze[x, y - 1] == 1 && this.Maze[x, y - 2] == 1) directions.Add(Direction.Up); if (this.Maze[x + 1, y] == 1 && this.Maze[x + 2, y] == 1) directions.Add(Direction.Right); if (this.Maze[x, y + 1] == 1 && this.Maze[x, y + 2] == 1) directions.Add(Direction.Down); if (this.Maze[x - 1, y] == 1 && this.Maze[x - 2, y] == 1) directions.Add(Direction.Left); // 掘り進められない場合、ループを抜ける if (directions.Count == 0) break; // 指定座標を通路とし穴掘り候補座標から削除 SetPath(x, y); // 掘り進められる場合はランダムに方向を決めて掘り進める var dirIndex = rnd.Next(directions.Count); // 決まった方向に先2マス分を通路とする switch (directions[dirIndex]) { case Direction.Up: SetPath(x, --y); SetPath(x, --y); break; case Direction.Right: SetPath(++x, y); SetPath(++x, y); break; case Direction.Down: SetPath(x, ++y); SetPath(x, ++y); break; case Direction.Left: SetPath(--x, y); SetPath(--x, y); break; } } // どこにも掘り進められない場合、穴掘り開始候補座標から掘りなおし // 候補座標が存在しないとき、穴掘り完了 var cell = GetStartCell(); if (cell != null) { Dig(cell.X, cell.Y); } } // 座標を通路とする(穴掘り開始座標候補の場合は保持) private void SetPath(int x, int y) { this.Maze[x, y] = 0; if (x % 2 == 1 && y % 2 == 1) { // 穴掘り候補座標 StartCells.Add(new Cell() { X = x, Y = y }); } } // 穴掘り開始位置をランダムに取得する private Cell GetStartCell() { if (StartCells.Count == 0) return null; // ランダムに開始座標を取得する var rnd = new System.Random(); var index = rnd.Next(StartCells.Count); var cell = StartCells[index]; StartCells.RemoveAt(index); return cell; } // デバッグ用処理 // セル情報 private class Cell { public int X { get; set; } public int Y { get; set; } } // 方向 private enum Direction { Up = 0, Right = 1, Down = 2, Left = 3 } void Start() { for (int y = 0; y < 2 * s + 1; y++) { for (int x = 0; x < 2 * s + 1; x++) { if (x == 0 || y == 0 || x == 2 * s || y == 2 * s) { Maze[x, y] = 0; // 外壁は判定の為通路にしておく(最後に戻す) } else { Maze[x, y] = 1; } } } // 穴掘り開始 Dig(1, 1); // 外壁を戻す for (int y = 0; y < 2 * s + 1; y++) { for (int x = 0; x < 2 * s + 1; x++) { if (x == 0 || y == 0 || x == 2 * s || y == 2 * s) { Maze[x, y] = 1; } } } for (int x = -s; x <=s; ++x) { for (int y = -s; y <= s; ++y) { Debug.Log(Maze[x + s, y + s]); if (Maze[x + s, y + s] == 0) { if (x == s || x == -s || y == s || y == -s) { Instantiate(wall, new Vector3(x, 0.5f, y), Quaternion.identity); } else { Instantiate(cube, new Vector3(x, 0.5f, y), Quaternion.identity); } } } } } // Update is called once per frame void Update() { } } ```C# 
そのエラーはどこに出たものでしょう。
エラーメッセージは省略せず、コピペでそのまま全文提示しましょう
初めての質問で情報不足となってしまい申し訳ございません コード上では問題なく動作するのですがUnityエディタで動かそうとしたときに起こるものです Inspector上にこの文章がそのまま表示されています。コードを切り貼りしたものなのでうまく動かないと思いますがその当該箇所はわかりません。Unityのコンソールに特に表示されるわけではありません
追記:写真の位置です
Unityよくわからないですがそのメッセージそのままで検索すると結構でてくるように思います。
一度Google翻訳にかけて意味を理解したあとに読んでみると解決につながるのでは?
返信ありがとうございます。少しC#スクリプトに詳しくなくてとりあえず修正の必要な範囲だけ抜き取りたいのですがそこがよくわからないといった状況です。ただ深夜だったので自分の中にも少し検索不足というのは自分の中でも思い当たる節は大いにあるので確認します。
プログラミングは頭を非常によく使う作業なので頭がまわりにくい状態で進めても生産性は損なわれるばかりと思います。一度リフレッシュのために離れるのも手です。(とりあえず投げとけって質問が速攻解決になることってあまりありません)
すいません、心配していただきありがとうございます。寝る前に投げてしまったような質問なのであなたの貴重な時間を割いていただき申し訳ない気持ちです。一旦今日くらい時間をかけて問題のポイントを明らかにできればと思います。とりあえず自己解決の方針で分からなければまた質問する方向で行きたいと思います。
そこまでかしこまらなくても良いかと思います。(回答する側は基本的に無責任な傍観者で、誰も急いでません)
ありがとうございます!現在コード上の間違いを一つ見つけたので解決というわけではないですが修正していけそうです。

回答1件
あなたの回答
tips
プレビュー