天天看點

NGUI的圖文混排

新公司入職第一周,TD(技術負責人)将一個同僚遇到的問題交給我了,聊天的圖文混排。同僚在研究3天後,TD想我試下,我google和bing後看到方法如下;

項目是使用NGUI中,UILabel裡font 分為bitmapFont(圖檔字型)和trueTypeFont(文字字型);2者隻能選其一

我各種研究目前發現的實作圖文的解決方法如下:

1.生成一個新的字型,把表情和常用字型合成一個新的字型

2.根據字元分割成多個UILabel和UIsprite,

3.修改NGUIText,思路是2個Label,一個隻負責顯示文字,一個負責顯示渲染圖檔,用isSymbol區分是渲染圖檔還是文字。

4.建立一個SymbolInput,繼承之UIInput,同時在建立一個SymbolLabel繼承MonoBeahvior,在Awake()方法裡,添加2個UILabel,然後根據分别在不同的Label上渲染,控制渲染的位置就可以實作,這個方法也修改了UILabel裡OnFill方法

詳細說

一.http://www.xuanyusong.com/archives/2908雨松大神的研究

劣勢

1.不支援動态TTF字型的圖文混排,凡是參與圖文混排的文字都必須打在一個BitMap上面,這是做中文版本無法接收的,因為我們必須要用TTF動态字型。

2.NGUI圖文混排的高度計算的有問題。看到了嗎?如果你參與圖文混排的兩個圖檔大小不一樣,如果文字進行換行,高度會計算錯誤。。

NGUI的圖文混排

3.比如想第一個文字設定成紅色,然後跟着一個圖檔,然後在跟一個綠色的字,那麼它也做不成。。

4.調節文字間的橫向和縱向的距離,它也做不成。

二.http://blog.gamerisker.com/archives/333.html

劣勢1:對資源比較消耗

2.輸入框裡不能顯示圖檔,隻能生成内容可以有圖檔,用圖檔名字對應sprite.name

NGUI的圖文混排
NGUI的圖文混排

三.http://www.kiss-soft.net/Blogs/ngui-dynamicfontpic/

優劣的還沒研究

等我更新下

四.http://blog.gamerisker.com/archives/530.html

目前項目采用的,把2個代碼認真看完對NGUI的了解加深很多,我是自己看着寫了一遍,遇到有public  SybmolLabel newLabel,在SymbolInput 看不到,雖然是public 的,那是要切到Debug模式,在Inspector上右擊就可以看到了,把值托進去,我能說我找了很久沒有發現。這樣的原因是Input 設定顯示的内容,所有被隐藏。瞬間感覺自己蠢了。

還有的問題是,newLabel.labelText.color.有時會報null值。

TextLabel和SymbolLabel的位置要根據運作時候重新調整,問題在于目前是可以動态輸入,{01}自動切換成圖檔,但是删除的時候缺有問題了。“{01}”變成“{01”,這個功能會在我做完項目功能後,來補上。還有一個是表情占的空間太大了。

優勢是對NGUI代碼改動很少。

預告下一期做插件關于excl轉換,請期待

繼續閱讀