Ue4 三维文字,汉字,中文乱码

最近在ue4中用C++实现三维文本,就是TextRender,实现本身不难,就是参照官网《创建使用定时器Actor》那一节。链接如下:
创建使用定时器Actor

过程中遇到两个坑,好几天才过去。
一、汉子字体的制作。过程乍一看挺麻烦,其实跟着做两遍就轻车熟路了。网上多数给的是一下这种方法:

  1. 资源浏览器中右键,选择User Interface->font创建字体蓝图:MyFont。
    在这里插入图片描述

  2. 双击MyFont,打开字体编辑器,进行修改。在Detail面板,找到Font Cache Type,切换为Offline模式。弹出的对话框直接点yes就行,稍后出现字库选择面板,此处选择字体:仿宋,字号:48号,点击确认。

    在这里插入图片描述

  3. 在Detail面板中chars输入需要使用的中文汉字,并勾选Alpha Only选项。
    在这里插入图片描述

  4. 执行菜单栏 Asset->Reimport MyFont 功能,此时就会生成想要的汉字字库,不过汉字顺序并不是按照输入顺序显示
    在这里插入图片描述

  5. 创建材质文件MyFontMat,双击材质,将节点的blend Mode 改为Mask模式,创建FontSampleParameter节点和VertexColor,添加如图逻辑:
    在这里插入图片描述

  6. 在Module中找到TextRender对象,放置到场景中,修改TextRender的material、Font属性为以上创建资源,并在Text属性输入:勇敢无畏的勇士。
    在这里插入图片描述

  7. 最终效果如图:
    在这里插入图片描述

这里也有两个坑:
①可以形成不同字体的某些特定文字,但是,你可以显示的文字只是“勇敢无畏的战士”这几个字,在第6步的Text中输入其他文字,会显示乱码。
如果想随意显示各种文字,可将上述第3步以下图方式替换:
在这里插入图片描述
Unicode Range为字符集范围,4E00-9FFF基本概括了所有汉字。
② 在上述第二步设置字体风格后,发现文字躺下了,这种情况只需将下图种“@黑体”中的“@”删除即可。
在这里插入图片描述

二、汉字字体制作完成了,下面要进行显示,但是ue4显示汉字有问题,会出现乱码。

不仅在三维字体中会出现乱码,在屏幕和控制台输出打印汉字的时候一样会出现乱码。
根据我目前的需求,我找到两种解决方法。
1、我自己定义FString并进行输出:

FString rot = “你好”; //输出乱码
FString rot = TEXT(“你好”); //输出正确

2、将std::string标准字符串行转换为FString并进行输出:

std::string str0 = "你好";
FString str1 = UTF8_TO_TCHAR(str0.c_str());

ps:还需在vs中将CPP文件的编码格式改为utf-8;
修改方法参考一下链接:https://blog.csdn.net/u014180504/article/details/46758971
若找不到上面链接中的“高级保存选项”,请参考一下链接:https://www.cnblogs.com/xiaopin/archive/2012/03/07/2383860.html

快下班了,写的乱七八糟,但是想记录的总结的东西基本都写上了。有时间再整理修改一下吧。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值