在网上搜了好多资料关于如何自适应各种繁杂平台的手机屏幕分辨率,找到了一个关键词UIRoot,于是乎去下载了NGUI插件,这是一个Unity3D上开发2D游戏最好的插件了。

教程环境:Unity4.5.1f3, NGUI v3.7.1。若界面有所差别,请自行领悟!

NGUI百度百科定义:NGUI是严格遵循KISS原则并用C#编写的Unity(适用于专业版和免费版)插件,提供强大的UI系统和事件通知框架。其代码简洁,多数类少于200行代码。

1. 下载NGUI Next-Gen UI v3.7.0

2. 导入NGUI package到Unity。

custom-package

这时候菜单上会出现NGUI的菜单栏:

NGUIcaidan

3. 将默认的Main Camera删掉,通过菜单栏NGUI->Create新建一个2D UI对象。

unity3d-2dui

此时创建了一个UI Root以及子对象Camera(这就是为什么要删除默认的摄像头),这个摄像头自带了NGUI的UICamera脚本,这个脚本的作用是来响应各种事件的。

unity3d-uiroot-camera

4. 设置UI Root属性,点击UI Root,此时在右侧的Inspector面板可以看到其相关属性,这里很关键!选择Scaling Style为ConstrainedOnMobiles,这个是专门为手机分辨率设计的选项,此时下面有两个属性,勾选Content Width和Content Height,并设置你最期望的屏幕分辨率,一般会是你背景图片的分辨率,这样UI Root下的子元素就会根据手机的分辨率等比例缩放!注意下图的官方说明。

unity-uiroot-scalingstyle

5. 你会发现这个新的Camera看不到你创建的物体,需要设置摄像头为可视摄像头。点击Camera,在右侧的Inspector面板会看到Camera的属性,设置以下两个属性:

Culling Mask:选Everything(这个非常重要,这样才能看到你的物体)。

Clear Flags: 选Skybox

unity-camera-cullingmask

6. 通过NGUI创建一个Texture对象当作背景图片,这一步非常重要!之前博主在这边卡了好长时间。只有在UI Root下并且是NGUI的对象才能应用到UI Root的Scaling Style功能!(当然,应该还有博主没摸清的地方。)

unity-texture-gbSetting

7. 好了,检查下Game视图,看看是不是生效了呢:)下面放几张有代表性的图。

注意:以后添加的所有对象都应该在UI Root下,这样才能跟着背景图片等比例缩放!

分辨率:1280*800(16:10),上下填充黑边。

unity-1280-800-16-10

分辨率:1920*1080(16:9),完美填充,无黑边!

unity-1080p

分辨率:800*400(2:1),左右填充黑边。

unity-400p


手机竖屏设置,参考Unity3D 手机竖屏设置(For Android)