牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2015-06-07 投稿人: 浏览次数:2252

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


using UnityEngine;
using System.Collections;

public class MyGUI : MonoBehaviour {


    private Vector2 defaultScreenRes;
	// Use this for initialization
	void 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
    }
}






声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。