图片快播伦理影院
图片
弁言 Unity的多话语腹地化是一个很实用的功能,它可以匡助游戏复旧多种话语,让不同话语的玩家都好像更好地体验游戏。而罢了腹地化的决策也有许多种,各个决策之间也各有优劣,后头也会对多个决策进行先容学习。本文就来先容一个有益作用于多话语腹地化的Unity官方插件:Localization 。这个插件浅薄进行游戏的多话语腹地化,让游戏复旧多种话语,底下就来望望该插件的使用秩序吧! 【Unity 实用器具篇】| 游戏多话语处置决策,官方插件Localization 罢了腹地化及多种话语切换 一、多话语腹地化插件 Localization 1.1 先容Localization是Unity官方推出的腹地化插件,它可以匡助开采者在Unity神色中罢了多话语复旧。
在Unity中,Localization的责任旨趣是创建多个表格来存储不同话语的不同字符串。
可以通过Localization Tables创建这些表格,表格可以成立不同资源之间的对应联系,一个key对应多个话语的资源。
通过使用Localization插件,开采者可以浅薄地竖立和获取面前话语和面前话语地区,从而为游戏或运用秩序提供多种话语的复旧。
这关于那些需要面向不同地区和不同话语的用户发布游戏或运用秩序的开采者来说是相配灵验的。
1.2 成果展示图片
1.3 使用诠释官方文档:官方文档
本文使用的Localization版块为1.4.5,Unity引擎版块为2023.1.9。
后续插件可能会有更新,或者使用老版块的插件时功能使用上可能会有所不同,本色使用时按照我方的版块条款即可。
二、 插件导入并建树 2.1 装置 Localization开放菜单栏 Window -> Package Manager ,在搜索框中搜索Localization 并进行装置即可。
要真贵Packages摄取Unity Registry,否则可能搜不到该插件哦。
图片
2.2 全局建树开放菜单栏 Edit -> Project Settings -> Localization -> Create,找到Localization,点击Create创建,并摄取一个文献目次进行文献保存。
图片
点击 Locale Generator 搜索zh和en添加中英文建树,第一次添加时会让咱们摄取一个文献夹目次保存。
图片
Locale Generator 用于添加或移出话语,每添加一种话语也会生成对应的建树文献,然后可以修改默许话语为汉文,如下图所示:
图片
三、多话语映射表 3.1 创建多话语文本建树表开放菜单栏 Window -> Asset Management -> Localization Tables ,点击New Table Collection创建表格。
该表格用于成立不同资源之间的对应联系,一个key对应多个话语的资源,可以摄取创建文本表或者资源表。
这里咱们摄取文本表(String Table Collection)使用,写好表名后点击Create就可以创建了,然后摄取一个旅途目次进行保存。
图片
经过上头几个建树后可以在咱们前边保存文献的旅途下看到有关的文献,这里最佳是凭证我方的情况摄取符合的文献夹进行不断保存。
图片
3.2 添增加话语文本建树表内容此时在Localization Tables中添增加话语文本即可,建树内容主淌若Key和对应多种话语的文本。
可通过Window -> Asset Management -> Localization Tables 开放该窗口。
图片
本色神色中不一定将多话语内容沿途写在一个建树表中,不同的文本内容也可以通过创建多个建树表进行填写,让不同的模块我方不断文本内容亦然一个可以的摄取。
3.3 静态文本此时在场景中添加一个文本组件Text,然后在该组件右侧菜单处点击Localize,会自动添加一个Localize String Event组件。 (这里也可以手动不才面添加Localize String Event组件,不外还要手动建树该组件绑定的Text组件,略微坚苦一些,功能都是同样的)
图片
此时在该组件中的String Reference参数中摄取之前建树的多话语文本建树表中的Key即可完成多话语的建树快播伦理影院。
图片
此时运行秩序,可以看到该Text组件的文本内容还是形成咱们建树多话语文本建树表中的Key对应的文本了。
通过Game视图右上角的话语摄取可以切换语种,点击切换不同话语后,Game视图中的文本也会即时的随着切换了。
图片
这么咱们的静态文本就可以通过这种秩序来添增加话语文本建树表中的Key绑定多话语了。
也可以通过剧本落幕话语的切换,测试代码如下:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Localization; using UnityEngine.Localization.Settings; using UnityEngine.ResourceManagement.AsyncOperations; public class LanguageManager : MonoBehaviour { AsyncOperationHandle m_InitializeOperation; private Locale _chineseLocale; private Locale _englishLocale; void Start() { // SelectedLocaleAsync will ensure that the locales have been initialized and a locale has been selected. m_InitializeOperation = LocalizationSettings.SelectedLocaleAsync; if (m_InitializeOperation.IsDone) { InitializeCompleted(m_InitializeOperation); } else { m_InitializeOperation.Completed += InitializeCompleted; } } void InitializeCompleted(AsyncOperationHandle obj) { var locales = LocalizationSettings.AvailableLocales.Locales; for (int i = 0; i < locales.Count; ++i) { var locale = locales[i]; if (locale.LocaleName == "Chinese (Simplified) (zh)") { _chineseLocale = locale; } else if (locale.LocaleName == "English (en)") { _englishLocale = locale; } } } public void SwitchChinese() { LocalizationSettings.Instance.SetSelectedLocale(_chineseLocale); } public void SwitchEnglish() { LocalizationSettings.Instance.SetSelectedLocale(_englishLocale); } }
将该剧本挂载到场景中,并在场景中添加两个Button远离绑定切换中英文的秩序即可。
图片
上述剧本代码也可以换成下方这种,更轻视淡漠的秩序切换话语。
using UnityEngine; using UnityEngine.Localization.Settings; public class LanguageManager : MonoBehaviour { public void SwitchChinese() { LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[0]; } public void SwitchEnglish() { LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[1]; } }
索引值为Localization 的建树项中的多种话语的功令,如下方第一个话语为汉文则索引为0。
图片
3.2 动态文本除了可以竖立静态文本,也可以在代码中获取对应的文本并进行径态竖立,底下看一下动态文本的竖立秩序。
竖立动态文本的秩序有许多种,可以看情况摄取,具体旨趣可以在官方文档仔细查阅,这里就径直写几种秩序的使用示例。
1.最轻视淡漠的秩序,径直动态读表赋值。
哥也搞using UnityEngine; using UnityEngine.Localization.Settings; using UnityEngine.UI; public class TestLocalization : MonoBehaviour { public Text text; void Start() { var loadingResult = LocalizationSettings.StringDatabase.GetTableEntry("UITestTable", "ui_Test"); text.text = loadingResult.Entry.GetLocalizedString(); } }
GetTableEntry() 第一个参数为多话语建树表的名字,第二个参数为该表内部的Key。
通历秩序传入多话语建树表的名字及对应多话语的Key即可完成动态文本赋值。
不外要真贵的是字符串表可能不会立即可用,举例在腹地化系统开动化本领或尚未加载表时。
为了保障起见,可以确保该多话语建树表被加载出之后再进行赋值,可以来看第二种秩序的使用示例。
2.恭候话语建树表开动化之后在赋值。
using System.Collections; using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine; using UnityEngine.Localization.Settings; using UnityEngine.UI; public class TestLocalization : MonoBehaviour { public Text text; void Start() { StartCoroutine(LoadStrings()); } IEnumerator LoadStrings() { // A string table may not be immediately available such as during initialization of the localization system or when a table has not been loaded yet. var loadingOperation = LocalizationSettings.StringDatabase.GetTableAsync("UITestTable"); yield return loadingOperation; if (loadingOperation.Status == AsyncOperationStatus.Succeeded) { var stringTable = loadingOperation.Result; text.text = stringTable.GetEntry("ui_Test").GetLocalizedString(); } else { Debug.LogError("Could not load String Table\n" + loadingOperation.OperationException.ToString()); } } }
3.开动化时得回该多话语建树表,事件动态更新文本。
using UnityEngine; using UnityEngine.Localization; using UnityEngine.Localization.Tables; using UnityEngine.UI; public class Demo : MonoBehaviour { public Text Name; private LocalizedStringTable stringTable = new LocalizedStringTable { TableReference = "UITestTable" }; void OnEnable() { stringTable.TableChanged += LoadStrings; } void OnDisable() { stringTable.TableChanged -= LoadStrings; } void LoadStrings(StringTable stringTable) { Name.text = GetLocalizedString(stringTable, "ui_Test"); } static string GetLocalizedString(StringTable table, string entryName) { var entry = table.GetEntry(entryName); return entry.GetLocalizedString(); } }
以上几种秩序都可以平素使用,凭证本色需求摄取符合的即可。
四、资源多话语映射表除了上头说到的文本的腹地化以外,Localization 还复旧资源腹地化,使用秩序与建树文本的秩序近似,底下来看一下。
开放菜单栏 Window -> Asset Management -> Localization Tables ,点击New Table Collection创建表格。
该表格用于成立不同资源之间的对应联系,一个key对应多个话语的资源,这里摄取创建一个资源建树表(AssetsTable Collection),写好表名后点击Create就可以创建了,然后摄取一个旅途目次进行保存。
图片
创建完之后与文本建树的处理面容同样,在表中添加Key以及资源的内容,测试示举例下:
图片
然后在场景中添加一个Image组件,在右侧菜单点击Localize(或者我方添加组件),摄取咱们添加的资源建树表中的Key即可完成。
图片
成果如下,可以使用秩序落幕切换话语,也可以通过右上角进行切换。
图片
五、映射表 导入/导出 Excel 便于不断当神色中的文本量比拟多的时候,使用Localization Table的秩序会有些难以操作未便于不断。
是以此时可以研究将Localization Table导出为Excel表格对文本进行不断,Localization 是复旧Table的导入和导出的,底下来看一下若何操作。
5.1 导出Localization Table为CSV开放Localization Tables,然后右键Localization Table,摄取 Export -> CSV...导出。
图片
摄取一个文献目次进行保存,就可以看到导出的Excel表格内容了,便是Localization Table中的内容。
图片
5.2 修改Excel中并重新导入在导出的Excel表格中咱们可以进行增调动查的操作对表格进行不断,这么比径直在Localization Table中不断要放肆的多。
图片
修改完之后可以在导入Localization Table中,要真贵的是修改完之后要改成UTF-8的编码样子再保存文献,否则导入之后汉文会清楚乱码。如果不知谈若何径直保存为UTF-8的编码样子,可以使用Notepad++等器具转一下就可以了。
图片
点击Import -> CSV...摄取对应的文献进行导入。
图片
这么就可以看到从Excel中修改后的内容导入到Localization Table中啦。
图片
乱码问题:https://blog.csdn.net/shishuijun/article/details/129961436
六、Build如果需要打包项看法话还需要对Localization Tables进行Build一次,秩序也很轻视,底下看一下若何操作。
开放菜单栏 Window -> Asset Management -> Addressables -> Groups。
图片
然后在该窗口中摄取Build -> New Build -> Defaul Build Script 进行Build,恭候Build完成即可。
图片
回归 Localization 器具的优点在于该插件是Unity引擎原生处置决策,使用时只需要通过Package Manger导入即可。导入及建树都比拟轻视,关于一些文本量不是很大的神色来说,该决策相配的符合。当神色对文本量需求相配大的时候,就需要协作Excel来不断了。整理来说成果可以,操作轻视易上手,基本功能都有,是值得学习的一款多话语腹地化处置决策。🎁🎁🎁 终末给大家保举一个功能王人全并且很好用的 IP代理网站:IPIDEA
使用这个代理IP,可以很放肆地访谒被阻滞的网站,幸免被跟踪和监控,保护我方的诡秘和安全。并且这个代理IP还可以匡助咱们加快网页的加载速率,提升责任着力。
面前使用这个麇集(https://share.ipidea.net/YYYYYY)注册的新用户还可以径直白嫖最少300M的流量,注册认证后最高可以送7.5G流量哦!
加上最连年终也有行径,优惠力度照旧蛮大的,有需要的小伙伴可以去搞一下试试,注册 == 白嫖。
如果对此相配感兴味之前没灵验过或者不会使用的小伙伴也毋庸恐忧,在官网都有详备的教程可以看,后头随机刻的话也可以出一期教程匡助大家快速上手使用的哦!
🎬 博客主页:https://xiaoy.blog.csdn.net
🎥 本文由 呆呆敲代码的小Y 原创 🙉
🎄 学习专栏保举:Unity系统学习专栏
🌲 游戏制作专栏保举:游戏制作
🌲Unity实战100例专栏保举:Unity 实战100例 教程
🏅 接待点赞 👍 保藏 ⭐留言 📝 如有失实敬请指正!
📆 改日很长,值得咱们全力奔赴更好意思好的生计✨
------------------❤️分割线❤️-------------------------
图片
图片
图片
图片
本站仅提供存储处事,统统内容均由用户发布,如发现存害或侵权内容,请点击举报。