前提
Unityで図鑑システムを作っています。
該当の図鑑番号のモンスターを手に入れたら図鑑が開放されて説明文などが見られるようになるものにしようと思っていて、数が多いのでScrollViewとGridLayoutGroupを使用して作成しています。
まだゲットしていないモンスターの上にはパネルを置いてボタンを押せないようにしたいのですが、GridLayoutを使用しているためかどうしてもずれてしまうので、ボタンの子としてパネルを作成しました。
しかしそれではパネルがあってもボタンが押せてしまうため、図鑑画像が隠れるだけで意味がありません。
何かいい処理はありますか。
実現したいこと
・図鑑開放機能を実装する。
・ボタンの子にする以外でパネルを上に重ねるか、パネルがあるときにボタンを押せなくする。
発生している問題・エラーメッセージ
・パネルがあってもボタンが押せてしまう。
該当のソースコード
C# スクロールパネルにアタッチしてます
using UnityEngine;using UnityEngine.UI; public class DataBook : MonoBehaviour { [SerializeField] private RectTransform contentRectTransform; //図鑑リスト [SerializeField] DataBase dataBase; [SerializeField] private int buttonNumber = 30; //モンスターボタン [SerializeField] private Button dataButton; private Button[] _dataButtons; // Start is called before the first frame update void Start() { gameObject.SetActive(false); for (var i = 0;i < buttonNumber -1; i++) { Instantiate(dataButton, contentRectTransform); } _dataButtons = GetComponentsInChildren<Button>(); for (var i = 0; i < buttonNumber; i++) { _dataButtons[i].GetComponent<Image>().sprite = dataBase.bugList[i].bug; _dataButtons[i].onClick.AddListener(Touched); } } public void Toggle() { gameObject.SetActive(!gameObject.activeSelf); if (gameObject.activeSelf) { for (int i = 0; i < buttonNumber; i++) { //後で処理を追加(PlayerPrefsからのフラグチェック) } } } void Touched() { Debug.Log("touched"); }}
試したこと
startメソッド内でボタンを無効化し、別スクリプトでボタンの子パネルが非アクティブの時にボタンを有効化する処理を書いてボタンにアタッチした。
0 コメント