From 0254e40afe29cef49bfc9f37000c73b4cd0dc935 Mon Sep 17 00:00:00 2001 From: wuwenbo Date: Fri, 29 May 2026 17:56:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=9A=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E7=A9=BA=E7=99=BD=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TH1_Logic/Editor/MultilingualEditorWindow.cs | 6 ++++-- .../TH1_Logic/Multilingual/MultilingualData.cs | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Unity/Assets/Scripts/TH1_Logic/Editor/MultilingualEditorWindow.cs b/Unity/Assets/Scripts/TH1_Logic/Editor/MultilingualEditorWindow.cs index c075f7ca3..03fb56ff1 100644 --- a/Unity/Assets/Scripts/TH1_Logic/Editor/MultilingualEditorWindow.cs +++ b/Unity/Assets/Scripts/TH1_Logic/Editor/MultilingualEditorWindow.cs @@ -244,7 +244,7 @@ namespace Logic.Editor } ExportMatchLevelData(); - _asset.RefreshDict(); + _asset.RefreshDict(true); foreach (var kv in _zhStrDict) { if (_asset.ItemDict.ContainsKey(kv.Value)) continue; @@ -262,6 +262,7 @@ namespace Logic.Editor } _asset.Items = _asset.Items.OrderBy(i => i.ID).ToList(); + _asset.RefreshDict(true); string filePath = MultilingualTxtPath; Directory.CreateDirectory(Path.GetDirectoryName(filePath)); @@ -1326,7 +1327,7 @@ namespace Logic.Editor // _zhStrDict[kv.Key] = kv.Value; // } - _asset.RefreshDict(); + _asset.RefreshDict(true); foreach (var kv in _zhStrDict) { if (_asset.ItemDict.ContainsKey(kv.Value)) continue; @@ -1345,6 +1346,7 @@ namespace Logic.Editor // 排序 asset.items 保证id从小到大 _asset.Items = _asset.Items.OrderBy(i => i.ID).ToList(); + _asset.RefreshDict(true); string filePath = MultilingualTxtPath; Directory.CreateDirectory(Path.GetDirectoryName(filePath)); diff --git a/Unity/Assets/Scripts/TH1_Logic/Multilingual/MultilingualData.cs b/Unity/Assets/Scripts/TH1_Logic/Multilingual/MultilingualData.cs index 9b14c8cec..9efa72be4 100644 --- a/Unity/Assets/Scripts/TH1_Logic/Multilingual/MultilingualData.cs +++ b/Unity/Assets/Scripts/TH1_Logic/Multilingual/MultilingualData.cs @@ -81,7 +81,11 @@ namespace Logic.Multilingual { if (_itemDict == null) RefreshDict(); if (_itemDict == null) return string.Empty; - if (!_itemDict.TryGetValue(id, out var item)) return string.Empty; + if (!_itemDict.TryGetValue(id, out var item)) + { + RefreshDict(true); + if (!_itemDict.TryGetValue(id, out item)) return string.Empty; + } var ret = item.GetStrByType(type); // Fallback 链: @@ -159,10 +163,10 @@ namespace Logic.Multilingual return 0; } - public void RefreshDict() + public void RefreshDict(bool force = false) { if (_itemDict == null) _itemDict = new Dictionary(); - if (_itemDict.Count == Items.Count) return; + if (!force && _itemDict.Count == Items.Count) return; _itemDict.Clear(); foreach (var item in Items) _itemDict[item.ID] = item; } @@ -178,7 +182,11 @@ namespace Logic.Multilingual { if (_itemDict == null) RefreshDict(); if (_itemDict == null) return string.Empty; - if (!_itemDict.TryGetValue(id, out var item)) return string.Empty; + if (!_itemDict.TryGetValue(id, out var item)) + { + RefreshDict(true); + if (!_itemDict.TryGetValue(id, out item)) return string.Empty; + } var ret = item.GetStrByType(type); if (string.IsNullOrEmpty(ret)) return ret;