依然としてUnity 3Dでゲームを開発しています。
UIのボタンを押して、複数のオブジェクトの表示/非表示を一括で切り替えたいです。
シーン上には非表示のオブジェクトと表示しているオブジェクトが混在していて、
ボタンを押すと非表示のオブジェクト→表示に、表示中のオブジェクトは非表示にしたいです。
ボタンはゲーム中何回も押すことができ、そのたびに表示/非表示を交互に入れ替えたいです。
表示/非表示にはenable、SetActiveなどいろいろありますが、今回はSetActiveで行きたいです。
以下のスクリプトを試しましたが、一度非表示にしてしまったものが、再度ボタンを押してもうまくいきません。
C#
1using UnityEngine; 2using GlobalOutline; 3using System.Collections.Generic; 4 5public class SwitchBotton : MonoBehaviour 6{ 7 public GameObject[] targetObjects; 8 9 10 11 // Start is called before the first frame update 12 void Start() 13 { 14 15 } 16 17 // Update is called once per frame 18 void Update() 19 { 20 21 } 22 23 public void OnClick() 24 { 25 foreach (GameObject targetObject in targetObjects) 26 { 27 if (targetObject.activeSelf == false) 28 { 29 targetObject.SetActive(true); 30 } 31 32 if (targetObject.activeSelf == true) 33 { 34 targetObject.SetActive(false); 35 } 36 } 37 } 38}
なお、対象のオブジェクトを二つに絞った場合、またボタンを一回だけ押せる場合には以下のスクリプトでうまくいきました。
C#
1using UnityEngine; 2using GlobalOutline; 3using System.Collections.Generic; 4 5public class SwitchButton : MonoBehaviour 6{ 7 public GameObject targetObject1; 8 public GameObject targetObject2; 9 10 11 12 // Start is called before the first frame update 13 void Start() 14 { 15 16 } 17 18 // Update is called once per frame 19 void Update() 20 { 21 22 } 23 24 public void OnClick() 25 { 26 targetObject1.SetActive(false); 27 targetObject2.SetActive(true); 28 } 29}
アドバイスよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/15 03:48