2026-04-28 게임가이드
This commit is contained in:
97
Assets/02_Scripts/UI/GuidePanel.cs
Normal file
97
Assets/02_Scripts/UI/GuidePanel.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace VRShopping.UI
|
||||
{
|
||||
// 게임씬 첫 진입 시 자동으로 뜨는 다중 페이지 가이드 오버레이
|
||||
// ITransScenePossible 콜백으로 씬 로드 후 트리거됨
|
||||
public class GuidePanel : MonoBehaviour, ITransScenePossible
|
||||
{
|
||||
[Header("Refs")]
|
||||
[SerializeField] private GameObject _root;
|
||||
[SerializeField] private Button _prevButton;
|
||||
[SerializeField] private Button _nextButton;
|
||||
|
||||
[Header("Pages")]
|
||||
[SerializeField] private List<GuidePage> _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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user