Unity3D使用动态字库字体错位
来源:互联网 发布:windows应用程序错误 编辑:程序博客网 时间:2024/04/28 11:37
转载自:http://blog.csdn.net/u012091672/article/details/17414811
NGUI讨论群:333417608
这个博客解决的是Label各种碎的问题(显示文字不对),如果是模糊的话不要看这个。
方法1:
升级Unity到4.3版本以上
方法2:
首先,需要一个文本,这个文本就是你项目的字典(如果没有,自己研究下)
之后,在游戏启动的时候实现以下步骤:
1、载入字典txt,所有的文字放到一个string里面(暂且叫做languageString)
(3.0以前版本)
2、通过全局配置或者其他任何方式,找到你的UIFont变量font(可以在任意的label上直接取得)
3、调用font.dynamicFont.RequestCharactersInTexture(languageString, font.dynamicFontSize, font.dynamicFontStyle)
(3.0(含)以后版本)
2、通过全局配置或者其他任何方式,找到你的动态字体Font变量font
3、调用NGUIText.RequestCharactersInTexture(font, languageString)应该就可以了。
问题的根本原因不是很了解,但是我想问题应该出现在动态字体创建的texture大小上。
一般问题是出现在切换界面的时候,所以应该是这个时候,如果texture大小不够用,重新调整了texture,导致之前的texture的uv对应不上。
通过上面的方法,在游戏最开始就会创建一个2048*1024大小的texture(我用的是3000多个常用汉字只有不到2M,因为是纯色的图)
所以不会浪费太多内存,也比使用bitmap子图省。
提供一个3.0.7的脚本。之前版本的自己看着改吧。
- using UnityEngine;
- using System.Collections;
- /// <summary>
- /// SZUI dynamic font problem fix.
- /// Usage : attach this to a gameobject or use SZUIDynamicFontProblemFix.DynamicFontProblemFix
- /// </summary>
- public class SZUIDynamicFontProblemFix : MonoBehaviour {
- /// <summary>
- /// The font. your ttf
- /// </summary>
- public Font font;
- /// <summary>
- /// The text. your language file
- /// </summary>
- public TextAsset text;
- private static bool isFixed = false;
- private static SZUIDynamicFontProblemFix inst;
- private static SZUIDynamicFontProblemFix Inst
- {
- get
- {
- if (inst == null)
- {
- GameObject go = new GameObject(typeof(SZUIDynamicFontProblemFix).Name);
- inst = go.AddComponent<SZUIDynamicFontProblemFix>();
- }
- return inst;
- }
- }
- void Awake()
- {
- if (inst == null)
- {
- inst = this;
- }
- if (inst != null && inst != this)
- {
- Destroy(this.gameObject);
- return;
- }
- DynamicFontProblemFix();
- }
- public static void DynamicFontProblemFix()
- {
- if (!isFixed)
- {
- isFixed = true;
- NGUIText.RequestCharactersInTexture(Inst.font, Inst.text.text);
- }
- }
- }
- Unity3D使用动态字库字体错位
- Unity3D使用动态字库UILabel显示错位
- Unity3d 动态字体
- Unity的动态字库字体超出字库图片尺寸导致字体花屏
- (libgdx小结)TTF字库的使用(优美字体的绘制)
- 编码,字体与字库
- 【Unity3D】【NGUI】移动设备上使用动态字体Label显示不正确
- Unity3D-使用Bitmap Font Generator自定义字体
- Unity3D BMFont使用图片自定义字体(无需字体文件)
- Unity3D BMFont使用图片自定义字体(无需字体文件)
- Unity3D BMFont使用图片自定义字体(无需字体文件)
- Unity3D BMFont使用图片自定义字体(无需字体文件)
- Unity3D BMFont使用图片自定义字体(无需字体文件)
- Unity3D BMFont使用图片自定义字体(无需字体文件)
- Unity3D 使用图片自定义字体,防止打包安卓后字体变形
- 使用freetype2从ttf字库中提取任意大点阵字体
- cocos2dx的CCLabelTTF类使用不同的TTF字库时字体没有变化的问题
- 关于QT字库的移植和使用总结(能够任意改变字体和颜色)
- 大二这一年的技术之旅
- css:pointer-events
- linux 软中断和tasklet
- 我的IntellJ Idea学习笔记
- 传智播客javase总结 6
- Unity3D使用动态字库字体错位
- 什么是压栈操作?指令:PUSH src ;src为16位操作数
- Unity3D游戏引擎最详尽基础教程
- intellij 14创建java web
- Unity3D使用动态字库UILabel显示错位
- 线程创建
- NYOJ 353--3D dungeon【水题 && BFS】
- 建立单向链表
- NYOJ169 && ZZULIOJ 1437: 素数