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

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

时间: 2024-12-30 02:52:32

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

unity发布安卓 手指控制物体缩放和旋转

直接帮到物体的身上就可以了 using UnityEngine; using System.Collections;using System.IO;public class hehe : MonoBehaviour{    private Touch oldTouch1;  //上次触摸点1(手指1)      private Touch oldTouch2;  //上次触摸点2(手指2) void Start()    { } void Update()    {        //没有触摸

unity3d 跨行业宣传片!Unity 不只是游戏!【狗刨学习网】

unity3d 跨行业宣传片!Unity 不只是游戏![狗刨学习网] 视频播放地址http://www.gopedu.com/article/1097 Unity3D行业前景,游戏开发,虚拟仿真,医疗,军事,建筑,电影,动漫等多行业都在广泛运用3D技术.unity3d的春天正式到来! Unity公司成立于2004年,其总部设在San Francisco,在欧亚地区都有分支办公机构,该公司专注于生产卡法工具.Unity 3D是一个视频游戏以及互动媒体的开发平台,支持为了全部主流桌面和游戏平台,包括

Unity3D for VR 学习(8): Unity Shader概述

从西安到北京高铁上,一位VR老外团队的华人leader对VR技术做了画龙点睛: “3D游戏的核心部分在Render, 国内很多团队美术.程序中间缺失严重.所以3d游戏做不好. VR这块更是至关重要.” 故,欲VR,先Shader吧. 1 CG规范: 计算机图形学(英语:computer graphics) 在Windows下图像渲染是DirectX: 在Linux下图形渲染是OpenGL:在苹果下新出的Metal渲染.而作为Unity3D程序,跨平台的特性则无须对这些平台一一掌握,仅需要从CG规

Unity3D for VR 学习(9): Unity Shader 光照模型 (illumination model)

关于光照模型 所谓模型,一般是由学术算法发起, 经过大量实际数据验证而成的可靠公式 现在还记得2009年做TD-SCDMA移动通信算法的时候,曾经看过自由空间传播模型(Free space propagation Model),目的为了得出移动信号的传播损耗.当时是基于普通的PC实时运算,非常非常耗时–如北京五环内的传播模型渲染GIS图用了超过20分钟. 光照模型来源有2类: 一类是基于学术论文的算法,如Lambert模型.Phong模型. 另一类基于算法的变种–在实际生产实践中修正得到的模型,

【Unity】1.3 Unity3D游戏开发学习路线

分类:Unity.C#.VS2015 创建日期:2016-03-23 一.基本思路 第1步--了解编辑器 首先了解unity3d的菜单,视图界面.这些是最基本的基础,可以像学word操作一样,大致能明白有几个菜单,几个基本的视图,各自起什么作用就可以了.当然还要了解人物基本的比例和结构. 第2步-了解基本概念 理解场景里面的坐标系统,输入系统,简单的向量概念.Unity3D的坐标系统及向量概念如果不理解清楚,不理解世界坐标,局部坐标的关系,即使一个简单的移动,缩放,旋转的几行代码,也会困惑你半天

Unity3D for VR 学习(2): 暴风魔镜框架探索

学习一个新技术,有三个法宝: 法宝1: 掌握厂家提供的用户API手册 法宝2: 掌握厂家提供的demo样例 法宝3:<每个研发人员都应树立的一个demo模式> 故,学习魔镜4技术,亦如是也. 暴风魔镜4是 硬件 + 暴风VR SDK软件的CardBoard VR解决方案. 硬件 魔镜4硬件提供了展示容器工具,主要由2个凸透镜和塑料头盔构成.故为了看到效果酷炫的VR效果,必须要依赖5寸以上Android手机–720P以上,把通过暴风魔镜SDK做的App放入里面,通过暴风魔镜凸透镜才能看到VR的效

Unity3D for VR 学习(6): 再次温故知新-3D数学

一年前,系统学习过3D数学,并记录了一篇博客<C#程序员整理的Unity 3D笔记(十):Unity3D的位移.旋转的3D数学模型>. 一年后,再次温习之. 坐标系:Unity3D使用左手笛卡尔坐标系(Descartes coordinate system) 世界坐标系(world space):在一个游戏场景中,唯一. 物体坐标系\局部坐标系(local\Object space):每个物体有各自的独立的坐标系.如桌子的物体坐标系中,扶手相对桌子腿位置.有时候,不需要对外暴漏太多细节. 摄像

针对Android平台我们需要学习如何在Unity中调用Android的JAVA代码。

Unity for Android 比较特殊,Unity for IOS 打包是将XCODE工程直接交给开发者,开发者可以在工程的基础上继续添加新的视图,最后由开发者自行打包生成IPA包,发布程序.而Unity for Android打包直接生成APK包,等于说源代码开发者是看不到的,但是Unity的自身确实有些局限,针对Android平台我们需要学习如何在Unity中调用Android的JAVA代码.本章我们的目标是使用Unity的脚本打开Activity.首先我们创建一个普通的Android

Unity3D for VR 学习(7): 360&#176;全景照片

在VR应用中,有一个相对简单的虚拟现实体验,那就是360°全景照片浏览器, 他可以使得手机拍照的”全景”照片,  得以”恢复”当时拍照的场景全貌,  这个创意的确比单纯的2d图片更有震撼力一些,故本文就制作360全景照片的过程进行简单小结. Step 1:预期需求 可以通过手机的陀螺仪,在魔镜中查看360°图片:不用依赖任何蓝牙输入,仅通过Gaze Input进行选择下一张360°图片(盯着缩放图2s,进度条旋转完成后,就切换图片:用Gear VR的磁铁触发功能也可以实现选择下一张图片). St