本文最后更新于 2024-11-25T11:47:09+00:00
简单的脚本调用Localization
组件字符实现方法
首先确保你已经正确的在项目中安装了Lcolization
组件,然后创建了词表。你可以在窗口/资产管理/Localization Tables
中找到你现在已有的词表。
但是在这之前你也需要在编辑/项目设置/Localization
中创建Locale
,这一步请自行STFW
。
我创建了几个词用于演示。你可以自行创建需要的词语。
第一步:在需要使用的脚本中添加引用
1 2 3
| using UnityEngine.Localization.Settings; using UnityEngine.Localization.Tables; using UnityEngine.Localization;
|
大多使用我们都会用到他们。
第二步:添加本地化模块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #region 本地化 private string lsCurScence, lsGameTime, lsSaveTime, lsAutoSave, lsSave; public LocalizedStringTable stringTable = new LocalizedStringTable { TableReference = "UI" };
private void OnEnable() { stringTable.TableChanged += LoadLocalizationString; } private void OnDisable() { stringTable.TableChanged -= LoadLocalizationString; } void LoadLocalizationString(StringTable table) { lsCurScence = GetLocalizedString(table, "CurrentScence"); lsGameTime = GetLocalizedString(table, "GameTime"); lsSaveTime = GetLocalizedString(table, "SaveTime"); lsAutoSave = GetLocalizedString(table, "AutoSave"); lsSave = GetLocalizedString(table, "Save"); } static string GetLocalizedString(StringTable table, string key) { if(table == null || key == null) { Debug.Log("[LocalLization LOG] Table OR Key is null!"); return null; } var entry = table.GetEntry(key); if (entry == null) { Debug.Log("[LocalLization LOG] There is not key: " + key); return null; } return entry.GetLocalizedString(); } #endregion
|
你只需要关心三个地方:
1 2 3 4 5 6 7 8
| private string lsCurScence, lsGameTime, lsSaveTime, lsAutoSave, lsSave;
public LocalizedStringTable stringTable = new LocalizedStringTable { TableReference = "UI" };
void LoadLocalizationString(StringTable table)
|
首先第一部分,我们要声明用于保存本地化后的字符串的对象。
然后第二部分,选择你保存了这些词的词表,在创建词表的时候你应该设置了一个词表名。
最后是第三部分,在LoadLocalizarionString
函数中获取你的本地化结果。
第三步:使用本地化结果
使用他们就像使用一个简单的字符串对象一样简单毕竟他们就是字符串对象。你可以在脚本的任何地方调用这些字符串,任何地方。无需担心它何时会更新。我们的脚本在OnEnable
函数中注册了回调函数——LoadLocalizationString
函数,它会重新获取本地化结果,这样保证了你每次获取的字符串总是和本地同步。