失礼します。
私はPhysics.OverlapSphereで入手したコライダーから、そのコライダーの持っているGameOjbectを入手し、
それをCeruleans[]に近い順に並べ替えようとしています。
C#
1void SearchCerulean(Vector3 center){ 2 // 球状の範囲で、その中にあるオブジェクトを取得 (位置、半径) 3 Collider[] hitColliders = Physics.OverlapSphere(center, Search_Radius); 4 int i = 0; 5 int n = 1; 6 bool fast = false; 7 8 // hitColliders.Lengthで入手したオブジェクトの数を取得 9 while(i < hitColliders.Length){ 10 // それがセルリアンタグを持っているか? 11 switch(hitColliders[i].tag){ 12 // 持っていたら保存 13 case "Cerulean": 14 // 初期更新 15 if(fast == false){ 16 Ceruleans[1] = hitColliders[1].gameObject.GetComponent<GameObject>(); 17 fast = true; 18 print("Run about if"); 19 }else{ 20 // 近いやつを順位つけ エラー解消までとりあえず放置 21 /*while(Comparison(hitColliders[i].transform, Ceruleans[n].transform) == false || Ceruleans[n] == null){ 22 n++; 23 } 24 Ceruleans[n + 1] = Ceruleans[n]; 25 Ceruleans[n] = hitColliders[i].gameObject; 26 print("Run about else");*/ 27 } 28 i++; 29 break; 30 // その他 31 default: 32 i++; 33 break; 34 } 35 } 36 }
このプログラムの
Ceruleans[1] = hitColliders[1].gameObject.GetComponent<GameObject>();
で入手しているんですが、どうしても
NullReferenceException: Object reference not set to an instance of an object
というエラーコードが出ます。
hitColliders[1]の後を
.gameobject
.GetComponent<GameObject>();
と一つだけにしても同じエラーです。
しかし
.transform.position
にすると位置情報は入手できました。なので
hitColliders[1]はからじゃないと思います。
ほかに足りないところがありましたら記入します。
解決方法をご存知の方がいたらよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。