TH1/My project/Assets/Scripts/Logic/Multilingual/MultilingualTextMono.cs
2025-06-13 03:56:58 +08:00

73 lines
1.7 KiB
C#

/*
* @Author: 白哉
* @Description:
* @Date: 2025年05月26日 星期一 14:05:50
* @Modify:
*/
using System.Collections.Generic;
using System.Text.RegularExpressions;
using TMPro;
using UnityEngine;
namespace Logic.Multilingual
{
public class MultilingualTextMono : MonoBehaviour
{
public bool Ban;
public uint ID = 0;
public uint FontID = 0;
private List<string> _paramList;
public List<string> ParamList
{
get => _paramList ??= new List<string>();
set => _paramList = value;
}
private void OnEnable()
{
if (Ban) return;
OnMultilingualChanged();
}
public void OnMultilingualChanged()
{
if (Ban) return;
BindFontID();
var text = GetComponent<TextMeshProUGUI>();
if (!text) return;
if (ID != 0) text.text = MultilingualManager.Instance.GetMultilingualText(ID);
if (FontID != 0)
{
var font = MultilingualManager.Instance.GetMultilingualFont(FontID);
if (font)text.font = font;
}
if (_paramList != null && _paramList.Count != 0)
{
int index = 0;
text.text = Regex.Replace(text.text, "{param}", m =>
index < _paramList.Count ? _paramList[index++] : m.Value);
}
}
public void BindFontID()
{
if (Ban) return;
if (FontID != 0) return;
var text = GetComponent<TextMeshProUGUI>();
if (!text) return;
FontID = MultilingualManager.Instance.GetFontGroupID(text.font);
}
}
}