纳金网

标题: GUI里面图片的旋转(附带钟表例子) [打印本页]

作者: 晃晃    时间: 2011-11-20 22:15
标题: GUI里面图片的旋转(附带钟表例子)




             以前一直不知道在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%24);
            

                if(hour/10 >=1){
            

                lastTime+="" + hour;
            

                }else{
            

                lastTime +="0" + hour;
            

                }
            

                var minute = Mathf.FloorToInt(time/60%60);
            

                if(minute/10 >=1){
            

                lastTime+=":" + minute;
            

                }else{
            

                lastTime +=":0" + minute;
            

                }
            

                var second = Mathf.FloorToInt(time%60);
            

                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)可用于实现场景中时间的显示,或者倒计时的显示等,需要的直接拿走,哈哈哈~
            



作者: C.R.CAN    时间: 2012-1-30 23:27
日出遇爱,日落见情;愿所有的吉星呵护着你!时时吉祥,刻刻平安 愿新的一年里,你位高权重责任轻,钱多事少离家近,每日睡到大天亮,工资领到手抽筋,手下花钱你收礼,别人加班你加薪!

作者: 菜刀吻电线    时间: 2012-2-2 23:32
加精、加亮滴铁子,尤其要多丁页丁页

作者: C.R.CAN    时间: 2012-2-16 23:18
不错啊 经典

作者: 难骑    时间: 2012-2-17 19:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: C.R.CAN    时间: 2012-2-22 23:21
都闪开,介个帖子,偶来顶

作者: C.R.CAN    时间: 2012-3-11 23:26
你们都躲开,我来顶

作者: tc    时间: 2012-6-10 23:20
很经典,很实用,学习了!

作者: 菜刀吻电线    时间: 2012-7-30 23:25
已阵亡的 蝶 随 风 舞 说过  偶尔按一下 CTRL A 会发现 世界还有另一面

作者: 菜刀吻电线    时间: 2012-8-15 23:45
很经典,很实用,学习了!

作者: 菜刀吻电线    时间: 2012-12-16 23:24
既来之,则看之!

作者: C.R.CAN    时间: 2013-1-28 23:26
读铁系缘分,顶铁系友情





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5