Unity5 メモ26
Start()
などの戻り値
MonoBehaviourの関数は戻り値をvoid
ではなくIEnumerator
にしても動作する。List<>
の内容を文字列化する(C#)
List<Object> list; list.ToString();
とすると、"System.Collections.Generic.List 1[System.Single]"なる文字列が取得され、意図と異なる。
List<string>
であればstring.Join(",", myList.ToArray());
のようにできるがそれ以外の型の場合こうはできない。
そのため、StringBuilder
を用いる必要がある。
StringBuilder builder = new StringBuilder(); foreach (var obj in list) { builder.Append(obj).Append(","); } string result = builder.ToString();
string result = ""; foreach (var obj in list) { result += obj + ","; }
ともできるが、C#での文字列同士の演算は重いため、上のクラスの利用が一般的になっている
コルーチン内でのタイムアウト処理
コルーチンの内部での時間計測は不正確になる模様(deltaTimeを加算し続けて5秒まっても数値は0.7秒ほどしか進まなかった)。
なので時間計測はUpdate()
で行って、規定時間が過ぎたらタイムアウトとしてStopCoroutine()
が手軽に感じられる。StopCoroutine()
StartCoroutine("SomeFunc"); StopCoroutine("SomeFunc");
これは動かない。
var routine = StartCoroutine("SomeFunc"); StopCoroutine(routine);
これで意図通り動く。
foreach
でループ中のインデックスを取得(C#)
foreach (var obj in rankingList.Select((value, index) => new {value, index})) { builder.Append(obj.index + 1).Append(". ").Append(obj.value).Append("\n"); } Debug.Log(builder.ToString()); // output will be: // 1. 40.837 // 2. 41.220 // 3. 42.565 // ...