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

于是我首先找了找控件蓝图中的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. Desktop Ubuntu 14.04LTS/16.04科学计算环境配置

    Desktop Ubuntu 14.04LTS/16.04科学计算环境配置 计算机硬件配置 cpu i5 6代 内存容量 8G gpu GTX960 显存容量 2G(建议显存在4G以上,否则一些稍具规 ...

  2. Django and Djangorestframework

    NOte Today, another day debuging with my teammates, and I just tried to make complete comprehension ...

  3. Objective-C日记-之NSPredicate

    谓语:NSPredicate 1,概述: 用于设置指定的过滤器的条件,通俗的理解就是设置选择的条件,再对指定的对象应用这个条件 2,用法: a,首先设置谓语. NSPredicate *predica ...

  4. 网络安全实验室 脚本关通关writeup

    [1]key又又找不到了查看源代码.发现key的路径,点击进行了302跳转,抓包,得到key [2]快速口算要2秒内提交答案,果断上python import requests,re s = requ ...

  5. MySQL创建数据库与创建用户以及授权

    1.create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库 采用create schema和c ...

  6. php基础语法(20161021)

    上午: 数据库总结: 1.创建数据库 create database 数据库名称 删除数据库 drop database 数据库名称 2.创建表 create table 表名 ( 列名 类型(长度) ...

  7. Win7下Nginx的安装与配置,win7nginx配置

    环境介绍:Win7 64位SP1 Nginx版本:nginx/1.8.0 参考链接http://nginx.org/en/docs/windows.html 1.  下载nginx1.8.0版本: h ...

  8. 使用python landport库快速实现排行榜

    背景介绍 排行榜业务使用的频率实在太高了,各种活动都会使用排行榜.经过多次开发后我觉得实现一个简单的排行榜库,它能够完成当前我遇到的所有业务逻辑问题,也希望能够帮助到想要快速开发排行榜业务的同行. 我 ...

  9. CrawlScript脚本语言实现网络爬虫

    前段时间我们学习了几种爬虫技术,我们来回顾一下,webCollector,htmlParser,Jsoup,各有优劣,但是如果能灵活运用,其实都是很不错的.那么,今天呢,我们来学习一种脚本语言,这是一 ...

  10. cent os 直接访问谷歌的脚本实现

    https://github.com/DingGuodong/GoogleHostsFileForLinux/blob/master/replaceLocalHostsFileAgainstGfw.s ...