UGUI_屏幕适配

摘要:
我认为覆盖层有问题。如果我想在UI前面放一些东西,我不能,因为我可能会在UI前面放置特殊效果或UI。这与NGUI的原理非常相似。如果我想在UI前面添加特殊效果,我可以创建一个深度大于UICamera的相机。

引用:http://www.xuanyusong.com/archives/3278#comments

 UGUI_屏幕适配第1张UGUI_屏幕适配第2张

1.可以选择的有三种:

1.Screen Space – overlay  此模式不需要UI摄像机,UI将永远出现在所有摄像机的最前面。我觉得overlay有问题,如果我想在UI前面放个东西就不行了,因为可能在UI前面放一个特效或者UI啥的。。

2.Screen Space- Camera 此模式是我决定采取的,它需要提供一个UICamera 。这样就和NGUI的原理很像了,如果我想在UI前面加特效我可以在创建一个摄像机深度大于这个UICamera就行了。

3.World Space 这个就是完全3D的UI,UGUI的例子大多都采用它,但是我觉得目前我还是用不到。

4.位置4的计算公式=(位置2/位置3 ) *0.5

Canvas Scaler 选择 Scale With Screen Size, Screen Match Mode 选择 Match Width Or Height,比例设为1,即只和高度进行适配;

因为UI的自适应UGUI已经帮我们做了,那么我们要做的就是3DCamera的自适应。把下面这个脚本挂在Main Camera上即可

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class CameraScale : MonoBehaviour {
 
    void Start () {
        int ManualWidth = 960;
        int ManualHeight = 640;
        int manualHeight;
        if (System.Convert.ToSingle(Screen.height) / Screen.width > System.Convert.ToSingle(ManualHeight) / ManualWidth)
            manualHeight = Mathf.RoundToInt(System.Convert.ToSingle(ManualWidth) / Screen.width * Screen.height);
        else
            manualHeight = ManualHeight;
        Camera camera = GetComponent<Camera>();
        float scale =System.Convert.ToSingle(manualHeight / 640f);
        camera.fieldOfView*= scale;
    }
}

 记得增加一个UIForward 的层, 这样如果想在UI的前面添加特效 直接把它的特效的Layer设置成UIForward即可。

免责声明:文章转载自《UGUI_屏幕适配》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇.NET 反射(转载) KevinMyBatis开发--&amp;gt;接口方式编程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#断开式连接

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Data.SqlClient;using System.Drawing;using System.Linq;using System.Text;us...

ASP.NET System.Web.HttpContext类Current属性 的运用收藏

1、.Net的HTTP请求.NET与ASP的运行机制有很大不同.ASP的请求与响应是,ASP页面被请求,然后逐行解释.是基于过程的.最多是包含了文件,需要先引入文件罢了.而.Net,在页面被请求后,首先是加载HTTP Module,这不是本文的重点.然后再加载HTTP Handler.这也不是本文的重点.加载的这两项,都需要在Webconfig文件中配置....

Unity的UGUI学习

UGUI和NGUI在使用上很相似,但UGUI封装的更好,使用起来更加方便 UGUI的基础组件 Pos x  、Pos y 、Pos z  是UI元素在Canvas中以锚点为原点的坐标 Width   Height是UI元素的大小 Anchors:是确定UI元素的锚点,锚点是固定UI元素于父物体的位置的,在改变父物体的大小时,子UI与锚点的相对距离不变 p...

从网页抓取数据的一般方法

首先要了解对方网页的运行机制 ,这可以用httpwacth或者httplook来看一下http发送和接收的数据。这两个工具应该说是比较简单易懂的。这里就不再介绍了。主要关注的内容是header和post的内容。一般会包括cookie,Referer页面和其他一些乱其八糟可能看不懂的变量,还有就是正常交互的参数,比如需要post或者get的querystri...

System.Net.Mail.SmtpClient通过SSL/TLS协议发送邮件失败问题解决

一、问题描述 1、问题现象 通过System.Net.Mail.SmtpClient使用SSL/TLS协议发送邮件失败并报错System.Net.Mail.SmtpException: Failure sending mail 详细报错信息: System.Net.Mail.SmtpException: Failure sending mail. -...

Control.CheckForIllegalCrossThreadCalls=false不可在多线中随便使用

CodeProject上有篇文章An Alternate Way of Writing a Multithreaded GUI in C# 本意是Alternate Way 另外一种方法,后来莫名其妙的被转载成中文变了题目,最高效的方法。         CheckForIllegalCrossThreadCalls和control.Invoke有什么不同...