45.多国语言

45.FGUI进阶-多国语言


45.1 知识点

FairyGUI的多国语言解决方案

  • 先拼界面,再翻译
  • 把界面上的所有文字导出到一个文件
  • 然后把这个文件提交翻译
  • 运行时动态载入翻译好的文件

生成语言文件

菜单栏——>工具——>字符串导入与导出

字符串导入与导出窗口

  • 不导出已标记为发布时清空的内容
    • 例如文本,设置了发布时清空,如果这里勾选了,那么这个文本就不会出现在语言文件里
  • 如果导出目标文件已存在,与目标文件合并
    • 比如现在导出内容中包含1个id为x1的字符串值为a
    • 而目标文件也存在一个id为x1的字符串,值为b,则导出的结果文件里,x1的值为b

选择导出xml的路径

导出的xml文件包含了在UI上出现的所有文字(排除了纯阿拉伯数字)

  • name是唯一ID,不能修改
  • mz是控件名称,主要用于提示,没有实际用处,删了也不影响
  • 我们只需要在xml文件中修改显示内容即可
  • 让翻译软件翻译尖括号里的信息,比如把开、关改成on,off

使用多国语言

菜单栏——>项目设置——>多国语言——>点击加号——>选择语言xml文件

添加后我们可以在工具栏进行语言切换,只在播放预览时生效,如果预览时改变文件内容,点击刷新键即可刷新多语言




Unity中的使用

  • 自行加载语言文件中的string 要把对应的xml文件放到Resources文件夹下
    string fileContent = Resources.Load<TextAsset>("多国语言").text;
    
  • 通过FairyGUI工具类中的XML相关方法载入信息 注意命名空间是FairyGUI工具库的
    XML xml = new XML(fileContent);
    
  • 显示面板前设置载入好的xml数据
    UIPackage.SetStringsSource(xml);
    
  • 显示面板
    UIManager.Instance.ShowPanel<TeachPanel>("Teach");
    
  • 注意:语言文件要在创建UI前载入
  • 不支持实时切换语言文件
  • 如果要在游戏中切换语言,那只能先销毁所有UI,卸载所有包

将编辑器中的文字全部替换

  • 如果你想分成两个FGUI工程来管理两种语言,可以将现有工程复制一个,然后从外部导入翻译好的语言xml文件
  • 注意:导入文本会修改掉工程中原有的所有文本内容,需要谨慎操作,一般都是复制原有工程进行操作

关于多国语言的制作总结

  • 分支+多国语言
  • 分支控制图片的多国匹配
  • 多国语言控制文本的多国匹配

45.2 知识点代码

using FairyGUI;
using FairyGUI.Utils;
using System.Collections;
using System.Collections.Generic;
using Teach;
using UnityEngine;

public class Lesson45_FGUI进阶_多国语言 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 FairyGUI的多国语言解决方案
        //先拼界面,再翻译
        //把界面上的所有文字导出到一个文件
        //然后把这个文件提交翻译
        //运行时动态载入翻译好的文件
        #endregion

        #region 知识点二 生成语言文件
        //菜单栏——>工具——>字符串导入与导出

        //不导出已标记为发布时清空的内容
        //  例如文本,设置了发布时清空,如果这里勾选了,那么这个文本就不会出现在语言文件里
        //如果导出目标文件已存在,与目标文件合并
        //  比如现在导出内容中包含1个id为x1的字符串值为a
        //  而目标文件也存在一个id为x1的字符串,值为b,则导出的结果文件里,x1的值为b

        //导出的文件包含了在UI上出现的所有文字(排除了纯阿拉伯数字)
        //  name是唯一ID,不能修改
        //  mz是控件名称,主要用于提示,没有实际用处,删了也不影响
        //  我们只需要在xml文件中修改显示内容即可
        #endregion

        #region 知识点三 使用多国语言
        //菜单栏——>项目设置——>多国语言——>点击加号——>选择语言xml文件

        //添加后我们可以在工具栏进行语言切换
        //只在预览时生效,如果预览时改变文件内容,点击刷新键即可刷新
        #endregion

        #region 知识点四 Unity中的使用

        //1.自行加载语言文件中的string 要把对应的xml文件放到Resources文件夹下
        string fileContent = Resources.Load<TextAsset>("多国语言").text;

        //2.通过FairyGUI工具类中的XML相关方法载入信息 注意命名空间是FairyGUI工具库的
        XML xml = new XML(fileContent);

        //3.显示面板前设置载入好的xml数据
        UIPackage.SetStringsSource(xml);

        //4.显示面板
        UIManager.Instance.ShowPanel<TeachPanel>("Teach");

        //注意:语言文件要在创建UI前载入
        //不支持实时切换语言文件
        //如果要在游戏中切换语言,那只能先销毁所有UI,卸载所有包
        #endregion

        #region 知识点五 将编辑器中的文字全部替换
        //如果你想分成两个FGUI工程来管理两种语言
        //可以将现有工程复制一个,然后从外部导入翻译好的语言文件

        //注意:导入文本会修改掉工程中原有的所有文本内容,需要谨慎操作
        //一般都是复制原有工程进行操作
        #endregion

        #region 知识点六 关于多国语言的制作总结
        //分支+多国语言
        //分支控制图片的多国匹配
        //多国语言控制文本的多国匹配
        #endregion
    }
}

45.3 练习题

在上节课的练习题基础上,为练习题面板,加入一个英文版本UI

按步骤创建多语言xml文件,翻译练习题面板上的字符 如果图片显示的文字 可以创建对应分支 分支对应的路径创建同名的外国语言图片资源

代码中加载多国语言 注意命名空间是FairyGUI工具库的

//设置多国语言
//加载英文翻译xml文件
string fileContent = Resources.Load<TextAsset>("English").text;
//构造一个xml数据对象
XML xml = new XML(fileContent);
//进行多国语言设置
UIPackage.SetStringsSource(xml);


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏