最近遇到一个问题,策划需求,文字像古书那样,从右到左,竖行显示。
以前一直以为UGUI的Text可以满足这个需求,我以为可以设置某个属性,就将现在横排显示的文本变成竖行,做个东西的时候没有找到原生的解决方案,然后在网上简单的扒了一圈,发现有两种解决方法。
第一种是,将设置到Text组件的文本行转列其余的用空格显示。
第二种是重写Text组将的一些函数,具体怎么弄的没看明白。
然后这两种方法我都试了一下,都有Bug,然后我就用一种简单的方法替代了,能解决当前问题。
我是用GridLayoutGroup组件实现这个功能的:
1、在GameObject上添加Text组件做成一个预制Item;
2、将需要竖行显示的文本字符串装换成Char数组;
3、循环数组,实例化Item,将Char数组里面的值设置到Item的Text组件里面, 一个Item设置一个值;(如果你文本里面有换行,你需要计算空格添加到Array或List里面)
4、设置GridLayoutGroup属性,利用GridLayoutGroup实现竖行显示文本的功能。
这里是我GridLayoutGroup设置的属性。效果图如下:
以上就是我通过GridLayoutGroup组件实现字符串竖行显示的方法,如果你文本不多、固定不变的,可以使用这种方法,如果你文本比较多,转出来的字符数组比较大,不建议这样使用。最好的办法应该还是重写Text吧,但是我看了Text源码,不知道从哪里着手。
如果你有更好的方法,期待你的分享!