软件开发价格 【Unity 实用器具篇】| 游戏多讲话治理决策,官方插件Localization 罢了腹地化及多种讲话切换

企业软件开发商

你的位置:企业软件开发商 > 软件开发价格 > 软件开发价格 【Unity 实用器具篇】| 游戏多讲话治理决策,官方插件Localization 罢了腹地化及多种讲话切换
软件开发价格 【Unity 实用器具篇】| 游戏多讲话治理决策,官方插件Localization 罢了腹地化及多种讲话切换
发布日期:2024-08-09 04:35    点击次数:63

图片软件开发价格

小程序开发

图片

序言 Unity的多讲话腹地化是一个很实用的功能,它可以匡助游戏撑抓多种讲话,让不同讲话的玩家都大约更好地体验游戏。而罢了腹地化的决策也有许多种,各个决策之间也各有优劣,背面也会对多个决策进行先容学习。本文就来先容一个挑升作用于多讲话腹地化的Unity官方插件:Localization 。这个插件便捷进行游戏的多讲话腹地化,让游戏撑抓多种讲话,底下就来望望该插件的使用挨次吧! 【Unity 实用器具篇】| 游戏多讲话治理决策,官方插件Localization 罢了腹地化及多种讲话切换 一、多讲话腹地化插件 Localization 1.1 先容

Localization是Unity官方推出的腹地化插件,它可以匡助勾引者在Unity形状中罢了多讲话撑抓。

在Unity中,Localization的责任旨趣是创建多个表格来存储不同讲话的不同字符串。

可以通过Localization Tables创建这些表格,表格可以设立不同资源之间的对应关系,一个key对应多个讲话的资源。

通过使用Localization插件,勾引者可以便捷地设立和获取现时讲话和现时讲话地区,从而为游戏或利用智力提供多种讲话的撑抓。

0路号码分析:上期走势一般,出现7个:21、27、33、42、63、69、78,最近10期0路号码出现72个,走势总体较热,其中冷温热期数比为0:9:1,0路号码大小个数比为41:31,大号表现明显较热,0路号码奇偶比为34:38,偶数号码表现活跃,联系我们对比上期,本期看好0路号码个数增加,走势大热,参考9个:06、12、18、24、36、42、51、57、66。

福彩快乐8第2024175期(上周三)开奖回顾:07 09 12 15 17 19 32 33 40 47 48 49 55 58 62 65 66 69 70 73,其中奖号四区比为6:3:5:6奇偶比为12:8。

这关于那些需要面向不同地区和不同讲话的用户发布游戏或利用智力的勾引者来说口舌常灵验的。

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例 教程

🏅 接待点赞 👍 保藏 ⭐留言 📝 如有造作敬请指正!

📆 将来很长,值得咱们全力奔赴更好意思好的生涯✨

------------------❤️分割线❤️-------------------------

图片

图片

图片

图片

本站仅提供存储工作,通盘内容均由用户发布,如发现存害或侵权内容,请点击举报。

Powered by 企业软件开发商 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群 © 2013-2024 云迈科技 版权所有