85 lines
2.5 KiB
C#
85 lines
2.5 KiB
C#
/*
|
|
* @Author: 白哉
|
|
* @Description:
|
|
* @Date: 2025年05月26日 星期一 14:05:31
|
|
* @Modify:
|
|
*/
|
|
|
|
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
|
|
|
|
namespace Logic.Multilingual
|
|
{
|
|
public class MultilingualManager
|
|
{
|
|
public static MultilingualManager Instance = new MultilingualManager();
|
|
private MultilingualData _multilingualData;
|
|
private MultilingualType _currentType;
|
|
private List<MultilingualTextMono> _textComs;
|
|
|
|
|
|
public void Init()
|
|
{
|
|
RefreshMultilingualData();
|
|
_currentType = (MultilingualType)PlayerPrefs.GetInt("Multilingual", 0);
|
|
ChangedMultilingual(_currentType);
|
|
}
|
|
|
|
public string GetMultilingualText(uint id)
|
|
{
|
|
RefreshMultilingualData();
|
|
return _multilingualData.GetMultilingualStr(id, _currentType);
|
|
}
|
|
|
|
public TMP_FontAsset GetMultilingualFont(uint fontId)
|
|
{
|
|
RefreshMultilingualData();
|
|
return _multilingualData.GetMultilingualFont(fontId, _currentType);
|
|
}
|
|
|
|
public void ChangedMultilingual(MultilingualType type)
|
|
{
|
|
RefreshMultilingualData();
|
|
RefreshTextComs();
|
|
_currentType = type;
|
|
foreach (var textCom in _textComs) textCom.OnMultilingualChanged();
|
|
}
|
|
|
|
public uint GetFontGroupID(TMP_FontAsset font)
|
|
{
|
|
RefreshMultilingualData();
|
|
return _multilingualData.GetFontGroupID(font);
|
|
}
|
|
|
|
public void SetUIText(TextMeshPro textCom, string id)
|
|
{
|
|
if (!textCom) return;
|
|
var multilingual = textCom.gameObject.GetComponent<MultilingualTextMono>();
|
|
|
|
if (!multilingual) multilingual = textCom.gameObject.AddComponent<MultilingualTextMono>();
|
|
multilingual.ID = uint.Parse(id);
|
|
multilingual.OnMultilingualChanged();
|
|
}
|
|
|
|
private void RefreshMultilingualData()
|
|
{
|
|
if (!_multilingualData) _multilingualData = Resources.Load<MultilingualData>("Export/Multilingual");
|
|
}
|
|
|
|
private void RefreshTextComs()
|
|
{
|
|
var uiObj = GameObject.Find("UICanvas");
|
|
if (!uiObj)
|
|
{
|
|
Debug.LogError($"找不到UI根节点");
|
|
return;
|
|
}
|
|
|
|
_textComs = uiObj.GetComponentsInChildren<MultilingualTextMono>(true).ToList();
|
|
}
|
|
}
|
|
} |