Aimbot-ParallelEnv/Assets/Script/MessageBoxController.cs
Koha9 203407693c V3.3.0 MultiLevel功能创建完成
MultiLevel功能创建完成,play模式基本功能适配结束。下次再也不隔这么久commit一次了:(
2023-09-08 07:15:49 +09:00

83 lines
2.5 KiB
C#

using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class MessageBoxController : MonoBehaviour
{
public int maxMessageNum = 50;
public string defaultColor = "white";
public string warningColor = "#ffa500ff";
public string errorColor = "#800000ff";
public GameObject messagePanelObj;
public GameObject messageTextPrefab;
[SerializeField]
private List<Message> messages = new List<Message>();
public void PushMessage(string text)
{
// push simple message to message list
MessageOverflowHandler();
Message newMessage = new Message();
newMessage.text = text;
GameObject newText = Instantiate(messageTextPrefab, messagePanelObj.transform);
newMessage.textObject = newText.GetComponent<TextMeshProUGUI>();
newMessage.textObject.text = newMessage.text;
messages.Add(newMessage);
}
// push multi color message to message list
public void PushMessage(List<string> messageList,List<string> colorList)
{
// check messages and colors list length match
if (messageList.Count != colorList.Count)
{
// delete extra colors or add white color to extra messages
if (messageList.Count > colorList.Count)
{
while(messageList.Count > colorList.Count)
{
colorList.Add(defaultColor);
}
}
else
{
colorList.RemoveRange(messageList.Count, colorList.Count - messageList.Count);
}
}
MessageOverflowHandler();
Message newMessage = new Message();
newMessage.text = "";
// assemble message text with color
for (int i = 0; i < messageList.Count; i++)
{
newMessage.text += "<color=" + colorList[i] + ">" + messageList[i] + "</color>";
}
GameObject newText = Instantiate(messageTextPrefab, messagePanelObj.transform);
newMessage.textObject = newText.GetComponent<TextMeshProUGUI>();
newMessage.textObject.text = newMessage.text;
messages.Add(newMessage);
}
[System.Serializable]
public class Message
{
public string text;
public TMPro.TextMeshProUGUI textObject;
}
private void MessageOverflowHandler()
{
// destroy the oldest message if message list is full
if (messages.Count >= maxMessageNum)
{
Destroy(messages[0].textObject.gameObject);
messages.RemoveAt(0);
}
}
}