UNITY的IMGUI的适配研究自动匹配屏幕分辨率-非ugui

最最简单的适配方法:

//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;
    }
}

 

Unity中实现GUI适配_Hello Bug.的博客-CSDN博客

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值