最近遇到一個問題,策劃需求,文字像古書那樣,從右到左,豎行顯示。
以前一直以為UGUI的Text可以滿足這個需求,我以為可以設置某個屬性,就將現(xiàn)在橫排顯示的文本變成豎行,做個東西的時候沒有找到原生的解決方案,然后在網(wǎng)上簡單的扒了一圈,發(fā)現(xiàn)有兩種解決方法。
第一種是,將設置到Text組件的文本行轉(zhuǎn)列其余的用空格顯示。
第二種是重寫Text組將的一些函數(shù),具體怎么弄的沒看明白。
然后這兩種方法我都試了一下,都有Bug,然后我就用一種簡單的方法替代了,能解決當前問題。
我是用GridLayoutGroup組件實現(xiàn)這個功能的:
1、在GameObject上添加Text組件做成一個預制Item;
2、將需要豎行顯示的文本字符串裝換成Char數(shù)組;
3、循環(huán)數(shù)組,實例化Item,將Char數(shù)組里面的值設置到Item的Text組件里面, 一個Item設置一個值;(如果你文本里面有換行,你需要計算空格添加到Array或List里面)
4、設置GridLayoutGroup屬性,利用GridLayoutGroup實現(xiàn)豎行顯示文本的功能。
image
這里是我GridLayoutGroup設置的屬性。效果圖如下:

image
以上就是我通過GridLayoutGroup組件實現(xiàn)字符串豎行顯示的方法,如果你文本不多、固定不變的,可以使用這種方法,如果你文本比較多,轉(zhuǎn)出來的字符數(shù)組比較大,不建議這樣使用。最好的辦法應該還是重寫Text吧,但是我看了Text源碼,不知道從哪里著手。
如果你有更好的方法,期待你的分享!