[Unity3D] Dynamic Font for NGUI 2.5.0c,动态字体脚本支持NGUI最新版本

来源:互联网 发布:月经期饮食知乎 编辑:程序博客网 时间:2024/05/21 21:01


基于NGUI最新版2.5.0c修改UIFont和其Inspector脚本,支持动态字体

使用步骤:

1、导入最新版本的NGUI包

2、导入U3D_DynamicFont_UIFont_NGUI2.5.0c

3、(Option)如果没有导入过动态字体shader,可以把shader导入U3D_DynamicFont_Shaders

文件下载

问题解决: 
1、换行的问题 
 



2、字体渲染和动态字体默认Font size尺寸的偏差 
上图对比如下: 
 

看到下面那个字体渲染比“白色”ngui的渲染体偏移了,为了解决这个bug,我们需要修改UIFont: 
在开头添加一个bool变量控制(当然你可以设置false,无视这个问题) 

//add to fixed dynamic font Y offset Print bug. 
private const bool isDynamicFontCustomEditYoffset = true; 
然后找到Print()方法中的下面位置: 

//please custom edit the dynamic font y offset bug.??     if(isDynamicFontCustomEditYoffset) 
     {      // 16 mean input the TTF font "size" in inspector. 
      // -0.85f is need to Manual debugging.....      v0.y = scale.y * (-y + charInfo.vert.yMax + 16) - 0.85f
     }     else 
                     v0.y = scale.x * (-y + charInfo.vert.yMin);     
                    v1.x =  scale.x * (x + charInfo.vert.xMax);     
     if(isDynamicFontCustomEditYoffset)     { 
      v1.y = v0.y - scale.y * (charInfo.vert.yMax - charInfo.vert.yMin);      } 
     else                     v1.y = scale.y * (-y + charInfo.vert.yMax); 

如上红色标识的数字,第一个16是TTF导入后默认字体面板上的Font size,第二个需要不同字体调试出来的一个offset fixed值,我上面完整的图是雅黑默认16号字库的字体。其他字体应该需要另外测试下。 


3、动态字体刷新了,然后UILabel没有找到这个刷新后的字体(因为信息已更新) 
 

如上图,我们在UILabel中初始化添加注册这个字体到刷新消息监听,然后OnEnable中再刷新下!(确保Disable和Active UILabel时候依然会存在的问题)。理论已经解决,目前测试不会再出现该bug,然后字体全乱的现象。 



PS:

如何使用在NGUI中使用动态字体教程,可以参考:http://game.ceeger.com/forum/read.php?tid=8965

原创粉丝点击