【Unity3D】笔记之OnGUI()下的自适屏
转眼离上一篇博客的已有半年之久,想当初,满怀激情的说要坚持更新博客,记录学习笔记,但要真正坚持下去,确实需要非凡的毅力啊!脑子的那股热一散去整个人就懒了。还记得那时正准备写篇关于在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 } }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。