最最简单的适配方法:
//ongui调用方法
GUILayout.BeginArea(new Rect(r(50), r(50), r(200), r(200)));
GUILayout.BeginVertical();//内层嵌套一个纵向布局
Rect rect = new Rect(r(50), r(50), r(200), r(38));
showTerrain = GUI.Toggle(rect, showTerrain, "显示山脉");
//showTerrain = GUILayout.Toggle(showTerrain, "显示山脉");
cloudScale = GUILayout.HorizontalSlider(cloudScale, 0f, 5f);
/// <summary>
/// get resolution final value
/// </summary>
/// <returns></returns>
float r(float v) {
//假设view 的宽高 是 800 x 600
//v / 800 = r / sceneHeight;//屏蔽占比相等
return v / 800f * sceneHeight;
}
程序什么的,你一天不死,都总会发现有其他程序员比你牛逼
上面这个简单方法,不是好的方法,最后面gui.matrix方法比较好理解
大牛的方法 有些绕:
Unity GUI自适应屏幕分辨率(一)布局自适应 - keepsilence - 博客园d
大牛的方法2:
using UnityEngine;
public class TestGUI : MonoBehaviour
{
private void OnGUI()
{
Resize();
GUILayout.Button("this is a button");
}
Vector2 nativeResolution = new Vector2(750, 1334);
Vector2 ratio;
void Resize()
{
ratio = new Vector2(Screen.width * 1f / nativeResolution.x, Screen.height * 1f / nativeResolution.y);
Matrix4x4 m = Matrix4x4.identity;
m.SetTRS(Vector3.zero, Quaternion.identity, new Vector3(ratio.x, ratio.y, 1));
GUI.matrix = m;
}
}