最近发现中国风游戏中,经常会遇到旁白文字竖着显示的需求。

于是我首先找了找控件蓝图中的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竖排文本显示的更多相关文章

  1. css截断长文本显示

    实现 截断长文本显示处理,以前是通过后台的截取,但这种方法容易丢失数据,不利于SEO. 而通过前端css的截断,则灵活多变,可统一运用与整个网站. 这项技术主要运用了text-overflow属性,这 ...

  2. CSS 单行溢出文本显示省略号...的方法(兼容IE FF)(转)

    http://www.52css.com/article.asp?id=602 ===================================================     html ...

  3. 新公司入职第一天遇到的 关于 CSS 单行溢出文本显示省略号...的问题

    上班第一天 前端岗位,因为公司这个项目是标准开发 所以没法用框架在打架页面,好吧 我手写 各种div 各种css样式 好不忧伤,好吧 不废话了 进入正题. 想在导航栏中的 客户信息 功能点 实现溢出用 ...

  4. HTML超出文本显示省略号...[text-overflow]

    需要对div或者span同时应用Css: text-overflow:ellipsis; white-space:nowrap; overflow:hidden; 即可实现所想要得到的溢出文本显示省略 ...

  5. Android开发之多线程下载、断点续传、进度条和文本显示

    代码实现了在Android环境下的多线程下载.断点续传.进度条显示和文本显示百分数: import java.io.BufferedReader; import java.io.File; impor ...

  6. 使用text-overflow:ellipsis对溢出文本显示省略号有两个好处

    使用text-overflow:ellipsis对溢出文本显示省略号有两个好处,一是不用通过程序限定字数:二是有利于SEO.需要使用对对溢出文本显示省略号的通常是文章标题列表,这样处理对搜索引擎更友好 ...

  7. css 溢出文本显示省略号

    这个标题其实已经是一个老生常谈的问题了.很多时候,比如网站最基本的文章列表,标题会很长,而显示列表的区域宽度却没有这么宽,这时候最正常的做法就是 让超出宽度的部分文字用省略号(…)来表示.通常做法是网 ...

  8. EmWin 文本显示函数

    函数模型----------------------------------- 1:void GUI_DispChar(U16 c):  在当前窗口的当前文本位置处,使用当前字体显示单个字符.  c ...

  9. text-overflow:ellipsis ,溢出文本显示省略号

    text-overflow:ellipsis 对溢出文本显示省略号有两个好处, 一是不用通过程序限定字数 二是有利于SEO. 需要使用对对溢出文本显示省略号的通常是文章标题列表,这样处理对搜索引擎更友 ...

随机推荐

  1. cocos2dx 魔塔项目总结(一)

    <魔塔天城>发布已经有半年的时间了,一直想找时间来总结一下这个项目,但总是一拖再拖.如果再这么拖下去,就永远都不会有时间来写这个总结了,时间总是挤出来的. 魔塔天城使用的cocos2dx ...

  2. win10如何合并硬盘分区

    好多人都会讲电脑硬盘分成几个不同的区,以方便自己的资料的存储和查找,但不少人不知道如何合并已经分出的硬盘分区.以下是我的经验,与大家分享: 1.   首先,右击“此电脑”,在弹出来的右键菜单这种选择“ ...

  3. 1741: [Usaco2005 nov]Asteroids 穿越小行星群

    1741: [Usaco2005 nov]Asteroids 穿越小行星群 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 231  Solved: 166 ...

  4. Oh, my god令人头痛的“对象”--------C#数据类型

    1.C#常用的数据类型: ①整型            int ②浮点型         float ③双精度型      double ④字符串         string ⑤布尔类型       ...

  5. Spring之IOC详解

    学过Spring的小伙伴对于IOC一定不陌生,IOC:控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spr ...

  6. ListView的简单使用

    首先在主界面建立一个ListView的布局

  7. Android开发之AChartEngine的使用

    下面附上代码加注解 package com.example.com.my_achartnegine; import android.content.Context; import android.gr ...

  8. Alamofire源码解读系列(十)之序列化(ResponseSerialization)

    本篇主要讲解Alamofire中如何把服务器返回的数据序列化 前言 和前边的文章不同, 在这一篇中,我想从程序的设计层次上解读ResponseSerialization这个文件.更直观的去探讨该功能是 ...

  9. python实现mysql的读写分离及负载均衡

    Oracle数据库有其公司开发的配套rac来实现负载均衡,目前已知的最大节点数能到128个,但是其带来的维护成本无疑是很高的,并且rac的稳定性也并不是特别理想,尤其是节点很多的时候. 但是,相对my ...

  10. es 6点滴记录

    关于babel和webpack的使用: Babel 所做的只是帮你把'ES6 模块化语法'转化为'CommonJS 模块化语法',其中的require exports 等是 CommonJS 在具体实 ...