UE4 C++ 配置多语言游戏

Posted TanZq_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4 C++ 配置多语言游戏相关的知识,希望对你有一定的参考价值。

效果展示

英文版本

中文版本,因为使用的是文本渲染组件,没有转化为中文的码,所以现在是用ABC去代替。
但是左上角的UE4翻译成虚幻4成功了。

使用控制台命令实现在游戏中语言相互切换。

多语言输出

创建一个输出内容,由输入控制台命令来调用这个函数。
(我创建的是一个游戏模式class LEARNPROJECT_API ATestGameMode : public AGameModeBase,记得设置为这个游戏模式。)

UFUNCTION(Exec)
static void SayHello();

将UE4这个字符按照k1的键,储存在名为UE4NS的本地化空间中。
然后在屏幕上展示。

void ATestGameMode::SayHello()
{
	const FText Text = NSLOCTEXT("UE4NS", "K1", "UE4");
	GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, Text.ToString());
}

在添加一个文本渲染组件

左上角搜索,然后拖到地图中即可。

打开本地化控制面板

在window下面就能看到了,点击进入。

勾选两个内容,一个为从文件中获取,加入C++文件路径,一个为从包中获取,加入content。
勾选之后会出现黄色标识,填入路径之后就不会有了。

还有可能这个状态不是绿色的,而是黄色的,

往下拉,点击收集文本,等待一会,点击OK即可。

这里默认是英文的,所以我们还需要添加一个语言包,中文包

再收集一次。

点击编辑翻译,

点击未翻译窗口

将对应的内容填入。

保存,关闭。

然后重新计算一次就是我这个界面啦。

要得到多语言界面的话,就要以独立窗口的形式启动。

可以使用静态转换语言(当然,不设置引擎会自动调用本地语言。):

填入内容-culture=zh,zh为中文,en为英文。

可以在这里看到

语言动态转换

使用控制台命令行来对语言的相互转换。

UFUNCTION(Exec)
static void ChangeLan(FString Lan);
void ATestGameMode::ChangeLan(FString Lan)
 {
	// 设置当前语言环境
	FInternationalization::Get().SetCurrentCulture(Lan);
 }

以上是关于UE4 C++ 配置多语言游戏的主要内容,如果未能解决你的问题,请参考以下文章

游戏开发中的多语言处理

Unity 本地化(多语言)插件Localization

多语言编译中的 I/O 问题

WPF中的多语言[关闭]

ue4 c++代码怎么获取场景中的一个actor

低代码平台多语言国际化(i18n)技术方案