Unity3d 如何在游戏中统一使用不同语言的不同资源(音频、精灵和文本)?

Unity3d 如何在游戏中统一使用不同语言的不同资源(音频、精灵和文本)?,unity3d,unity5,Unity3d,Unity5,我正在开发一个Unity 2D游戏,用户可以在主屏幕上选择一种语言,然后接下来的游戏应该用所选语言本身进行。特定于语言的更改包括音频文件、精灵和画布上的文本UI元素。我如何处理这个问题?这要看情况而定。对此有不同的方法 我可能会使用嵌套字典和枚举来实现,但可能会有更优雅的解决方案 假设在某些枚举中,每个文本、精灵、声音等都有特定的标签,如 枚举文本标签{ 主面板标题, 消防按钮, 信息文本, ... } 枚举SpriteLabel{ 语言旗帜, 背景,, ... } 枚举声音标签{ 欢迎留言,

我正在开发一个Unity 2D游戏,用户可以在主屏幕上选择一种语言,然后接下来的游戏应该用所选语言本身进行。特定于语言的更改包括音频文件、精灵和画布上的文本UI元素。我如何处理这个问题?

这要看情况而定。对此有不同的方法

我可能会使用嵌套字典和枚举来实现,但可能会有更优雅的解决方案

  • 假设在某些枚举中,每个文本、精灵、声音等都有特定的标签,如

    枚举文本标签{
    主面板标题,
    消防按钮,
    信息文本,
    ...
    }
    枚举SpriteLabel{
    语言旗帜,
    背景,,
    ...
    }
    枚举声音标签{
    欢迎留言,
    国歌,
    ...
    }
    
  • 对于这种语言,您还需要一个枚举,如

    enum语言{
    英语,
    法语
    德语,
    ...
    }
    
  • 而不是为每种语言设置单独的词典,如

    //将文本标签映射到英文文本
    字典英语文本;
    //将文本标签映射到法语文本
    法语词典;
    //将文本标签映射到德语文本
    日耳曼词典;
    ...
    
    精灵(
    字典
    )和声音(
    字典
    )也是如此

  • 您可以为每种类型创建一个主词典,根据语言选择正确的文本/图像/声音词典:

    字典文本;
    
    精灵和声音也是如此

  • 而不是在某个时候你必须填写字典。
    文本
    声音
    精灵
    )字典是简单字典,因为它不依赖于外部数据:

    text=newdictionary(){
    {Language.English,englishTexts},
    {语言.法语,法语},
    {语言.德语,germanTexts},
    ...
    };
    
  • 嗯,现在你“只”需要以某种方式将信息填入文本词典中。您可以在脚本中进行硬编码,通过inspector拖动/键入,或者特别是对于文本,例如使用.cvs表并在运行时解析该表。这一步有很多选择,可能适合另一个问题。最后,所有这些都将在某些行中恢复,如

    EnglishText[MainPanelTitle]=。。。;
    英语文本[FireButton]=。。。;
    ...
    法语文本[MainPanelTitle]=。。。;
    ...
    
  • 例如,一旦文本字典中填写了信息,您就可以访问特定文本(例如法语的InfoText),如

    string infotext=text[Language.French][textlab.infotext];
    

  • 正如我所说,这可能不是最优雅的解决方案,但我会这样做;)

    我以前是这样做的

    Var string Language;
    
        Var UItext Title;
    
    然后创建按钮来选择语言

    英文按钮:

    Language = “English”;
    
    然后检查用户选择什么

    If (Language == “English”) {
    Title = “Title Game” ;
    }else if (Language == “Arabic”) {
    Title = “عنوان اللعبة" ;
    }
    
    . web上有大量本地化脚本,资产商店上有多个高质量的解决方案。