你的位置:企业找小程序开发 > 联系我们 > 小程序开发价格 【Unity 实用器具篇】| 游戏多谈话处罚决策,官方插件Localization 扫尾土产货化及多种谈话切换

小程序开发价格 【Unity 实用器具篇】| 游戏多谈话处罚决策,官方插件Localization 扫尾土产货化及多种谈话切换

发布日期:2024-09-28 16:51    点击次数:128

图片小程序开发价格

图片

绪论 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创建,并选拔一个文献目次进行文献保存。

图片

首位跨度分析:首位号码最近3期奖号为6-5-2,连续两期跨度为1、3,历史上首位号码连续两期分别开出跨度1、3的现象共出现183次,其前两次开出奖号分别为:

点击 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中的内容。

图片

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

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

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

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

图片

图片

图片

图片

本站仅提供存储处事,小程序开发通盘内容均由用户发布,如发现存害或侵权内容,请点击举报。