質問: ### 前提・実現したいこと if文で、画像がアクティブなら非表示にする。というのをやりたいのですが、もし例えば10個の画像全てがアクティブなら~とした場合、一個づつ&&で足していけばできるのですが、量が多くなるのでまとめて処理する方法などはありますか? その場合アクティブになった画像を全て非表示にするので、調べた結果、 foreach (Transform buttons in parentTransform) { buttons.gameObject.SetActive(false); } という処理でまとめて非表示にできました。 ### 該当のソースコード ``` if(button1.activeSelf && button2.activeSelf && button3.activeSelf) { foreach (Transform buttons in parentTransform) { buttons.gameObject.SetActive(false); } ``` ### 試したこと Tagでできないかと調べましたが、C#始めたばかりでよく理解できませんでした。。。
回答: 1foreachを含むスクリプト(main.scと呼ぶことにします)とは別のスクリプト(sub.sc)を作成し、sub.scをそれぞれの画像に付けます。 2sub.scにstaticなint(変数A)を作成。さらに、MonoBehaviorの関数を利用してアクティブになったときに変数Aを+1、アクティブでなくなったときに変数Aを-1するようにします。 3main.scでsub.scの参照を取り(インスペクター上でテキトーな画像から取得してください)、ifの条件をsub.scの変数Aが10(画像の数)だったときに処理を行うようにします。 少し遠回しに書きましたが、要はstatic変数を利用して、それをアクティブな画像の数になるようにする。ということです。 自力で調べることも必要だと思うのでコードは載せませんが、staticを中心に調べていただければよく分かると思います。