0 支持
52 閲覧

例えば

public GameObject[] gameObject;

として、インスペクターでA,B,Cのオブジェクトをつけ、スクリプト内でBだけを消すにはどうしたら良いのでしょうか。

一番簡単で定番の方法を教えてください。

初心者 (250 ポイント) | 52 閲覧

ログインまたはユーザー登録してから回答してください。

回答 1

+1 支持

Bの取得

配列の特定の要素を検索する場合は、LINQを使うと便利です。
https://www.urablog.xyz/entry/2018/05/29/070000

A, B, CがGameObjectの名前を指しているのなら、

var b = gameObject.FristOrDefault(g => g.name == "B");

で取得できます。

Bを消す

消すというのが具体的になにを指しているのか分かりませんが、配列から削除する場合は

gameObject.Remove(b);

GameObjectごと消す場合は、

Destroy(b);
gameObject.Remove(b);

です。

配列から消すだけの場合

Bを配列から消すだけでいい場合は、Bを除外した新しい配列を作り直すのが手っ取り早いです。
LINQのWhereを使ってフィルタするといいです。
https://www.urablog.xyz/entry/2018/06/27/070000

gameObject = gameObject.Where(g => g.name != "B").ToArray();

なお、LINQはそこそこ重いのでUpdateで毎フレーム実行するのは控えましょう。

初心者 (200 ポイント)
0
通知設定に不備がありまして返信が大変遅くなってしまい申し訳ございません。
Removeのやり方はRemoveに謎のエラーが出てしまいできなかったのですが、Whereを使って配列を作り直す方は上手くできました!
ちゃんと目的も達成できそうなので、こちらを採用させていただきたいと思います。
質問に対するご回答どうもありがとうございました!
返信の遅れに対して重ねてお詫び申し上げます。

関連する質問

0 支持
0 回答
0 支持
1 回答
勉強中 見習い回答者 (550 ポイント) 2020 11/8 質問 | 157 閲覧
0 支持
1 回答
きりぎりす 初心者 (250 ポイント) 6/5 質問 | 67 閲覧
0 支持
1 回答
玉カエル 初心者 (160 ポイント) 1/15 質問 | 250 閲覧
0 支持
0 回答
2021-02-08 質問・回答をMarkdownで入力できるようにしました。
2020-09-03 新たなスパム対策を導入しました。

157 質問

153 回答

159 コメント

188 ユーザー