【Unity3D】笔记之OnGUI()下的自适屏

来源:互联网 发布:php artisan db seed 编辑:程序博客网 时间:2024/06/05 15:42

    转眼离上一篇博客的已有半年之久,想当初,满怀激情的说要坚持更新博客,记录学习笔记,但要真正坚持下去,确实需要非凡的毅力啊!脑子的那股热一散去整个人就懒了。还记得那时正准备写篇关于在OnGUI()方法下UI如何自动适应屏幕分辨率变化,但一直拖着没空写。刚好趁现在没找到工作之前有点时间,就把这个补上,虽然现在已经有NGUI和UGUI这些可以轻松实现自适屏效果,但我还是想把这个初学时学到的这个方法记录下,多学点是没错的,嘻嘻。
    下面的脚本随便挂在一个对象下,运行时随便更改分辨率和调整Game窗口大小都能轻松实现自适屏效果。


using UnityEngine;using System.Collections;public class MyGUI : MonoBehaviour {    private Vector2 defaultScreenRes;// Use this for initializationvoid Start () {        defaultScreenRes.x = 1366;//初始化一个本机的分辨率        defaultScreenRes.y = 768;}    void OnGUI()    {        ResizeGUIMatrix(); //初始化调用方法实现自动适应屏幕分辨率        GUI.matrix = Matrix4x4.identity;        GUI.Button(new Rect (20,20,200,100),"kkoo");       //GUI.matrix = Matrix4x4.identity;    }   void ResizeGUIMatrix()    {       //通过当前屏幕和预设屏幕的宽高比得到比例ratio       Vector2 ratio = new Vector2(Screen.width/defaultScreenRes.x , Screen.height/defaultScreenRes.y );       Matrix4x4 guiMatrix = Matrix4x4.identity; //单位矩阵       //Matrix4x4.SetTRS():设置平移旋转缩放矩阵       //参1为平移,参2为旋转,参3为缩放       //将缩放ratio所得值放入参3,达到缩放GUI效果       guiMatrix.SetTRS(new Vector3(1, 1, 1), Quaternion.identity, new Vector3(ratio.x, ratio.y, 1));       GUI.matrix = guiMatrix; //将改变的比例传给GUI    }}






1 0
原创粉丝点击