Files
MMORPG/Packages/com.unity.inputsystem/Samples~/RebindingUI/Game/Message.cs
cooney ce83f21c93 UI 자동화를 위해 바인딩 기능 구현
- 유니티 에셋 인증 오류로 meta 재생성
2026-01-25 01:31:34 +09:00

88 lines
2.5 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UI;
namespace UnityEngine.InputSystem.Samples.RebindUI
{
/// <summary>
/// A UI to show messages reflecting changes to gameplay state.
/// </summary>
public class Message : MonoBehaviour
{
[Tooltip("The associated gameplay manager.")]
public GameplayManager gameplayManager;
[Tooltip("The associated UI root to hide/show.")]
public GameObject root;
[Tooltip("The associated UI text to be altered to show messages.")]
public Text text;
private Action m_TimeoutCallback;
private void OnEnable()
{
// Monitor changes to gameplay state and game pause state.
gameplayManager.GameplayStateChanged += OnGameplayStateChanged;
gameplayManager.PauseChanged += OnPauseChanged;
// Initialize
OnGameplayStateChanged(gameplayManager.state);
}
private void OnDisable()
{
// Unsubscribe from monitoring gameplay and pause state.
gameplayManager.GameplayStateChanged += OnGameplayStateChanged;
gameplayManager.PauseChanged -= OnPauseChanged;
}
private void OnPauseChanged(bool paused)
{
OnGameplayStateChanged(gameplayManager.state);
}
private void Hide()
{
root.SetActive(false);
}
private void Show(string message)
{
text.text = message;
root.SetActive(true);
}
private void Show(string message, float duration)
{
Show(message);
}
private void OnGameplayStateChanged(GameplayManager.GameplayState state)
{
if (gameplayManager.paused)
{
Show("PAUSED");
return;
}
switch (state)
{
case GameplayManager.GameplayState.None:
break;
case GameplayManager.GameplayState.StartLevel:
Show($"ROUND {gameplayManager.level}");
break;
case GameplayManager.GameplayState.CompleteLevel:
break;
case GameplayManager.GameplayState.Playing:
Hide();
break;
case GameplayManager.GameplayState.GameOver:
Show("GAME OVER");
break;
}
}
}
}