文件名称:GUI里面图片的旋转(附带钟表例子)
文件大小:2KB
文件格式:TXT
更新时间:2015-01-16 10:35:40
unity3d
以前一直不知道在GUI里面画出的图片可以旋转,所以遇到想要旋转图片时,都是把图片贴到一个面片上,旋转面片,很是不方便,最近发现在GUI里是可以旋转图片的,所以写到这里分享给大家。下面贴一个例子,利用图片旋转写的一个钟表的代码,不废话,直接上代码。 var Tu1 : Texture2D; var Time1 : float = 0; function FixedUpdate () { Time1 += Time.deltaTime; } function OnGUI () { GUI.Label(Rect(250,170,161,62),getTime(Time1)); GUIUtility.RotateAroundPivot (6*Time1, Vector2(103, 200)); GUI.DrawTexture(Rect(100,100,6,100),Tu1);//秒针 GUIUtility.RotateAroundPivot (-6*Time1, Vector2(103, 200)); GUIUtility.RotateAroundPivot (0.1*Time1, Vector2(103, 200)); GUI.DrawTexture(Rect(100,120,6,80),Tu1);//分针 GUIUtility.RotateAroundPivot (-0.1*Time1, Vector2(103, 200)); GUIUtility.RotateAroundPivot (0.1/60*Time1, Vector2(103, 200)); GUI.DrawTexture(Rect(100,140,6,60),Tu1);//时针 GUIUtility.RotateAroundPivot (-0.1/60*Time1, Vector2(103, 200)); } function getTime(time : float) : String{ if(time<0){ return "00:00:00"; } var lastTime : String = ""; var hour = Mathf.FloorToInt(time/3600$); if(hour/10 >=1){ lastTime+="" + hour; }else{ lastTime +="0" + hour; } var minute = Mathf.FloorToInt(time/60`); if(minute/10 >=1){ lastTime+=":" + minute; }else{ lastTime +=":0" + minute; } var second = Mathf.FloorToInt(time`); if(second/10 >=1){ lastTime+=":" + second; }else{ lastTime +=":0" + second; } return lastTime; } 简单介绍一下代码 GUIUtility.RotateAroundPivot (6*Time1, Vector2(103, 200))为旋转GUI的代码,第一个参数为旋转的角度,第二个参数为旋转的中心点,在它之下的GUI元素都会执行该旋转,例如图片、文字等。当你只想旋转某一GUI元素而其他元素不旋转事就得给它一个停止旋转的代码,很简单,停止旋转时给它一个反向的角度,ok。 为了便于测试,在钟表左边给出一个数字时间经行对比。getTime(time : float)可用于实现场景中时间的显示,或者倒计时的显示等,需要的直接拿走,哈哈哈~