97 lines
2.8 KiB
C#
97 lines
2.8 KiB
C#
using UnityEngine;
|
|
using TMPro;
|
|
using System.Collections;
|
|
using Yarn.Unity;
|
|
using AibisDream;
|
|
|
|
public class MessageBox : MonoBehaviour
|
|
{
|
|
public static MessageBox Instance { get; private set; }
|
|
public TMP_Text state; // 显示状态的TextMeshPro组件
|
|
public TMP_Text text; // 显示消息的TextMeshPro组件
|
|
private void Awake()
|
|
{
|
|
// 确保单例模式
|
|
if (Instance != null && Instance != this)
|
|
{
|
|
Destroy(gameObject);
|
|
}
|
|
else
|
|
{
|
|
Instance = this;
|
|
//DontDestroyOnLoad(gameObject); // 可选:保持在场景加载之间
|
|
}
|
|
}
|
|
// Yarn Command处理方法
|
|
// [YarnCommand("messagebox")]
|
|
// public void HandleMessageBoxCommand(string type, string message)
|
|
// {
|
|
// switch (type.ToLower())
|
|
// {
|
|
// case "warning":
|
|
// SetWarning(message);
|
|
// break;
|
|
// case "normal":
|
|
// SetNormal(message);
|
|
// break;
|
|
// case "null":
|
|
// SetNull();
|
|
// break;
|
|
// default:
|
|
// Debug.LogError("Invalid message type for messagebox command: " + type);
|
|
// break;
|
|
// }
|
|
// }
|
|
private void Start()
|
|
{
|
|
SetNull();
|
|
}
|
|
|
|
// 设置为Warning状态
|
|
private void SetWarning(string message)
|
|
{
|
|
state.text = "WARNING";
|
|
state.color = Color.red; // 红色
|
|
text.text = message;
|
|
text.color = Color.white; // 默认文本颜色
|
|
//StartCoroutine(FlashWarning()); // 开始闪烁效果
|
|
}
|
|
|
|
// 设置为Normal状态
|
|
private void SetNormal(string message)
|
|
{
|
|
state.text = "NORMAL";
|
|
state.color = new Color(1.0f, 0.55f, 0.0f); // 琥珀色
|
|
text.text = message;
|
|
text.color = Color.white; // 默认文本颜色
|
|
//StopCoroutine(FlashWarning()); // 停止闪烁效果(如果正在闪烁)
|
|
}
|
|
|
|
// 设置为Null状态
|
|
private void SetNull()
|
|
{
|
|
state.text = "NO SIGNAL";
|
|
state.color = Color.blue; // 蓝色
|
|
text.text = string.Empty;
|
|
text.color = Color.white; // 默认文本颜色
|
|
//StopCoroutine(FlashWarning()); // 停止闪烁效果(如果正在闪烁)
|
|
}
|
|
|
|
// 闪烁警告效果
|
|
private IEnumerator FlashWarning()
|
|
{
|
|
AudioManager.SetinteractionSourceVolume(0.35f);
|
|
AudioManager.RandomPlayInteraction("beep_warning");
|
|
for (int i = 0; i < 2; i++)
|
|
{
|
|
state.enabled = false;
|
|
yield return new WaitForSeconds(0.3f); // 闪烁间隔
|
|
state.enabled = true;
|
|
yield return new WaitForSeconds(0.3f); // 闪烁间隔
|
|
}
|
|
AudioManager.SetinteractionSourceVolume(1f);
|
|
state.enabled = true; // 确保闪烁后状态仍然可见
|
|
|
|
}
|
|
}
|