DEG-86 [Feat] 팝업 및 설정 UI 스크립트 추가

This commit is contained in:
Lim0_C 2025-04-29 15:49:14 +09:00
parent c436a73f5c
commit a77e1ab6e2
10 changed files with 92 additions and 33 deletions

BIN
Assets/LYM/Scenes/MainUI.unity (Stored with Git LFS)

Binary file not shown.

View File

@ -5,14 +5,18 @@ using UnityEngine.UI;
public class MainUIPanelController : MonoBehaviour public class MainUIPanelController : MonoBehaviour
{ {
[SerializeField] private GameObject settingsPanelPrefab;
[SerializeField] private GameObject popupPanelPrefab;
public void OnClickStartButton() public void OnClickStartButton()
{ {
var popupPanel = Instantiate(popupPanelPrefab, transform);
popupPanel.GetComponent<PopupPanelController>().Show("This is PopupPanel!!", () => {Debug.Log("Confirmed");});
} }
public void OnClickSettingsButton() public void OnClickSettingsButton()
{ {
var settingsPanel = Instantiate(settingsPanelPrefab, transform);
settingsPanel.GetComponent<SettingsPanelController>().Show();
} }
} }

View File

@ -26,5 +26,6 @@ public class PanelController : MonoBehaviour
{ {
if (_canvasGroup == null) return; if (_canvasGroup == null) return;
_canvasGroup.alpha = 0; _canvasGroup.alpha = 0;
Destroy(gameObject);
} }
} }

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
@ -8,26 +9,18 @@ public class PopupPanelController : PanelController
{ {
[SerializeField] private GameObject confirmButton; [SerializeField] private GameObject confirmButton;
[SerializeField] private GameObject contradictButton; [SerializeField] private GameObject contradictButton;
[SerializeField] private TMP_Text popupText;
public delegate void OnConfirmDelegate(); public delegate void OnConfirmDelegate();
private OnConfirmDelegate _onConfirmDelegate; private OnConfirmDelegate _onConfirmDelegate;
public delegate void OnContradictDelegate(); public delegate void OnContradictDelegate();
private OnContradictDelegate _onContradictDelegate; private OnContradictDelegate _onContradictDelegate;
private void Start()
{
Show(false, "수면에 들 시간입니다.", () => {});
}
public void Show(bool isNeed2Contradict, string message, OnConfirmDelegate onConfirm) public void Show(string message, OnConfirmDelegate onConfirm, OnContradictDelegate onContradict = null)
{ {
confirmButton.SetActive(isNeed2Contradict); bool isNeed2Contradict = onContradict != null;
_onConfirmDelegate = onConfirm; contradictButton.SetActive(isNeed2Contradict);
base.Show(); popupText.text = message;
}
public void Show(bool isNeed2Contradict, string message, OnConfirmDelegate onConfirm, OnContradictDelegate onContradict)
{
confirmButton.SetActive(isNeed2Contradict);
_onConfirmDelegate = onConfirm; _onConfirmDelegate = onConfirm;
_onContradictDelegate = onContradict; _onContradictDelegate = onContradict;
base.Show(); base.Show();

View File

@ -1,18 +1,66 @@
using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UnityEngine.UI;
public class SettingsPanelController : MonoBehaviour public class SettingsPanelController : PanelController
{ {
// Start is called before the first frame update
void Start() [SerializeField] private SliderButton sfxSliderButton;
[SerializeField] private SliderButton bgmSliderButton;
[SerializeField] private Slider sfxSlider;
[SerializeField] private Slider bgmSlider;
private void Start()
{ {
InitSettings();
} }
// Update is called once per frame private void InitSettings()
void Update()
{ {
//todo:저장된 데이터를 가져오게 해야함
var sfxIsActive = true;
var bgmIsActive = true;
sfxSliderButton.Init(sfxIsActive);
bgmSliderButton.Init(bgmIsActive);
//todo:저장된 데이터를 가져오게 해야함
var sfxSliderValue = 1f;
var bgmSliderValue = 1f;
sfxSlider.value = sfxSliderValue;
bgmSlider.value = bgmSliderValue;
Show();
}
//버튼 클릭 시 마다 호출
public void SFXSliderButtonClicked()
{
sfxSliderButton.OnClicked();
//todo: sfxSliderButton.IsActive를 기준으로 뮤트 여부 확인 및 뮤트 적용
}
public void BGMSliderButtonClicked()
{
bgmSliderButton.OnClicked();
//todo: sfxSliderButton.IsActive를 기준으로 뮤트 여부 확인 및 뮤트 적용
}
//슬라이더 변경 시 마다 호출
public void OnSFXSliderValueChanged(float value)
{
//todo: 소리 볼륨 조절
Debug.Log("sfx changed value" + value);
}
public void OnBGMSliderValueChanged(float value)
{
//todo: 소리 볼륨 조절
Debug.Log("bgm changed value" + value);
}
public void OnCloseButtonClicked()
{
//todo: 설정 저장 필요
Hide();
} }
} }

View File

@ -1,3 +1,4 @@
using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
@ -15,12 +16,13 @@ public class SliderButton : MonoBehaviour
private Color32 _offColor = new Color32(125, 125, 125, 255); private Color32 _offColor = new Color32(125, 125, 125, 255);
private Color32 _onColor = new Color32(70, 255, 90, 255); private Color32 _onColor = new Color32(70, 255, 90, 255);
public void Init(bool isActive) public void Init(bool isActive)
{ {
IsActive = isActive; IsActive = isActive;
var xLocation = IsActive ? _onXLocation : _offXLocation; var xLocation = IsActive ? _onXLocation : _offXLocation;
var color = IsActive ? _onColor : _offColor;
handle.transform.localPosition = new Vector3(xLocation, handle.transform.localPosition.y, 0); handle.transform.localPosition = new Vector3(xLocation, handle.transform.localPosition.y, 0);
backgroundImage.color = color;
} }
public void OnClicked() public void OnClicked()
@ -28,11 +30,12 @@ public class SliderButton : MonoBehaviour
if (IsActive) if (IsActive)
{ {
handle.transform.DOLocalMoveX(_offXLocation, 0.2f); handle.transform.DOLocalMoveX(_offXLocation, 0.2f);
backgroundImage.DOColor() backgroundImage.DOColor(_offColor, 0.2f);
} }
else else
{ {
handle.transform.DOLocalMoveX(_onXLocation, 0.2f); handle.transform.DOLocalMoveX(_onXLocation, 0.2f);
backgroundImage.DOColor(_onColor, 0.2f);
} }
IsActive = !IsActive; IsActive = !IsActive;
} }

BIN
Assets/LYM/UIPrefabs/MainUIPanel.prefab (Stored with Git LFS)

Binary file not shown.

BIN
Assets/LYM/UIPrefabs/PopupPanel.prefab (Stored with Git LFS)

Binary file not shown.

BIN
Assets/LYM/UIPrefabs/SettingsPanel.prefab (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9fe584d3180d4924e97a2084be3b454e
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: