Unity如何在脚本中使用本地话字符?

简单的脚本调用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
// part one
private string lsCurScence, lsGameTime, lsSaveTime, lsAutoSave, lsSave;

// part two
public LocalizedStringTable stringTable = new LocalizedStringTable { TableReference = "UI" };

// part three
void LoadLocalizationString(StringTable table)

首先第一部分,我们要声明用于保存本地化后的字符串的对象。
然后第二部分,选择你保存了这些词的词表,在创建词表的时候你应该设置了一个词表名。
最后是第三部分,在LoadLocalizarionString函数中获取你的本地化结果。

第三步:使用本地化结果

使用他们就像使用一个简单的字符串对象一样简单毕竟他们就是字符串对象。你可以在脚本的任何地方调用这些字符串,任何地方。无需担心它何时会更新。我们的脚本在OnEnable函数中注册了回调函数——LoadLocalizationString函数,它会重新获取本地化结果,这样保证了你每次获取的字符串总是和本地同步。


Unity如何在脚本中使用本地话字符?
http://hexo.zhywyt.me/posts/59a4f8f59f45/
作者
zhywyt
发布于
2024年10月5日
更新于
2024年11月25日
许可协议