各位大家好,

我碰到了一个奇怪的问题。但是当我导出我的 Unity 项目,并在一个新的项目中导入时会出现这个问题。

具体步骤如下:

  1. 我导出了我的项目(以包形式导出),这个包里包括:
    • 所有的本地化表(GameText)
    • 所有的语言 / 地域
    • 本地化设置
  2. 但是,我并没有导出 Addressables 设置。
  3. 在新的项目中,我重复设置了以下步骤:
    1. 在 Edit → Project Settings → Localization → Add All 菜单中添加了所有的语言
    2. 打开 Addressables 窗口:Window → Asset Management → Addressables
    3. 将所有的本地化表添加到 Default 组中
    4. 使用 New Build → Default Build Script 构建 Addressables

缺点如下:

  • 在 本地化窗口中,表格和键都可见
  • 在 运行时,游戏显示的是键而不是翻译过的文本(例如 level_button)
  • 本地化表格窗口显示了 1000+ 个错误

错误示例

AddressableEntryNotFoundException:GameText_en 未找到 Addressable 资源。

UnityEditor.Localization.LocalizationEditorSettings.GetPreloadTableFlagInternal (UnityEngine.Localization.Tables.LocalizationTable table) (at ./Library/PackageCache/com.unity.localization@2baf2a27280b/Editor/Settings/LocalizationEditorSettings.cs:736)

UnityEditor.Localization.LocalizationEditorSettings.GetPreloadTableFlag (UnityEngine.Localization.Tables.LocalizationTable table) (at ./Library/PackageCache/com.unity.localization@2baf2a27280b/Editor/Settings/LocalizationEditorSettings.cs:319)

UnityEditor.Localization.LocalizationTableCollection+<>c.b__36_0 (UnityEngine.LazyLoadReference1[T] tbl) (at ./Library/PackageCache/com.unity.localization@2baf2a27280b/Editor/Settings/LocalizationTableCollection.cs:226) System.Collections.Generic.List1[T].TrueForAll (System.Predicate`1[T] match) (at :0)

UnityEditor.Localization.LocalizationTableCollection.IsPreloadTableFlagSet () (at ./Library/PackageCache/com.unity.localization@2baf2a27280b/Editor/Settings/LocalizationTableCollection.cs:226)

UnityEditor.Localization.UI.LocalizationTablesWindow.TableCollectionSelectionChanged () (at ./Library/PackageCache/com.unity.localization@2baf2a27280b/Editor/UI/Tables/LocalizationTablesWindow.cs:265)

UnityEditor.Localization.UI.LocalizationTablesWindow.OnTableContentsIMGUI () (at ./Library/PackageCache/com.unity.localization@2baf2a27280b/Editor/UI/Tables/LocalizationTablesWindow.cs:297)

UnityEngine.UIElements.IMGUIContainer.DoOnGUI (UnityEngine.Event evt, UnityEngine.Matrix4x4 parentTransform, UnityEngine.Rect clippingRect, System.Boolean isComputingLayout, UnityEngine.Rect layoutSize, System.Action onGUIHandler, System.Boolean canAffectFocus) (at /Users/bokken/build/output/unity/unity/Modules/UIElements/Core/IMGUIContainer.cs:407)

UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&) (at /Users/bokken/build/output/unity/unity/Modules/IMGUI/GUIUtility.cs:224)

情况如下:

  • 表格存在
  • 鲜艳的键存在
  • 语言存在
  • 但是, 本地化在 运行时并不解析

问题是:

在 移动项目、设置 Localization 和 Addressables 后是否缺少了额外的设置步骤?

任何帮助都将大有干系

我也创造了一个 Unity 论坛的帖子。