MacOS Monterey (12.1) Unity (2021.3.2f1)
はじめに
何も考えずにDebug.Log(配列)でログを出すとうまくいきません。
例えば以下のように配列を直接Debug.Logで出力しようとしたとします。
string[] ary = new string[] { "すぱいく", "ほわいと", "りんだ", "てんしん" }; Debug.Log(ary);
これをコンソールで確認すると中身ではなく配列のデータ型名が表示されます。
求めているのは配列の各要素の中身ですよね? この中身をデバッグログで出力する方法を共有したいと思います。
string.Joinを使おう
第1引数には 区切る時に使う文字を指定します。 ,(カンマ) や\r(改行文字)などを使うのが一般的ですね。
第2引数には 配列変数を指定します。
上記を踏まえて先ほどのコードを直します。
string[] ary = new string[] { "すぱいく", "ほわいと", "りんだ", "てんしん" }; Debug.Log(string.Join(",",ary));
そしてこれを実行すると・・・
いい感じに表示されました!
2次元配列にはSystem.LinqのCastを使おう
string.Joinでも2次元配列だとうまくいきません。
string[,] ary2 = new string[,] { {"1","すぱいく" }, {"2","ほわいと" }, {"3","りんだ" }, {"4","てんしん" } }; Debug.Log(string.Join(",", ary2.Cast<string>()));
2次元配列には System.LinqのCast を使うと1次元配列に変換できます。これなら正しくログが表示されます。
using System.Linq; ~~~~~~~省略~~~~~~~~ string[,] ary2 = new string[,] { {"1","すぱいく" }, {"2","ほわいと" }, {"3","りんだ" }, {"4","てんしん" } }; Debug.Log(string.Join(",", ary2.Cast<string>()));