首页 > Unity3D频道 > 【UGUI研究院】 > UGUI研究院之提前获取Text的宽度(十九)
2015
07-30

UGUI研究院之提前获取Text的宽度(十九)

Unity提供的两个获取文件宽高的方法 preferredWidth 和preferredHeight 必须是文字在Text组件中渲染出来以后才能取到。因为我们游戏的聊天框中是可以输入表情,所以图文混排工具需要支持自动换行的功能。那么这里问题就来了我需要提前获取Text的宽度,这样我才能知道文字什么时候进行换行。

总体来说和NGUI的思路完全一样。提前把文字渲到材质上,这样就可以取出来宽度了。

 

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

  1. 我是这么做的,可以用,但好像在拖动item的时候就崩溃了,提示渲染问题,有空可以帮我看看我这样写有什么问题。 static public int GetFontlen(string str) { int len = 0; Font font; font = Font.CreateDynamicFontFromOSFont(“Arial”, 25); font.RequestCharactersInTexture(str); for (int i = 0; i < str.Length; i++) { CharacterInfo ch; font.GetCharacterInfo(str UGUI研究院之提前获取Text的宽度(十九) - 雨松MOMO程序研究院 - 1 , out ch); len += ch.advance; } return len; }

  2. 这个并不是很准确 比如18号字下,一个汉字advance算出的是18,但是Text.preferredWidth是16.9,字多了后误差就比较大可以用TextGenerator里面的方法来算宽度

  3. momo大神,你好,请问现在5.1版本下的ugui已经可以用来代替ngui开发项目了么…目前立项阶段有点犹豫 UGUI研究院之提前获取Text的宽度(十九) - 雨松MOMO程序研究院 - 1

  4. 你好MoMo,我是你的新粉丝。有个问题想请教,希望闲得难受的时候帮我看看:void Start() { wheelJoint = backWheel.GetComponent();//获取WheelJoint2D //获取JointMotor2D motor = wheelJoint.motor; } public void backward() { if(wheelJoint.useMotor) { if (motor.motorSpeed > -maxSpeed) { motor.motorSpeed -= 50.0f; } } Debug.Log(“Speed = ” + motor.motorSpeed); }log出的MotorSpeed正常,但是却没什么效果。在Unity编辑器中直接调可以