質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

640閲覧

Listで最後に追加されたものから順に消したい

BRAK

総合スコア98

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/04/04 05:35

Listを使って最後に追加されたImage画像から順に消したい
敵を倒したらポイントを獲得し、一定数達するとImage画像(プレイヤーの必殺技の弾)が現れZキーを押すと放射しその後、消えるようにしたいです。画像は1ずつ現れ3つまで出現しストックできるようにしています。

C#言語

1 public List<Image> skills = new List<Image>(); 2 public Inventory playerInventory;//敵を倒した数を数える 3 public IntValue skillContainers; //倒した敵を一括りする(10 → 1にまとめる) 4 5  //Event関数で任意で起動するようにしています 6 public void InitSkiils() 7 { //敵を一定数倒すとImage画像を出現させる 8 for(int i = 0; i < skillContainers.RuntimeValue; i++) 9 { 10 skills[i].gameObject.SetActive(true); 11 } 12 } 13 14 public void InitFalseSkiils() 15 { 16 for (int i = 0; i < skillContainers.RuntimeValue; i++) 17 { //Zキーを押すとImage画像を消す。 18      //ストックしたもの全部一気に消えてしまう     19 skills[i].gameObject.SetActive(false); 20 } 21 } 2223//最後に追加されたものから順に消したかったので 24skills[skills.Count - 1].gameObject.SetActive(false); 25//こう書きましたが最後の要素[3番目]のしか消えないです。要素は0,1,2の計3つをあらかじめ入れています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

どうしてもSetActive(false)でオブジェクトを非表示にしたい(listの長さを不変にしたい)なら逆順からforループ回してactiveなやつをSetActive(false)すればいいと思います

csharp

1 for (int i = skills.Count - 1; i > -1; i--) 2 { 3 if (skills[i].gameObject.activeSelf) 4 { 5 skills[i].gameObject.SetActive(false); 6 break; 7 } 8 }

ただそれよりはListの代わりにQueueを使ったほうがいいような気がしますが(SetActive(false)の代わりにDestory()を使う)
https://www.atmarkit.co.jp/ait/articles/1801/31/news023.html

投稿2020/04/04 09:17

編集2020/04/04 09:25
ShintaroNomiya

総合スコア94

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BRAK

2020/04/06 05:33

ありがとうございます。 試してみます
BRAK

2020/04/06 05:48

ありがとうございます。できました。 キューの方法も覚えておきたいので試してみます。
BRAK

2020/04/06 09:58

キューと似ているStackで同じような方法で試したのですがスクリプトが良くわからないです。youtubeで見たのですが先ほどDestroyを使うといいましたがQueueやStackを使うときはInstantiateでいちいち生成しなければならないのですかね。あとImageなので生成位置や親子関係も込みでやると、かなりややこしいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問