UI开发核心问题-UI随屏幕自适应
屏幕分辨率对UI适配的影响
一般来说,UIRoot都会选择FixSize的缩放模式,这样可以让UI随着分辨率而自动缩放,保持和屏幕相对的大小比例不变,让UI整体看上去不会有变大变小的奇怪现象。但是,还有另一个真正严重的问题:不同屏幕的宽高比不一样。
在Unity中,不同屏幕的宽高比,一般都会以高度为基准而拉伸宽度。
切换屏幕比例模式的方法为在Game视图中的屏幕比例菜单,FreeAspect为不限长宽比,可以在其中选择想要的长宽比。
如果屏幕比例菜单中没有想要的屏幕比例,可以单击菜单最底部那个小较好按钮,会弹出一个让自定义一个新的屏幕比例模式的界面,Label选项中,可以输入一个名称来为这个自定义的屏幕比例命名。在Type中可以选择FixedResolution和Aspect Ratio两个选项,如果选择FixedResolution,可以在下面的Width&Height中输入分辨率的宽和高的具体像素;如果选择Aspect Ratio,可以在下面的Width&Height中输入分辨率的宽高比。设定好之后单击OK按钮,即可保存这个自定义的屏幕分辨率模式。
因为NGUI的UIRoot具备FixSize模式,所以,一般在进行UI随屏幕自适应时,主要着重解决的是屏幕宽高比发生变化之后的自适应。
主流设备的屏幕分辨率
不论是PC设备还是移动设备,屏幕分辨率一般处于4:3到16:9之间,一般来说,只需要考虑这两个值作为极限值即可。
自适应核心组件Anchor的使用
所谓Anchor,即为锚点,它的工作原理是它会自动地绑定摄像机的某一个点作为锚点,锚点一共有上左、上、上右、左、中、右、左下、下、右下9个点可以设定。当相机变动时,Anchor组件所在的物体位置也会跟随相机的变动而变动,并始终处于相机边界的锚点位置。
Anchor的创建方式,在Unity顶部NGUI菜单中选择Create->Anchor即可。
Anchor组件的设置:
UICamera选项自动锁定了该Anchor所在的UI的摄像机,它将会绑定这个摄像机边缘上的某一个点作为锚点。Container即为包含的物体,一般情况下无需设置,因为将物体放置于Anchor的子物体中,就可以利用“子物体跟随父物体”实现跟随Anchor的锚点。
Side一项为核心项,选择该Anchor的脑电,一共9个点,分别对应相机边缘的上左、上、上右、左、中、右、左下、下、右下。
RunOnlyOnce意为执行一次,即只在开始的时候进行一次适配,默认为勾选上,一把把不需要去修改它。
RelativeOffset,这是Anchor的相对位置偏移,百分比形式的。
PixelOffset,像素偏移,Anchor会相对于相机边缘上的锚点以像素为单位进行偏移。
使用Anchor的注意事项
(1)在设定了Anchor的Side锚点之后,Anchor会自动跑到响应的锚点位置上去,不需要手动拖动Anchor。
(2)不论是3D UI还是2D UI,Anchor的用法是一模一样的,不要手动拖动Anchor的位置。
(3)一般情况下,尽量不要去设置Anchor的RelativeOffset和PixelOffset,就让Anchor保持锚点原位置,然后将UI控件放到Anchor下作为子物体,再去调整UI控件的位置。
(4)Anchor物体身上,尽量保证只有Anchor一个组件,以便于管理维护。
(5)一套UI体系中,可以有无数多个Anchor(例如有5个Anchor都定位于左上角是被允许的),但是,尽量确保Anchor的父物体中没有Anchor,也就是尽量避免Anchor中套Anchor。Anchor的父物体可以是UI Root,也可以是一个空物体。
(6)不要滥用Anchor,如果相机边缘的9个锚点中的每个点都有多个Anchor来定位,那么一定是UI结构的实际有问题了。
正式开发UI之前必须明确的几个问题
(1)针对的是什么样的平台。
(2)游戏的设备屏幕宽高比最大、最小是几比几。
(3)游戏开发时的标准分辨率是多少像素,这将关系到美术制作图片资源的标准。
(4)检查UI设计草图,和策划人员明确哪些UI会在屏幕宽高比变化时自适应位置。
(5)明确需要自适应位置的UI分别属于哪一个锚点,并设计一个最佳的UI结构。
UI开发核心问题-UI随屏幕自适应的更多相关文章
- [置顶] Kendo UI开发教程: Kendo UI 示例及总结
前面基本介绍完Kendo UI开发的基本概念和开发步骤,Kendo UI的示例网站为http://demos.kendoui.com/ ,包含了三个部分 Web DemoMobile DemoData ...
- U9单据UI开发--单据类型UI开发
1.在解决方案下新建UI界面项目,命名以UI作为后缀 2.先删除系统默认新建的UI界面数据模型,并新建界面数据 3.新建单据类型UIModel(界面数据),以model作为界面数据后缀名 4.修改单据 ...
- Web UI开发神器—Kendo UI for jQuery数据管理网格编辑操作
Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support f ...
- Web UI开发神器—Kendo UI for jQuery数据管理之过滤操作
Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support f ...
- 关于Kendo UI 开发教程
Kendo UI 开发教程 jQuery UI 是一套 JavaScript 函式库,提供抽象化.可自订主题的 GUI 控制项与动画效果.基于 jQuery JavaScript 函式库,可用来建构互 ...
- iOS开发UI篇—核心动画(转场动画和组动画)
转自:http://www.cnblogs.com/wendingding/p/3801454.html iOS开发UI篇—核心动画(转场动画和组动画) 一.转场动画简单介绍 CAAnimation的 ...
- 三、UI开发之核心基础——约束(入门)
先学个新技能:添加图片控件Image View iOS的图片控件是ImageView,ImageView通过提前载入用户指定的图片资源来显示相应的图片. 所以图片控件的关键信息有3个: 1. Imag ...
- iOS开发UI篇—核心动画(UIView封装动画)
iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...
- iOS开发UI篇—核心动画(关键帧动画)
转自:http://www.cnblogs.com/wendingding/p/3801330.html iOS开发UI篇—核心动画(关键帧动画) 一.简单介绍 是CApropertyAnimatio ...
随机推荐
- LeetCode 268
Missing Number Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one ...
- Eclipse输入任意字母或指定字符出现提示框
Eclipse默认是输入"."的时候会有提示框提示对应的API. 如果想更方便的输入任意字母或者指定的符号出现提示框设置如下: 打开Eclipse,选中“Window”->& ...
- 【数论】UVa 10586 - Polynomial Remains
Problem F: Polynomial Remains Given the polynomial a(x) = an xn + ... + a1 x + a0, compute the remai ...
- Radware中APPDirector系列的Farm Table中的session mode参数说明
Session mode中共有5种会话保持方式:1.Regular,是普通的会话保持,形成的表项是:Client ip+Server ip的形式2.EntryPerSession(EPS),是端口与i ...
- Win7显示隐藏文件,隐藏文件夹怎么显示?如何查看?
隐藏文件技术是木马病毒传播最惯用的手法之一,它们利用大部分网友对基础操作的不熟悉特点,逃过用户的发现和检查,显示隐藏文件的标准设置方法大家都会使用,一旦隐藏问题与病毒木马结合起来,比如典型的autor ...
- asp.net C#数据导出Excel实例介绍
excel导出在C#代码中应用己经很广泛了,我这里就做些总结,供自己和读者学习用. Excel知识点. 一.添加引用和命名空间 添加Microsoft.Office.Interop.Excel引用,它 ...
- JAR、WAR、EAR 区别
JAR包 JAR 文件格式以流行的 ZIP 文件格式为基础: 与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库.组件和插件程序,并可被像编译器和 JVM 这样的工具直接 ...
- (转)Facebook内部分享:26个高效工作的小技巧
春节假期马上就要结束了,该收收心进入新一年的工作节奏了~分享 26 个高效工作的小技巧,希望对大家有所帮助~(我发现自己只有最后一条执行得很好,并且堪称完美!) 1.时间常有,时间优先. 2.时间总会 ...
- 利用AVL树实现搬箱问题的best fit策略
//my.h //定义两个数据类型,货物Goods,箱子Box #include <vector> #include <cstddef> #include <iostre ...
- 实现android支持多线程断点续传下载器功能
多线程断点下载流程图: 多线程断点续传下载原理介绍: 在下载的时候多个线程并发可以占用服务器端更多资源,从而加快下载速度手机端下载数据时难免会出现无信号断线.电量不足等情况,所以需要断点续传功能根据下 ...