您的位置:首页 > 移动开发 > Unity3D

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

2015-04-01 01:31 686 查看
在使用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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐