[Unity3D学习]NGUI UILabel 图文混排扩展

之前发过一个图文混排的文章《[Unity3D学习]NGUI UILabel 图文混排》、一直感觉那样比较消耗。又由于公司项目也需要做图文混排,就想了另一种图文混排思路,从性能来说比之前的思路要好很多,不过也有弊端,现在这种解决方案,做动态表情不太适应。不过我想的是,手机游戏对聊天功能其实已经比较弱化了,所以个人认为聊天不需要做得太复杂,一切从简就好。

说说这个版本的图文混排的思路吧:

创建了两个UILabel 一个是动态字体、一个是图集字体,一个用来显示文本内容,另一个就用来显示表情,再通过修改表情Label的顶点坐标来修改每个表情的位置,达到图文混排的效果。

这个思路我觉得还是合理的,不过有些地方我不满意,我在NGUI UILabel 的OnFill方法(1519行)中添加了一个回调,来修改最终的渲染坐标,我个人不喜欢去修改原作者的代码。不愿意去破坏原来的结构,这是我不满意的地方。

其实我最开始的想法是将文本和表情放在同一个mesh上,那样就能自己独立写一个CustomLabel。这样的性能应该是最好的。

不过总的来说,现在的这个方案,是用最少的代码实现了动态字体的图文混排。(这只是给出了实现的基本原理,其中还有很多的不足,需要自己去打磨!仔细看代码,相信你会对NGUI有一个很深程度的理解的。)

说了那么多,先看看 Demo :  http://game.gamerisker.com/symbol

看完Demo就来看代码吧

 

 

 

 

 

通过这次的修改,对NGUI的代码的熟悉程度得到了很大的提高,对NGUI如何实现的原理也有了一定的了解,还有就是挺佩服NGUI作者的,代码写得出神入化,膜拜!膜拜!

Demo的源码:http://pan.baidu.com/s/1hqDvyT2

5 Comments

  1. 张海龙 says:

    按照范例操作,运行到自己的项目中,newLabel总是报null

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.