This commit is contained in:
daixiawu 2025-05-28 21:31:02 +08:00
commit 69715ba9df
2 changed files with 40 additions and 7 deletions

View File

@ -155,18 +155,41 @@ namespace Logic.Editor
{
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
InspectorUtils.InspectorTextWidthRich($"<b>{item.ID} : </b>");
InspectorUtils.InspectorTextWidthRich($" <b>中文:{item.ZH} </b>");
InspectorUtils.InspectorTextWidthRich($" <b>中文:</b> {item.ZH}");
if (!string.IsNullOrEmpty(item.EN))
InspectorUtils.InspectorTextWidthRich($" <b>英语:{item.EN} </b>");
InspectorUtils.InspectorTextWidthRich($" <b>英语:</b> {item.EN}");
if (!string.IsNullOrEmpty(item.JP))
InspectorUtils.InspectorTextWidthRich($" <b>日语:{item.JP} </b>");
InspectorUtils.InspectorTextWidthRich($" <b>日语:</b> {item.JP}");
if (!string.IsNullOrEmpty(item.KR))
InspectorUtils.InspectorTextWidthRich($" <b>韩语:{item.KR} </b>");
InspectorUtils.InspectorTextWidthRich($" <b>韩语:</b> {item.KR}");
var unicode = "";
foreach (var c in item.ZH) unicode+= $"{(int)c:X4} ";
InspectorUtils.InspectorTextWidthRich($" <b>Unicode</b> {unicode}");
EditorGUILayout.EndVertical();
EditorGUILayout.Space();
}
// 新增辅助方法:移除 CSV 字段两端的引号并处理内部转义
private void DuplicateRemoval()
{
// 排序 asset.items 保证id从小到大
_asset.Items = _asset.Items.OrderBy(i => i.ID).ToList();
_zhStrDict.Clear();
var deleteItem = new HashSet<MultilingualItem>();
foreach (var item in _asset.Items)
{
if (_zhStrDict.ContainsKey(item.ZH))
{
deleteItem.Add(item);
continue;
}
_zhStrDict[item.ZH] = item.ID;
}
foreach (var item in deleteItem) _asset.Items.Remove(item);
_asset.RefreshDict();
}
private string RemoveCsvQuotes(string field)
{
if (string.IsNullOrEmpty(field)) return field;
@ -218,6 +241,7 @@ namespace Logic.Editor
private void AssetExportToExcel()
{
_zhStrDict.Clear();
DuplicateRemoval();
foreach (var item in _asset.Items) _zhStrDict[item.ZH] = item.ID;
if (_asset.Items.Count != 0) _idIndex = _asset.Items[^1].ID + 1;
else _idIndex = 1;
@ -283,7 +307,7 @@ namespace Logic.Editor
StringBuilder sb = new StringBuilder();
foreach (var item in _asset.Items)
{
sb.Append($"{item.ID}%$#@!{item.ZH}%$#@!{item.EN}%$#@!{item.JP}%$#@!{item.KR}!@#$%\n");
sb.Append($"{item.ID}%$#@!{item.ZH}%$#@!{item.EN}%$#@!{item.JP}%$#@!{item.KR}!@#$%");
}
sw.Write(sb.ToString());
}

View File

@ -24,23 +24,26 @@ namespace Logic.Multilingual
public void Init()
{
if (!_multilingualData) _multilingualData = Resources.Load<MultilingualData>("Export/Multilingual");
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();
@ -48,6 +51,7 @@ namespace Logic.Multilingual
public uint GetFontGroupID(TMP_FontAsset font)
{
RefreshMultilingualData();
return _multilingualData.GetFontGroupID(font);
}
@ -61,6 +65,11 @@ namespace Logic.Multilingual
multilingual.OnMultilingualChanged();
}
private void RefreshMultilingualData()
{
if (!_multilingualData) _multilingualData = Resources.Load<MultilingualData>("Export/Multilingual");
}
private void RefreshTextComs()
{
var uiObj = GameObject.Find("UICanvas");