提前获取文本的宽度,便于合理显示文本显示框
2015-08-13 15:36
218 查看
提前获取文本的宽度,便于合理显示文本显示框。
Unity提供的两个获取文件宽高的方法 preferredWidth 和preferredHeight 必须是文字在Text组件中渲染出来以后才能取到。因为我们游戏的聊天框中是可以输入表情,所以图文混排工具需要支持自动换行的功能。那么这里问题就来了我需要提前获取Text的宽度,这样我才能知道文字什么时候进行换行。
总体来说和NGUI的思路完全一样。提前把文字渲到材质上,这样就可以取出来宽度了。
public Font font;
void testFont()
{
int fontsize=35;
string text = "赵光辉";
font.RequestCharactersInTexture(text,fontsize,FontStyle.Normal);
CharacterInfo characterInfo;
float width=0f;
for(int i=0; i<text.Length;i++){
font.GetCharacterInfo(text[i],out characterInfo,fontsize);
//width+=characterInfo.width; unity5.x提示此方法将来要废弃
width+=characterInfo.advance;
}
Debug.Log("width : " + width);
}
Unity提供的两个获取文件宽高的方法 preferredWidth 和preferredHeight 必须是文字在Text组件中渲染出来以后才能取到。因为我们游戏的聊天框中是可以输入表情,所以图文混排工具需要支持自动换行的功能。那么这里问题就来了我需要提前获取Text的宽度,这样我才能知道文字什么时候进行换行。
总体来说和NGUI的思路完全一样。提前把文字渲到材质上,这样就可以取出来宽度了。
public Font font;
void testFont()
{
int fontsize=35;
string text = "赵光辉";
font.RequestCharactersInTexture(text,fontsize,FontStyle.Normal);
CharacterInfo characterInfo;
float width=0f;
for(int i=0; i<text.Length;i++){
font.GetCharacterInfo(text[i],out characterInfo,fontsize);
//width+=characterInfo.width; unity5.x提示此方法将来要废弃
width+=characterInfo.advance;
}
Debug.Log("width : " + width);
}
相关文章推荐
- C语言中各种%的含义
- Python3 多线程并发 post 压力测试 并发编程
- 进入到文件系统,使用mount命令挂载到Linux不成功。出现 failed: No such device
- .NET开发人员值得关注的七个开源项目
- localStorage、sessionStorage用法总结
- 创建Material Design风格Android应用--自定义阴影和裁剪视图
- C转义字符
- Java基础针对自己薄弱环节总结05(API、集合)
- 最大子矩阵全1的个数
- LoggerFactory.getLogger的使用
- 前台到后台的交互,至成功导出Excel
- hdu-1049-Climbing Worm
- HDU 1005 Number Sequence
- 全屏与非全屏动态切换的正确方式
- 杭电(hdu)ACM 1010 Tempter of the Bone
- 监控平台架构设计
- EF中使用数据库的标量值函数
- MariaDB 更改默认数据存放目录
- poj2349:Arctic Network(最小生成树)
- iOS开发 Xcode上使用xib时,查看UI在不同屏幕尺寸的效果