ue4竖排文本显示
最近发现中国风游戏中,经常会遇到旁白文字竖着显示的需求。
于是我首先找了找控件蓝图中的text有没有相关类似横竖文本框的选项,然而并无所获。
突然间灵机一动!
竖着显示不就是每个字一换行嘛!
说干就干,于是我在gamemode中添加了个getverticaltext的函数,打算用于全局的字符串横竖转换。
那么问题来了。。ue4的c++中怎么表示FString类的换行符呢?
第一反应当然是"/n",结果就是游戏中真的是显示了/n。。。
查阅了一下unreal社区,普遍都说不知道怎么表示换行符,不过可以在蓝图中shift+enter编辑
我便退而求其次,又在gamemode中添加了个changelinesymbol的FString类变量,作为换行符的全局变量,在蓝图的beginplay中把它的值设置成了换行符:
虽然有点绕,但的确管用啊。
(不过后来我又在群里问了下一位热心小哥告诉了我真相——"\r\n"就行了……)
接下来的横竖转换就比较简单了:
FString AsanshaoyeswordGameMode::getverticaltext(FString x) { if (x == "") return ""; FString ans = ""; ; i < x.Len()-; i++) { ans.AppendChar(x[i]); ans.Append(changelinesymbol); } ans.AppendChar( x[x.Len()-]); return ans; }
然而又有新的问题来了,这样弄的竖文本并不能竖直居中啊。。。
我只好通过计算控件应该在的位置,来设置使其居中了。
所幸貌似相同字体和字号的文本高度是一样的高的,为了简便起见我们先假定相同字体高度和字号成正比。
于是我就在控件蓝图定义了一个叫singleword_height_persize的float,基于我们的假设,singleword_height_persize*fontsize==一个字的高度
我的旁白文本(textblock_pangbai)锚点位于屏幕左上角,所以要得到正确位置需要从y坐标为0开始先向下平移半个screenheight,然后向上平移半个所有文本占的高度
screenheight我通过getviewportsize的y表示,所有文本的高度自然就是pangbai_vertical.Len()*singleword_height_persize*fontsize了
具体蓝图如下:
singleword_height_persize经过尝试,方正舒体1太小,1.233差不多刚好
要注意控件位置要以独立窗口运行为准,直接在视口运行比较邪门的
效果如下
ue4竖排文本显示的更多相关文章
- css截断长文本显示
实现 截断长文本显示处理,以前是通过后台的截取,但这种方法容易丢失数据,不利于SEO. 而通过前端css的截断,则灵活多变,可统一运用与整个网站. 这项技术主要运用了text-overflow属性,这 ...
- CSS 单行溢出文本显示省略号...的方法(兼容IE FF)(转)
http://www.52css.com/article.asp?id=602 =================================================== html ...
- 新公司入职第一天遇到的 关于 CSS 单行溢出文本显示省略号...的问题
上班第一天 前端岗位,因为公司这个项目是标准开发 所以没法用框架在打架页面,好吧 我手写 各种div 各种css样式 好不忧伤,好吧 不废话了 进入正题. 想在导航栏中的 客户信息 功能点 实现溢出用 ...
- HTML超出文本显示省略号...[text-overflow]
需要对div或者span同时应用Css: text-overflow:ellipsis; white-space:nowrap; overflow:hidden; 即可实现所想要得到的溢出文本显示省略 ...
- Android开发之多线程下载、断点续传、进度条和文本显示
代码实现了在Android环境下的多线程下载.断点续传.进度条显示和文本显示百分数: import java.io.BufferedReader; import java.io.File; impor ...
- 使用text-overflow:ellipsis对溢出文本显示省略号有两个好处
使用text-overflow:ellipsis对溢出文本显示省略号有两个好处,一是不用通过程序限定字数:二是有利于SEO.需要使用对对溢出文本显示省略号的通常是文章标题列表,这样处理对搜索引擎更友好 ...
- css 溢出文本显示省略号
这个标题其实已经是一个老生常谈的问题了.很多时候,比如网站最基本的文章列表,标题会很长,而显示列表的区域宽度却没有这么宽,这时候最正常的做法就是 让超出宽度的部分文字用省略号(…)来表示.通常做法是网 ...
- EmWin 文本显示函数
函数模型----------------------------------- 1:void GUI_DispChar(U16 c): 在当前窗口的当前文本位置处,使用当前字体显示单个字符. c ...
- text-overflow:ellipsis ,溢出文本显示省略号
text-overflow:ellipsis 对溢出文本显示省略号有两个好处, 一是不用通过程序限定字数 二是有利于SEO. 需要使用对对溢出文本显示省略号的通常是文章标题列表,这样处理对搜索引擎更友 ...
随机推荐
- Kubernetes 1.5安装
Kubernetes从1.3开始引入kubeadm来试图简化其复杂的安装.但kubeadm至今仍不稳定,而且我个人觉得kubeadm反而麻烦,还不如直接用脚本或者其他自动化工具来安装来的利索.关于ku ...
- 关于js模拟c#的Delegate(委托)实现
这是我的第一篇博文,想来讲一讲js的函数.我的标题是js模拟c#的Delegate. 一.什么是Delegate(委托) 在jquery中有delegate函数,作用是将某个dom元素的标签的事件委托 ...
- 2431: [HAOI2009]逆序对数列
2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 954 Solved: 548[Submit][Status ...
- JS事件监听器 addEventListener
一:例如:给id为mydiv1的div元素添加click事件监听器document.getElementById("mydiv1").addEventListener(" ...
- 在VM中给Linux安装Tool
1.导入tool 2.解压tool 3.打开终端,进入tool的目录,输入 ./XXXXXXX.pl 4.进入安装界面,不断回车即可
- Android getAttributeIntValue()详解-霞辉
经常使用getAttributeIntValue()方法,但是大多使用的形式是attrs.getAttributeFloatValue(null, "xxx", 0);只是在中间传 ...
- 关于binary log那些事——认真码了好长一篇
本文介绍binlog的作用以及几个重要参数的使用方法,同时通过实验来描述binlog内部记录内容:row .statement跟mixed的设置下,记录了哪些东西,最后会简单介绍下binlog ser ...
- 利用echo命令实现倒计时的功能
echo -e:启用反斜线控制字符的转换 -E:关闭反斜线控制字符的转换(预设如此) -n:取消行末之换行符号(与 -e 选项下的 \c 字符同意 -e参数下的控制参数 \ ...
- 性能测试培训: 监控CPU之python
性能测试培训: 监控CPU之python 作为一名测试开发工程师,开发脚本是为了测试服务的,我们在手里没有性能监控工具的情况下,我们会自己来进行开发脚本完成监控任务.下面是python监控cpu '' ...
- Unix文件 I/O(不带缓冲区的)上
简介 Unix系统大多数文件i/o只需要:open.read.write.lseek.close这几个函数.但是某些时候我们也需要fcntl.ioctl.sync等函数配合使用.这些函数都是不带缓冲区 ...