【推荐100个unity插件之21】unity实现多语言切换功能——Localization插件的使用

文章目录

  • 前言
  • 优缺点
      • 优点
      • 缺点
  • 安装
  • 创建配置
  • 选择语言
  • 选择默认语言
  • 创建多语言表数据
  • 创建key
  • 配置不同语言文本
  • 预加载
  • 绑定不同多语言文本数据,并显示
  • 语言切换
  • 自己编写按钮控制语言切换
  • 多语言图片切换
  • 在构建中使用Localization
  • 分析错误修复
  • 动态修改多语言文本内容
  • 参考
  • 推荐
  • 完结

注意:学习本教程的第一件事是拥有Unity2021.2或更高版本。

前言

游戏先要国际化,实现多语言切换是必不可少的功能,本文将重点关注一款名为Localization的插件。该插件为Unity开发者提供了一种简单而强大的方式来实现应用程序的多语言支持。通过使用本文提供的技巧和指南,你将能够轻松地为你的游戏或应用程序集成多语言切换功能,从而为全球用户提供更加友好和个性化的体验。

在本文中,我们将深入探讨Localization插件的使用方法、优势和注意事项。我们将从导入插件开始,逐步引导你完成设置语言文件、在代码中使用本地化文本等操作。除此之外,我们还将分享一些实用的小贴士和最佳实践,帮助你充分发挥Localization插件的潜力。

无论你是刚入门Unity开发,还是想要为现有项目添加多语言支持,本文都将为你提供宝贵的经验和见解。让我们一起开始,探索如何利用Localization插件为你的Unity应用添加多语言支持吧!

优缺点

优点

  1. 简化多语言支持:本地化插件可以大大简化在应用程序中实现多语言支持的工作,使得开发者能够更容易地管理和维护多语言文本。

  2. 灵活性:一些本地化插件提供了灵活的配置选项,允许开发者根据需求进行定制化设置,比如动态切换语言、支持富文本等。

  3. 社区支持:一些知名的本地化插件拥有庞大的用户群体和活跃的社区支持,能够提供丰富的文档、教程和解决方案,帮助开发者解决本地化中遇到的问题。

缺点

  1. 学习成本:使用新的本地化插件可能需要一定的学习成本,尤其是熟悉插件的API和工作流程。这可能会增加项目开发的时间和成本。

  2. 依赖性:部分本地化插件可能存在版本更新不及时、兼容性问题或者依赖其他库的情况,需要开发者谨慎考虑项目的依赖性。

  3. 性能:不同的本地化插件可能会对应用程序的性能产生不同程度的影响,特别是在多语言文本较多的情况下需要注意性能损耗。

安装

在这里插入图片描述

创建配置

在这里插入图片描述
在这里插入图片描述

选择语言

在这里插入图片描述

选择默认语言

在这里插入图片描述
这个也设置为英语
在这里插入图片描述

创建多语言表数据

在这里插入图片描述
在这里插入图片描述

创建key

在这里插入图片描述

在这里插入图片描述

配置不同语言文本

在这里插入图片描述

预加载

确保开启了预加载功能
在这里插入图片描述

绑定不同多语言文本数据,并显示

在这里插入图片描述
绑定文本显示事件
在这里插入图片描述
运行效果
在这里插入图片描述

语言切换

右上角切换语言
在这里插入图片描述

自己编写按钮控制语言切换

实际应用我们肯定不会使用自带的语言切换功能,而是自己代码控制
_localeID对应配置语言的索引
1

using UnityEngine;
using UnityEngine.Localization.Settings; // 确保包含 UnityEngine.Localization.Settings 命名空间public class LocaleSelector : MonoBehaviour
{private bool active = false; // 用于跟踪是否正在进行语言环境更改的变量// 方法:根据 LocaleID 更改语言环境public void ChangeLocale(int localeID){if (active) // 如果已经有语言环境更改正在进行,直接退出方法return;StartCoroutine(SetLocale(localeID)); // 启动协程来设置新的语言环境}// 协程:异步设置语言环境IEnumerator SetLocale(int _localeID){active = true; // 设置 active 为 true,表示语言环境更改正在进行中yield return LocalizationSettings.InitializationOperation; // 等待本地化系统初始化完成// 根据 _localeID 设置选定的语言环境LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[_localeID];active = false; // 语言环境更改完成后,重置 active 为 false}
}

配置
在这里插入图片描述
在这里插入图片描述
当然,要记住玩家选译的语言,你需要保存localeID,并在游戏开始时加载对应的语言
在这里插入图片描述

多语言图片切换

新增Asset Table Collection表格数据
在这里插入图片描述
这里使用另外方式配置数据,也就是直接在编辑框配置修改内容
在这里插入图片描述
可以看到表内同步配置好了内容
在这里插入图片描述
同样绑定更新事件
在这里插入图片描述
效果
在这里插入图片描述

在构建中使用Localization

我们还需要做一件事来在构建中使用Localization.
在这里插入图片描述
新增资源
在这里插入图片描述
如果你已经新增过资源,可以选择更新
在这里插入图片描述
清理
在这里插入图片描述

分析错误修复

分析窗口
在这里插入图片描述
点击分析
在这里插入图片描述
如果你发现任何错误,请尝试使用“修复所选规则”按钮修复它们。
在这里插入图片描述

动态修改多语言文本内容

打开多语言表,配置新的内容
在这里插入图片描述

{0}可以理解为我们要动态修改的内容占位
在这里插入图片描述
关键是选中这个“智能”复选框。这将允许我们通过代码改变值
在这里插入图片描述代码控制

using UnityEngine;
using UnityEngine.Localization;
using TMPro;public class ChangeScore : MonoBehaviour
{[SerializeField] private LocalizedString localStringScore; // 用于本地化的字符串[SerializeField] private TextMeshProUGUI textComp; // 用于显示分数的 TextMeshPro 组件private int score; // 分数变量// Unity 消息:在对象启用时调用private void OnEnable(){// 设置本地化字符串的参数localStringScore.Arguments = new object[] { score };// 订阅本地化字符串变化的事件localStringScore.StringChanged += UpdateText;}// Unity 消息:在对象禁用时调用private void OnDisable(){// 取消订阅本地化字符串变化的事件localStringScore.StringChanged -= UpdateText;}// 更新文本的方法,参数为新的字符串值private void UpdateText(string value){textComp.text = value; // 更新 TextMeshPro 组件的文本}// 增加分数的方法public void IncreaseScore(){score++; // 增加分数localStringScore.Arguments[0] = score; // 更新本地化字符串的参数localStringScore.RefreshString(); // 刷新本地化字符串以应用新的参数}
}

配置
在这里插入图片描述
增加分数按钮配置点击事件
在这里插入图片描述
效果
在这里插入图片描述

参考

https://www.youtube.com/watch?v=XLv79XcbYXc

推荐

欢迎关注《100个unity插件系列》专栏,不定期持续产出内容:推荐100个unity插件

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,以便我第一时间收到反馈,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/858048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django 模版变量

1,模版变量作用 模板变量使用“{{ 变量名 }}” 来表示模板变量前后可以有空格,模板变量名称,可以由数字,字母,下划线组成,不能包含空格模板变量还支持列表,字典,对象 2,…

SWAT模型【建模方法、实例应用、高级进阶技能】

第一部分:SWAT模型实践部分 一 SWAT模型及应用介绍 1.1 面源污染概要 1.2 SWAT模型及应用 1.3 SWAT模型原理 1.4 SWAT模型输入文件 1.5 ArcGIS与SWAT关系 二 SWAT模型中GIS 必备技术 2.1 GIS软件平台 2.2 ArcGIS10.6安…

APP终极瘦身方案

具体可参见 github.com/shwenzhang/… 优化META-INF MANIFEST.MF:是摘要文件,程序会遍历apk包中所有的文件,对非文件夹、非签名文件的文件,逐个编码生成摘要信息,并记录于此。如果逆向修改了任何文件,那么…

(2024.6.23)最新版MAVEN的安装和配置教程(超详细)

1.什么是MAVEN Maven是一个自动化构建工具,主要用于Java项目,它由Apache软件基金会维护。Maven能够自动化完成编译、测试、打包、发布等构建过程,可以大大提高开发效率,保证项目的质量。 下面我们从几个方面来介绍一下MAVEN的功能…

【嵌入式Linux】i.MX6ULL 时钟树——理论分析

文章目录 0. 时钟树结构0.1 参考手册 Chapter 18​: Clock Controller Module (CCM)0.2 时钟信号路径 1. 时钟源——晶振1.1 外部低频时钟 - CKIL1.1.1 CKIL 同步到 IPG_CLK 解释 1.2 外部高频时钟 - CKIH 和 内部振荡器1.3 总结1.4 缩写补充 2. PLL时钟2.1 i.MX6U 芯片 PLL 时…

八爪鱼现金流-025-工作的终极目标,不是为了成为更好的员工

工作的终极目标,不是为了成为更好的员工。 而是解放时间和收入自动化 打造自己的被动收入!!! 八爪鱼现金流 八爪鱼

CMMM Plus+ Calculus Update 超级游戏大作 游戏说明

资源链接 关卡编辑器 ◽️使用 WASD 移动视图。 ◽️LMB 放置单元格。 ◽️Space LMB 删除单元格。Ctrl Space LMB 删除所有相同类型的单元格。 ◽️Q / E 旋转单元格。 ◽️Z / X 在单元格类别之间切换。 ◽️键 1-9 快速选择单元格。 ◽️按 F 显示可拖动的图块。 ⌨️控…

会声会影2024永久破解和谐版下载 包含激活码序列号

亲爱的创作伙伴们,今天我要分享一个让我的影视编辑生活大放异彩的神器——会声会影2024破解版本!🎉🌟 🌈**功能全面升级**:作为一款专业的视频编辑软件,会声会影2024破解版本不仅继承了之前版本…

Springboot应用的信创适配

CentOS7在2024.6.30停止维护后,可替代的Linux操作系统-CSDN博客 全面国产化之路-信创-CSDN博客 信创适配评测-CSDN博客 Springboot应用的信创适配 Springboot应用的信创适配,如上图所示需要适配的很多,从硬件、操作系统、中间件&#xff08…

人工智能在数字病理切片虚拟染色以及染色标准化领域的研究进展|顶刊速递·24-06-23

小罗碎碎念 本期推文主题:人工智能在数字病理切片虚拟染色以及染色标准化领域的研究进展 这一期的推文是我发自内心觉得为数不多,特别宝贵的一篇推文,原因很简单——可参考的文献相对较少&方向非常具有研究意义&现在不卷。 数字病理…

Vue3+TypeScript项目实战——打造雨雪交加的智慧城市

个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 &#x1…

三国之家网站的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,论坛管理,公告管理,三国视频管理,基础数据管理,三国图文管理 前台账户功能包括:系统首页,个人中心&#…

从工具产品体验对比spark、hadoop、flink

作为一名大数据开发,从工具产品的角度,对比一下大数据工具最常使用的框架spark、hadoop和flink。工具无关好坏,但人的喜欢有偏好。 目录 评价标准1 效率2 用户体验分析从用户的维度来看从市场的维度来看从产品的维度来看 3 用户体验的基本原则…

《人生苦短,我用python·四》pybind11多场景使用

引言 Pybind11作为一个强大的工具,不仅可以轻松地将简单的C函数和类暴露给Python,还可以处理更复杂的场景,比如支持C标准库容器、处理C异常、以及自定义数据结构的转换。本文将深入介绍Pybind11的一些高级用法,帮助你在实际项目中…

将WIN10的wifi上网分享给以太网接口

目录 打开网络设置设置属性点这里的设置将wlan主机的以太网接口IP设为自动获取 如果连接不成功,拔网线重连一次 打开网络设置 设置属性 点这里的设置 将wlan主机的以太网接口IP设为自动获取 如果连接不成功,拔网线重连一次

IOS开发学习日记(十六)

目录 App间的唤起和通信 App跳转 通过Scheme唤起其他App Universal Link 组件化 App间的唤起和通信 App跳转 使用URL Scheme支持App启动、跳转及参数传递 分享 / 登陆 / 拉起App Store等 设置URL Type 在UIApplication中处理参数和业务逻辑 -(BOOL)application:(UIApp…

Vue73-命名路由

一、路由的name属性 二、小结

stm32使用time模块输出pwm波,stm32-matlab开发电机控制

simulink: stm32cubemx : 注意在stm32配置了两路的一个互补输出,但实际上在matlab里只需要给定占空比就行了,他会自动输出互补,驱动电机,这是因为有点的电机输出需要6路,有的只需要1路,我们看下图就知道了…

一些3D数据集的简单介绍

一、Objaverse 1.0 Objaverse 1.0: a large dataset of objects with 800K (and growing) 3D models with descriptive captions, tags and animations. Assets not only belong to varied categories like animals, humans, and vehicles, but also include interiors and ex…

MySQL之复制(十三)

复制 复制的问题和解决方案 在主-主复制结构总写入两台主库 试图向两台主库写入并不是一个好主意,如果同时还希望安全地写入两台主库,会碰到很多问题,有些问题可以解决,有些则很难。一个专业人员可能需要经历大量的教训才能明白…