うっかりやってしまったのでおさらい...
Transform[] TransformList; TransformList[Random.Range(0, TransformList.Length - 1)];
みたいに Length - 1 をつかってランダム値を取得しようとするとちゃんと取得できませんよって話。
基本的な仕様の理解
Unity でランダム値を取得する関数の Random.Range ですが、
整数バージョン と 小数バージョン の二種類があります。
そして整数バージョンで取得できる数値は 第二引数未満の数字 です。
つまり
Random.Range(0, 5);
とすると取得できるのは 0 ~ 4 までの数字になります。
気をつけたいのは、小数バージョンの場合は 第二引数を含む 数字が出てきます。
つまり
Random.Range(0.0f, 1.0f);
とすると取得できる数値は 0.0 ~ 1.0の少数 ということになります。
Random.Range で配列からランダムな要素を取得する場合
冒頭のソースの件になりますが、
TransformList[Random.Range(0, TransformList.Length)];
のように、第二引数には Length の値をそのまま入れましょう、って話。
たぶん他の言語でこういうクセがついている人は、すぐ忘れてハマってしまうと思われ...
ていうかこの仕様なら
Random.Range(0, 0);
はExceptionとか投げるべきじゃないすかね...(0が出る)