使用自定义的本地化资源进行构建

Sacameunojo

我一直在进行有关统一性AssetBundleResources阶级的研究,但到目前为止,我还没有找到在构建时卸载资源的方法。这不是用于内存管理,而是用于构建/ apk大小。

例如,我有一个LocalizedAudio类:是否为该类的实例设置了FR声音和US声音?我需要找到一种方法来告诉Unity我只希望导出FR声音。

问题在于,默认情况下将导出成员(具有属性MonoBehaviourpublic成员或private成员[SerializeField])所指向的每个资源是否可以覆盖此行为?,当您使用5种或更多语言,但您只想为一种语言构建时,apk会变得非常大。对于中型游戏而言,在构建之前停用每个资源都是非常繁琐的。

我们的目标是将不同的语言集加载到内部版本中,但是我不确定使用AssetsBundle和会不会正确Resources

烂摊子

只要资源位于“资源”文件夹中,便始终包含这些资源。从构建中删除它们的唯一方法是将它们移出该文件夹或重命名该文件夹。您可以对其进行设置,以使每个语言包都对资源文件使用类似的命名约定,并且在构建时仅包括某些语言包。

资产捆绑包并不总是对设计人员友好,而是一种实现动态包含资产的好方法。

您还有另一个选择:使用预处理程序指令定义或取消定义某些变量。

为了争辩,假设您的字段是这样定义的:

[SerializeField] LanguagePack fr;
[SerializeField] LanguagePack en;

这里的类型LanguagePack并不重要。它只是您当前要序列化的任何类型的替身。

您可以调整类,以便这些字段的声明是有条件的:

#if FRENCH || UNITY_EDITOR
[SerializeField] LanguagePack fr;
#endif

#if ENGLISH || UNITY_EDITOR
[SerializeField] LanguagePack en;
#endif

使用Unity编辑器时,所有字段均可用。当建立一个项目,你可以编辑“脚本定义符号”中的玩家设置启用ENGLISHFRENCH或任何其他语言包。

这可能需要引入一些复杂的代码,因为定义的变量将取决于构建设置。在许多情况下,如果添加用作别名的属性,它将导致代码更简单:

LanguagePack current {
    get {
        #if FRENCH
            return fr;
        #else
            return en;
        #endif
    }
}

所有这些的优点是,游戏仍然易于在检查器中进行编辑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

自定义Azure Pipelines构建任务的本地化

使用本地化资源构建 DevOps

自定义验证的本地化

支持字符串资源的c#自定义属性不会加载本地化资源

SiriKit:自定义意图-本地化问题

自定义号码(价格)格式与本地化无关

无法本地化自定义键盘iOS

自定义keycloak登录主题的本地化

Struts 1自定义本地化

使用Rails 5的Attributes API的本地化输入的自定义十进制类型

使用资源文件进行.NET本地化的策略

使用一种资源进行UWP本地化

使用资源文件进行MVC 3本地化全球化

B2C 自定义策略中 RestAPI 错误响应的本地化消息

在自定义表格视图单元格中本地化按钮和标签[swift]

在Moment阿拉伯语本地化中自定义数值

故事板中设置的自定义类的本地化不起作用

ASP.NET Core自定义验证错误消息未本地化

ASP.NET Core自定义验证属性本地化

如何命名自定义(重命名)Info.plist的本地化文件?

如何在wix和DTF中本地化自定义操作的错误消息?

如何在自定义渲染器中更改Timepicker的标题和本地化

FluentValidation自定义消息本地化不适用于When()条件

Laravel本地化,如何获得自定义语言的价值

以自定义语言本地化 devextreme dx-date-box Angular 2+

自定义ValidationAttribute不返回本地化的ErrorMessage

Asp.net核心Web API本地化DataAnnotation自定义属性

如何本地化Google自定义搜索控件的界面

QueryStringRequestCultureProvider 用于自定义语言的 Abp 样板本地化