前提
Unityで図鑑システムを作っています。
該当の図鑑番号のモンスターを手に入れたら図鑑が開放されて説明文などが見られるようになるものにしようと思っていて、数が多いのでScrollViewとGridLayoutGroupを使用して作成しています。
まだゲットしていないモンスターの上にはパネルを置いてボタンを押せないようにしたいのですが、ScrollViewの子として作成したパネルをボタンUIの位置に被せる処理を書いても、GridLayoutを使用しているためか必ずずれてしまうので、直接ボタンUIの子としてパネルを作成しました。
しかしそれではパネルを押してもボタンを押したという処理が行われてしまうため、図鑑画像が隠れるだけで意味がありません。
何かいい処理はありますか。
実現したいこと
・図鑑開放機能を実装する。
・ボタンの子にする以外でパネルを上に重ねるか、パネルを押しても判定を貰わない方法。
発生している問題・エラーメッセージ
・パネルもボタンとして認識されてしまう。
該当のソースコード
C# ScrollViewにアタッチしてます
1using UnityEngine; 2using UnityEngine.UI; 3 4public class DataBook : MonoBehaviour 5{ 6 [SerializeField] private RectTransform contentRectTransform; 7 //図鑑リスト 8 [SerializeField] DataBase dataBase; 9 [SerializeField] private int buttonNumber = 30; 10 //モンスターボタン 11 [SerializeField] private Button dataButton; 12 13 private Button[] _dataButtons; 14 15 // Start is called before the first frame update 16 void Start() 17 { 18 gameObject.SetActive(false); 19 20 for (var i = 0;i < buttonNumber -1; i++) 21 { 22 Instantiate(dataButton, contentRectTransform); 23 } 24 25 _dataButtons = GetComponentsInChildren<Button>(); 26 27 for (var i = 0; i < buttonNumber; i++) 28 { 29 _dataButtons[i].GetComponent<Image>().sprite = dataBase.bugList[i].bug; 30 _dataButtons[i].onClick.AddListener(Touched); 31 } 32 33 34 } 35 36 37 public void Toggle() 38 { 39 gameObject.SetActive(!gameObject.activeSelf); 40 41 if (gameObject.activeSelf) 42 { 43 for (int i = 0; i < buttonNumber; i++) 44 { 45 //後で処理を追加(PlayerPrefsからのフラグチェック) 46 } 47 } 48 } 49 50 void Touched() 51 { 52 Debug.Log("touched"); 53 } 54}
試したこと
startメソッド内でボタンを無効化し、別スクリプトでボタンの子パネルが非アクティブの時にボタンを有効化する処理を書いてボタンにアタッチした。
回答1件
あなたの回答
tips
プレビュー