using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace VRShopping.UI { // 게임씬 첫 진입 시 자동으로 뜨는 다중 페이지 가이드 오버레이 // ISceneInitializable 콜백으로 씬 로드 후 트리거됨 public class GuidePanel : MonoBehaviour, ISceneInitializable { [Header("Refs")] [SerializeField] private GameObject _root; [SerializeField] private Button _prevButton; [SerializeField] private Button _nextButton; [Header("Pages")] [SerializeField] private List _pages = new(); private int _currentPage; private void Awake() { if (_prevButton != null) _prevButton.onClick.AddListener(GoPrev); if (_nextButton != null) _nextButton.onClick.AddListener(GoNext); Hide(); } // SceneLoadManager가 씬 로드 후 호출 public void OnSceneLoaded() { Show(); } public void Show() { if (_pages == null || _pages.Count == 0) return; _currentPage = 0; ApplyPage(); _root.SetActive(true); } public void Hide() { if (_root != null) _root.SetActive(false); } private void GoPrev() { if (_currentPage <= 0) return; _currentPage--; ApplyPage(); } private void GoNext() { if (_currentPage >= _pages.Count - 1) { Hide(); return; } _currentPage++; ApplyPage(); } private void ApplyPage() { if(_currentPage == 0) { _prevButton.gameObject.SetActive(false); } else { _prevButton.gameObject.SetActive(true); } var currentPage = _pages[_currentPage]; foreach(GuidePage p in _pages) { if(currentPage == p) { p.gameObject.SetActive(true); } else { p.gameObject.SetActive(false); } } if (_prevButton != null) _prevButton.interactable = _currentPage > 0; } } }