73 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|
|
} |