在NGUI里,UILabel控件可以支持一些簡單功能的標簽,使文本顯示更豐富及實現類似超鏈接的功能。但是在使用的時候發現了NGUI3.5.9版本里存在着一個bug。不過還好修復這個bug也很簡單。
在UILabel中支持[url=link]text[/url]的方式來定義類超鏈接的文本。bug就出現在同一個UILabel里使用兩個及以上這種標簽時,最終顯示的label內容就會全錯掉。
text內容:[url=a]a[/url][url=
當再輸入任一字符后,label的內容就全消失了。
bug修復:在NGUIText類中,有一個函數ParseSymbol,這個函數里對文本中定義的標簽進行識別(個人感覺寫得太難看了,一個字,丑陋)。這函數里找到對url標簽的匹配,將其中的
//int closingBracket = text.IndexOf(']'); //替換修復為 int closingBracket = text.IndexOf(']', index+4);
原因就是在尋找‘]’字符時的開始位置錯誤。這樣子就解決問題了。
ps: 其實NGUI的這個功能還是挺雞肋的,還不如去用html engine for ngui插件,用標准的html標簽
ps2: 在看了那段ParseSymbol代碼后,深深地想起在學校里教的語法解析,只依稀記得狀態機,其他的都忘記了。。。