在使用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.