UnityのCollider系統は`foreach`を使わないと取得できないっぽい
UnityのPolygonCollider2Dを無効にするプログラムを作りたかったのですが、
PolygonCollider2D collider = GameObj.GetComponent<PolygonCollider2D>();
とするとcollider
の中身がnull
になってしまい、PolygonCollider2Dを取得できませんでした。
ネットを探すと解決策を発見!!
要は、foreach
で回せばよいということでした。
なので、解決策は以下のようになります(Collider2DでもOK)。
foreach (PolygonCollider2D collider in GameObj.GetComponents<PolygonCollider2D>()) { collider.enabled = false; }
ちなみに、このゲームオブジェクトはPolygonCollider2D
を一つしか持っていないので一回転しかしてません。
ここで、foreach
ならうまくいくので配列なら取得できるのかと思ったので以下も試してみました。
Collider2D[] ColList = GameObj.GetComponents<Collider2D>(); PolygonCollider2D[] PolyColList = GameObj.GetComponents<PolygonCollider2D>();
Collider2DでもPolygonCollider2D(Collider2Dの継承)でも中身がnull
になってしまいました。
どんな仕様してるんでしょうかね?