位置: 编程技术 - 正文

解决Unity中,使用Ngui 的默认字体Arial,在部分Android设备显示中文不清楚,或者显示不出来问题(unity-chan)

编辑:rootadmin

推荐整理分享解决Unity中,使用Ngui 的默认字体Arial,在部分Android设备显示中文不清楚,或者显示不出来问题(unity-chan),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity addtorque,unity的quad,unity中ngui,unity常用方法,unity常用方法,unity常见问题,unity中ngui,unity中ngui,内容如对您有帮助,希望把文章链接给更多的朋友!

原文地址: 小米1代,OPPO,金立,中兴等个别机型中。刚开始以为是NGUI的问题,经过几天的问题排查,发现原来是Arial字体惹的祸。

Arial字体是西文字体,并不包含中文字库,在Unity中如果使用默认的Arial字体,在程序运行过程中如果遇到字库中没有的字,程序就会从系统默认字库中查找对应的文字,如果字库中也没有这些字,那么就会造成字体不显示的现象,在android系统中Unity默认会去查找名为DroidSansFallback的字体,这个字体是android默认的字体,但是因为android系统的可定制性,太过自由,很多手机厂商或者第三方rom爱好者为了追求个性化,会去修改默认字体,替换成其他的字体,android系统是根据字体的文件名称DroidSansFallback.ttf来找这个字体的,所以修改者只用将想要使用的字体文件名称改为DroidSansFallback.ttf就可以在android系统中使用了。但是Unity识别字体却不是通过字体的文件名称来识别的,而是通过字体内部的设置来识别,如下图:

这个字体是win8系统默认的字体,双击预览能够看到字体名称是Aharoni,Unity就是通过这个名称来找默认字体的,这就导致了那些被修改了默认字体的android系统无法显示字体,(此现象也出现在个别window xp系统中)。

问题出现的原因找到了,那么就容易解决了,我们只要找到一个不是太大的符合自己要求的字体,放入到unity中,所有使用Arial字体的地方,都换成自己添加的动态字体即可。

解决Unity中,使用Ngui 的默认字体Arial,在部分Android设备显示中文不清楚,或者显示不出来问题(unity-chan)

1 Font Names 默认倒入的一个字体,这个地方会显示这个字体的真实名字,这个参数的主要作用实际上是设置替代字体用的,当程序需要某一个字体时,首先会从当前字体查找字符,如果没有找到,会依次查找FontNames列表里的其他字体中的字符,直到找到,或者找完为止。例图中中添的几个替代字体MYingHeiGBC-Bold, Droid Sans, Droid Sans Fallback, LTHYSZK,第一个MYingHeiGBC-Bold是当前字体的名称(可以不用填),第二个,第三个是android系统里的字体,第四个是小米1代所使用的字体。

Incl.FontData 选项打上勾,在倒出包的时候会把该字体添加到包中,若不打勾,则不会将该字体打包,程序运行时就会从FontNames列表里检索需要的字体,如果没有,字体就不会显示。

如果你的游戏中一直都在使用字体A,突然有天Boss说,这个字体不好看!给我换成B字体!苦&#;的你该怎么办?一个一个改么?其实通过上边所说的两个参数,把A字体的Incl.Font Data不勾选,然后将B字体的FontName 填入A的FontNames里,而B字体的Incl.Font Data打勾,我们可以很巧妙的将字体A全部替换成B字体,同时打包的时候又保证了只有B字体。

因为Unity的默认字体Arial是如此的不爽,所以在此建议大家不要在工程中使用Arial字体(纯英文游戏除外)。下边贴一个写的批量替换NGUI中的Arial字体为指定字体的脚本,将其放入Asset /Editor文件夹下,即可在导航栏生成工具菜单:

[csharp] view plaincopyusing UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEditor; public class FontReplese { //批量替换场景中的字体 [MenuItem ("Custom/Label/ChangeSceneLabel" )] publicstatic void ChangeSceneFont () { List<UILabel> labelList = NGUIEditorTools.FindAll<UILabel> (); ChangeLabelFont ( labelList ); } publicstatic void ChangeLabelFont ( List<UILabel> labelList ) { Font mFont = NGUIEditorTools.LoadAsset<Font> ("Assets/font/DroidSansFallback.TTF" );//注意这个地方是要替换成的字体的路径 if ( mFont ==null ) { Debug.LogError (" Font not found ! " ); return; } foreach (var label in labelList ) { if ( label !=null && label.trueTypeFont != null && label.trueTypeFont.name == "Arial" )//这个地方的name可以改为原来的字体的名称 { label.trueTypeFont = mFont; } } Debug.LogError ( labelList.Count ); } //改变选中的预设上边的字体 [MenuItem ("Custom/Label/ChangeSelectionLabelFont" )] publicstatic void ChangeSelectObjFont () { GetTypeList (); //ChangeLabelFont ( ); } publicstatic List<UILabel> GetTypeList () { Object[] objList =Selection.GetFiltered ( typeof ( Object ), SelectionMode.DeepAssets ); //Debug.LogError (Selection.activeObject.name); Debug.LogError ( objList.Length ); List<UILabel> tmpList = new List<UILabel> (); foreach (var tmp in objList ) { if ( ( tmpas GameObject ) !=null ) { string assetstr =AssetDatabase.GetAssetPath ( tmp ); GameObject obj =PrefabUtility.InstantiatePrefab ( tmp ) as GameObject; List<UILabel> tmpLabel = GetTypeIncludeChildren ( obj ); if ( tmpLabel.Count >0 ) { ChangeLabelFont ( tmpLabel );try { PrefabUtility.ReplacePrefab ( obj, tmp ); } catch ( System.Exception ex ) { Debug.LogError ( ex.ToString () &#; tmp.name ); } //Debug.LogError ( AssetDatabase.RenameAsset ( assetstr, name ) ); } GameObject.DestroyImmediate ( obj ); } } AssetDatabase.SaveAssets (); AssetDatabase.Refresh (); return tmpList; } publicstatic List<UILabel> GetTypeIncludeChildren ( Object obj ) { GameObject tmp = objas GameObject; if ( tmp ==null ) { //return new List<UILabel> (); } List<UILabel> tmpList = new List<UILabel> (); UILabel tmpLabel = tmp.GetComponent<UILabel> (); if ( tmpLabel !=null ) { tmpList.Add ( tmpLabel ); } foreach (Transform child in tmp.transform ) { tmpList.AddRange ( GetTypeIncludeChildren ( child.gameObject ) ); } return tmpList; } }

本脚本仅支持替换NGUI的UILabel所使用的字体,经测试替换预设上的UILabel字体的方法在Unity4.3版本中会导致预设无法使用,但在Unity4.5.x中完美使用。

Unity 编辑器下控制播放粒子 在Unity编辑器的Scene视图进行控制播放粒子ParticleSystem,可以借助方法Simulate,具体可以参照以下例子:创建一个空对象ParticleAll,在这个对象下添加一个

[教程]手把手教你制作高通虚拟按钮 突然发觉距离上一篇博文已经好久的了,想写,但是不知道要写一些什么。今天趁着此时还没有关电脑,记录记录高通虚拟按钮(VirtualButton)那点事。当

Unity for Absolute Beginners(二) InstallingThisbookwaswrittenusingUnity4.5.BecauseUnityregularlymakeschangesthatcanaffectyourprojects,youmaywishtousethe4.5versionevenifthecurrentversionisnewer.Ifyouperfer,youcaninstallmultipleversion

标签: unity-chan

本文链接地址:https://www.jiuchutong.com/biancheng/381471.html 转载请保留说明!

上一篇:【Unity】减少GC回收(unity减少drawcall)

下一篇:Unity 编辑器下控制播放粒子(unity编辑器安装)

  • 模具费怎么入账
  • 合伙企业缓交所得税
  • 个人注册公司有什么优惠政策
  • 印花税按合同的多少收
  • 2021成品油增值税计算
  • 出口的港杂费包括哪些
  • 企业收到的政府补贴交所得税吗
  • 公司分立的账务处理凭证怎么做
  • 收到总公司投资款怎么做账务处理
  • 生产车间计提固定资产折旧会计科目
  • 购买税控设备,享受何种优惠政策
  • 收了公司的款项不拿回公司属于什么行为
  • 企业所得税征收标准2023
  • 发票添加商品编码怎么填
  • 滞留发票产生的原因主要包括哪些?
  • 境外所得税收抵免政策
  • 试营业生产的样品怎么做账?
  • 专票电话写错了怎么办
  • 跨年度残保金退税怎么算
  • 出口视同内销补缴增值税会计分录?
  • 企业出租商铺交什么税费呢
  • 坏账准备什么时候转回
  • 存货跌价准备的金额
  • 一般纳税人增值税结转账务处理
  • w11系统激活码
  • 收到供应商发票分录应怎么写?
  • 退休返聘人员的优点
  • 航空公司收取什么费
  • 计划成本法存货成本的确定
  • 取得土地所有权范围内的树如何处理
  • rundll.exe是什么程序
  • win10双系统修改名称
  • php预定义常量要使用define函数进行定义
  • mxoaldr.exe - mxoaldr是什么进程 有什么用
  • vue前端代码实例
  • 弥补以前年度亏损怎么填申报表
  • 一般纳税人企业所得税税率多少
  • 应收债权换入无偿收益
  • 深度学习和日常代码中遇到的报错汇总及解决方案,持续更新中。。。。
  • lcasensor是什么进程
  • php 二叉树的遍历
  • 防伪码查一次还能查第二次吗
  • 机器学习实战练手项目
  • 微信随机红包表情包怎么弄
  • 帝国cms使用手册
  • 帝国cms专题
  • 电脑管理费用入什么账户
  • 房屋租赁时需要交税吗
  • 库存现金怎么算
  • 销货清单要放凭证里吗
  • 税务怎么认定虚列工资
  • 可抵扣进项税的普通发票
  • 跨月凭证怎么冲销
  • 物流公司过户给我需要做什么
  • 红字撤销需要带什么去税务局
  • 业务招待费可以开专票抵扣吗
  • 生产用品采购怎么购买的
  • 场地租赁费属于劳务还是服务
  • 纳税人将外购的货物用于非应税项目
  • 如何抵扣不动产增值税
  • 本年利润是什么科目?
  • 融资租赁公司收费标准
  • mysql主键冲突但数据不存在
  • sql游标实例
  • windows哪个最好用
  • VISTA 下如何通过红外线连接外接设备 以索尼手机为例
  • centos下netconfig 的安装方法
  • SUSE Linux Enterprise Server 11 SP1 安装教程图文详解
  • linux启动后出现grub
  • win8 设置
  • win10预览版和正式版区别
  • 深度技术的系统好不好
  • Unity-Shader Sublime 自制shader提示插件
  • cmd命令进行ftp下载文件夹
  • unity 替代
  • jQuery实现表格文本框淡入更改值后淡出效果
  • 每天一篇日记
  • 技术总结2000字
  • 中国一年的税收是多少万亿
  • 资源税条例实施细则
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设