码迷,mamicode.com
首页 > 编程语言 > 详细

【Unity3D API的学习与使用】Unity实现GUI组件的位移、缩放和旋转

时间:2015-04-01 01:54:47      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:unity3d   gui   旋转   rotate   matrix   

在使用Unity中GUI组件时,我们可以像处理一个实体一样,对其进行位移、缩放和旋转的操作。

其中,位移和缩放都只需要改变其Rect的内容即可,前者改变x、y参数,后者改变width和height参数,而旋转则有所不同,它需要使用GUI.matrix的一个函数:

GUIUtility.RotateAroundPivot (rotAngle, pivotPoint)
参数说明:
rotAngle:旋转的角度;
pivotPoint:旋转时围绕的中心点。

JavaScript示例:

#pragma strict

private var rotAngle : float = 0;       //旋转的角度
private var pivotPoint : Vector2;       //旋转时的中心坐标

function Start(){
    //设定旋转中心点为屏幕中心
    pivotPoint = Vector2(Screen.width/2,Screen.height/2);       
}

function OnGUI () {

    if(GUI.Button(Rect(Screen.width/2-75, Screen.height/2-100, 50, 50),"right"))
            rotAngle += 10;

    if(GUI.Button(Rect(Screen.width/2+25, Screen.height/2-100, 50, 50),"left"))
            rotAngle -= 10;

    var matrix : Matrix4x4 = GUI.matrix;                 //记录此时的矩阵

    GUIUtility.RotateAroundPivot (rotAngle, pivotPoint); //旋转
    if(GUI.Button(Rect(Screen.width/2-25, Screen.height/2-25, 50, 50),"Hello"))
    {

    }

    GUI.matrix = matrix;                                //矩阵恢复,从而使left和right按钮不旋转

}

在示例里

ar matrix : Matrix4x4 = GUI.matrix;              //记录此时的矩阵

这行代码是记录此时GUI界面的GUI.matrix ,然后会在旋转操作之后恢复它(官网里所说旋转界面是通过改变这个变量的值成功的,如下),这样,就使得left和right按钮不被旋转,而只旋转Hello这一个按钮。

Helper function to rotate the GUI around a point.
Modifies GUI.matrix to rotate all GUI elements angle degrees around pivotPoint.

【Unity3D API的学习与使用】Unity实现GUI组件的位移、缩放和旋转

标签:unity3d   gui   旋转   rotate   matrix   

原文地址:http://blog.csdn.net/zgljl2012/article/details/44793753

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!