123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- using System.Collections.Generic;
- using TMPro;
- using UnityEngine;
- using UnityEngine.UI;
- #if ENABLE_INPUT_SYSTEM
- using UnityEngine.InputSystem;
- #endif
- namespace LayerLab.GUIScripts
- {
- public class PanelControl : MonoBehaviour
- {
- private int _page;
- private bool _isReady;
- private TextMeshProUGUI _textTitle;
- [SerializeField] private List<GameObject> defaultPanels = new ();
- [SerializeField] private List<GameObject> otherPanels = new ();
-
- [SerializeField] private Transform panelTransformDefault;
- [SerializeField] private Transform panelTransformOther;
- [SerializeField] private Button buttonPrev;
- [SerializeField] private Button buttonNext;
- private bool IsOtherMode { get; set; }
- private void OnValidate()
- {
- var panels = GameObject.Find("Panels");
- if (panels) panelTransformDefault = panels.transform;
-
- buttonPrev = transform.GetChild(0).GetComponent<Button>();
- buttonNext = transform.GetChild(2).GetComponent<Button>();
- }
- private void Reset()
- {
- OnValidate();
- }
- private void Start()
- {
- _textTitle = transform.GetComponentInChildren<TextMeshProUGUI>();
- buttonPrev.onClick.AddListener(Click_Prev);
- buttonNext.onClick.AddListener(Click_Next);
- foreach (Transform t in panelTransformDefault)
- {
- defaultPanels.Add(t.gameObject);
- t.gameObject.SetActive(false);
- }
- defaultPanels[_page].SetActive(true);
-
-
- if(panelTransformOther == null) return;
-
- foreach (Transform t in panelTransformOther)
- {
- otherPanels.Add(t.gameObject);
- t.gameObject.SetActive(false);
- }
-
-
- if (otherPanels.Count > 0) otherPanels[_page].SetActive(true);
-
-
-
- _isReady = true;
- CheckControl();
- }
- private void Update()
- {
- if (defaultPanels.Count <= 0 || !_isReady) return;
- #if ENABLE_INPUT_SYSTEM
- if (Keyboard.current.leftArrowKey.wasPressedThisFrame)
- {
- Click_Prev();
- }
- else if (Keyboard.current.rightArrowKey.wasPressedThisFrame)
- {
- Click_Next();
- }
- #else
- if (Input.GetKeyDown(KeyCode.LeftArrow))
- {
- Click_Prev();
- }
- else if (Input.GetKeyDown(KeyCode.RightArrow))
- {
- Click_Next();
- }
- #endif
- }
- //Click_Prev
- //Click_Prev
- private void Click_Prev()
- {
- if (_page <= 0) return;
- defaultPanels[_page].SetActive(false);
- if(otherPanels.Count > 0) otherPanels[_page].SetActive(false);
- _page -= 1;
-
- defaultPanels[_page].SetActive(true);
- if(otherPanels.Count > 0) otherPanels[_page].SetActive(true);
- if (!IsOtherMode)
- {
- _textTitle.text = defaultPanels[_page].name;
- }
- else
- {
- if (otherPanels.Count > 0)
- {
- _textTitle.text = otherPanels[_page].name;
- }
- }
-
- CheckControl();
- }
- //Click_Next
- private void Click_Next()
- {
- if (_page >= defaultPanels.Count - 1) return;
-
- defaultPanels[_page].SetActive(false);
- if(otherPanels.Count > 0) otherPanels[_page].SetActive(false);
- _page += 1;
-
- defaultPanels[_page].SetActive(true);
- if(otherPanels.Count > 0) otherPanels[_page].SetActive(true);
- CheckControl();
- }
- private void SetArrowActive()
- {
- buttonPrev.gameObject.SetActive(_page > 0);
- buttonNext.gameObject.SetActive(_page < defaultPanels.Count - 1);
- }
- //SetTitle, SetArrow Active
- private void CheckControl()
- {
- if (!IsOtherMode)
- {
- _textTitle.text = defaultPanels[_page].name.Replace("_", " ");
- }
- else
- {
- if (otherPanels.Count > 0)
- {
- _textTitle.text = otherPanels[_page].name.Replace("_", " ");
- }
- }
-
- SetArrowActive();
- }
-
- public void Click_Mode()
- {
- IsOtherMode = !IsOtherMode;
- SetMode();
- CheckControl();
- }
-
- private void SetMode()
- {
- panelTransformDefault.gameObject.SetActive(!IsOtherMode);
- if(otherPanels.Count > 0) panelTransformOther.gameObject.SetActive(IsOtherMode);
- }
- }
- }
|