位置: 编程技术 - 正文

Unity3D开发(一):NGUI之UIRoot屏幕分辨率自适应(unity3d开发流程)

编辑:rootadmin

推荐整理分享Unity3D开发(一):NGUI之UIRoot屏幕分辨率自适应(unity3d开发流程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity3d游戏开发标准教程,unity3d应用开发,unity开发3a,unity3d游戏开发基础教程,unity3d应用开发,unity3d开发一般要学多久,unity3d应用开发,unity3d开发一般要学多久,内容如对您有帮助,希望把文章链接给更多的朋友!

NGUI在Unity3D游戏开发中非常常用,而NGUI对于每一个UI场景,都是以一个UIRoot为UI游戏对象树的根的,那么这个UIRoot是起什么作用的呢?

先简单看一下UIRoot中的基本属性

UIRoot游戏对象的属性只有4个,分别是缩放规则,手动高度,最小高度和最大高度

而正是这4个属性,将影响整个UI场景中整体的缩放比例,当设置好这4个属性之后,UIRoot游戏对象的相对缩放&#;(LocalScale)将会生成并且不能被直接修改(NGUI中很多属性都是不能直接被修改的,这种控制是在UIRoot脚本中,通过设置[ExecuteInEditMode]做到的,其相对缩放&#;是根据UIRoot的4个属性计算出来的),那么这4个属性分别是什么含义呢?

(吐槽一下,也许这里的用户体验并不足够友好,因为Manual Height和Minimum Height, Maximum Height并不会同时起作用,如果能做到在选择Scaling Style时动态的切换,使用者也许能更清楚它们之间的关系)

1.Scaling Style (缩放类型)

这是一个简单的枚举变量,包括三个枚举&#;

[csharp] view plaincopyprint?public enum Scaling { PixelPerfect, FixedSize, FixedSizeOnMobiles, } (FixedSize和FixedSizeOnMobiles类&#;,并且后者只添加了对ios和android平台的判断,所以前者可以替代后者使用)

这里只讨论PixelPerfect和FixedSize的区别,两者都是针对于所有在此UIRoot之下的UI组件而言的,也可以认为是在此UIRoot下,整个游戏屏幕的尺寸的缩放类型!

2.Manual Height和Minimum Height, Maximum Height (手动高度和最小高度,最大高度)

Manual Height和Minimum Height, Maximum Height不会同时对此UIRoot起作用,当选择Scaling Style为PixelPerfect时,我们需要设置Minimum Height, Maximum Height;而当Scaling Style为FixedSize或FixedSizeOnMobiles时,我们需要设置Manual Height。(这就是我前面吐槽的原因)

3.使用(1)PexelPerfect和Minimum Height, Maximum Height

这个组合主要用于我们期望所有的UI纹理都“尽量”不进行缩放,所谓“尽量”的程度,则是取决于Minimum Height和Maximum Height,Minimum Height表示当设备分别率小于此设置&#;时,根据此设置&#;对UIRoot进行缩放;Maximum Height表示当设备分辨率大于此设置&#;时,根据此设置&#;对UIRoot进行缩放(UIRoot是UI游戏对象树的根,修改UIRoot的缩放,则会影响整棵UI树的缩放)

(2)FixedSize和Manul Height

这个组合主要用于我们期望所有的UI纹理都进行“合适”的缩放,所谓“合适”缩放的原则,则是根据Manual Height设置&#;,当设备分辨率的高度&#;不同于此设置&#;时,则根据其比例(即Manual Height / Screen Height)对整棵UI树的进行“等比”缩放(宽度的缩放比也是此比例&#;),这样,我们就可以做一套资源,在不同尺寸的分辨率最好的“不变形”的适配了

(3)交集

前面两组在什么情况下等同呢?

Manual Height == Minimum Height == Maximum Height

推导过程,呵呵~~

具体可参考UIRoot中activeHeight属性和GetPixelSizeAdjustment的计算过程

4.这也许并不够

基于以上推到,当我们以x为标准分辨率做一套UI资源(也就是选择FixedSize并且Manual Height=),&#;乎可以满足百分之以上的机型了,而为什么是x呢?

既然我们已经容忍在除x之外的其他设备上进行等比缩放了,那为什么不是x呢?

Unity3D开发(一):NGUI之UIRoot屏幕分辨率自适应(unity3d开发流程)

计算一下x的宽高比=1.,x的宽高比=1.5,这就是移动设备的分辨率比例的全部了吗?

当然不是,iphone5的比例就要大于1.5,还有各种奇葩的android设备呢,比如夏新的n就是x,宽高比=1.

那为什么以x为标准呢?

因为1.的宽高比,当我们的x的资源到x的设备上时会有什么现象?

根据Manual Height / Screen Height的比例可知,我们需要缩放 / = 1.2倍,假设是一张x的纹理,高度缩放1.2倍变为了,宽度也要相应缩放1.2倍变为(保证等比缩放不变形),也就是说x的资源放到x上反而两边有了黑边,这是我们可以容忍的,我们可以做一个很大的背景或者拉伸,保证UI组件不变形即可,很多游戏都是这么做的,比如植物大战僵尸在iphone5和ipad上看到的背景视野并不一样大!

当放到夏新的机器上呢?

我们需要缩放 / = 1.4倍,宽度 / 1.4 = ,这是可以的,只是看起来更怪一些,因为两边的黑边相对比例更大了( - =的黑边区域)

而我表示android机器的分辨率奇葩到只有想不到,没有做不到的程度,也许宽高比1.7并不是终点,当遇到1.8之后,黑边的相对比例会更大。。。

5.问题又来了

假设我们的游戏类型更适合iphone手机玩,不太适合ipad,所以我希望能以x为标准做一套资源,可以吗?

我只能说不太可以,因为你要在设计UI组件的大小做限制了,为什么需要做限制?

假设我有一张纹理是x大小的,在iphone上铺满整屏,根据我们的设置(FixedSize和Manual Height=),拿到x的分辨率上,高度 / = 0.,为了保证等比缩放,宽度 / 0. = ,不幸的事情发生了, > ,这个UI组件宽度超过了屏幕的宽度,被裁剪了。。。这是我们不能容忍的,或许你可以说我们尽量不做这种尺寸的UI,OK,你可以对UI尺寸加限制,但是当面对android那些奇葩的分辨率的时候,你会发现限制越来越大,这也许会让美术和策划疯掉!

6.解决方案

当我们花上一些时间去观察现在移动设备的分辨率时,虽然奇葩很多,但是还是有一些规律的,规律的在于宽高比而不在于具体尺寸,大体上划分一下宽高比在1.3,1.5,1.7的范围上的居多(基本是全部吧!)即便是再有1.2,1.8的比例也无妨。。。

NGUI为我们提供的方案只有以各种高度为衡量标准是不够的,我们应该加上一种以宽度为衡量标准的缩放类型

而对于UI资源的标准,我们选取x,宽高比为1.5

这样,当我们在兼容大于1.5的尺寸的时候,使用NGUI的现有方案;当我们在兼容小于1.5的尺寸的时候,使用以宽度为衡量标准

也就是说有一个类&#;Manual Width的属性,当小于1.5时,我们使用Manual Width / Screen Width得出整棵UI树的缩放比例!

这样做的好处是“黑边”区域不会太大,并且不需要对UI组件的大小做限制!

PS: 我表示以上言论对于“可以为适配分辨率做无数套图的资源土豪”而言可能是我想多了!

转自:

也论UIGrid 之前网上有篇文章,是讲创建高效的超大Scrollview,其思路就是将没在clip范围内的item进行setactive(false),反之则setactive(true),这样item很多也可以流畅的滑

Unity3D之NGUI入坑<二> 乱斗西游效果图如下:首先对这个界面分析了一下,有两种:猜测1.可能是用2D模拟实现的伪3D,只是通过大小,角度的变换实现了3D旋转的效果。猜测2.

Unity3D 相机控制 ///summary///CreatedbyHongYouwei///Createdin.1////summaryusingUnityEngine;usingSystem.Collections;publicclassCameraControl:MonoBehaviour{publicfloatdistanceAway=3.0f;//相机和人的水平距离p

标签: unity3d开发流程

本文链接地址:https://www.jiuchutong.com/biancheng/378862.html 转载请保留说明!

上一篇:Unity3D学习日志第一天(unity3d课程)

下一篇:也论UIGrid(也论主板的扩展性)

  • 委托加工物资的成本包括哪些内容
  • 借款利息收入是企业收入吗
  • 外贸 代理
  • 其他权益工具账务处理内容
  • 企业所得税缴纳时计提可以吗
  • 计提业务提成怎么做账
  • 未填开发票怎么作废
  • 材料采购暂估入账
  • 支付境外技术服务费代扣代缴所得税账务处理
  • 重新建账 和之前数据差的多
  • 违约金收入是否征税
  • 私营公司会计资取公司资金
  • 盈余公积补亏账务处理分录
  • 进口原材料关税税率是多少
  • 没有抵扣的发票怎么入账
  • 受托代销商品手续费会计分录
  • 车间报销费用的会计分录
  • 资产负债表年初余额是不是一直不变
  • 小规模季度销售超过30万怎么纳税
  • 脚手架出租生意
  • 企业股权转让有什么好处
  • 印花税滞纳金计入什么科目
  • 免租要怎么交税
  • 小规模纳税申报表下载
  • 预付账款需要发票吗
  • 哪些研发费用可以资本化
  • 基金的业绩是什么
  • bios术语
  • linux的sh
  • win10工作站版和企业版的区别
  • 资源管理器被关闭了怎么恢复
  • php 混淆
  • PHP:xml_get_current_byte_index()的用法_XML解析器函数
  • 赡养人 被赡养人
  • win10错误代码0xc0000001
  • 默认网关不可用win7
  • 职工教育经费超过扣除限额的时候调增还是调减
  • g++.exe error
  • php如何防止xss攻击
  • 销售免税农产品进项税可以抵扣吗
  • 宝塔面板使用教程
  • vue中的组件
  • 销售不同商品的会计分录
  • 预缴增值税所需成本
  • SqlServer如何通过SQL语句获取处理器(CPU)、内存(Memory)、磁盘(Disk)以及操作系统相关信息
  • 高新技术企业三季度申报所得税研发费加计怎么扣除
  • 分派现金股利处理
  • 企业所得税固定资产的计税基础
  • 季度缴纳企业所得税可以弥补亏损吗
  • 企业营业外收入有哪些
  • 固定资产特点有
  • 消费税是在哪个环节缴纳
  • 金税三期个税申报
  • 库存商品什么时候确认收入
  • 房屋租赁怎么干
  • 2017年6月,小张买了一台笔记本电脑,其主要硬件参数
  • 税收优惠退回的税金怎么入账
  • 销售成本的结转
  • 公司购入的房子卖了,如何交增值税
  • 销售费用和管理费用的税前扣除
  • 自产委托加工的货物用于非增值税应税项目
  • 财务费用范畴
  • 税控开具发票
  • 进入四大会计师事务所怎么样
  • 删除windows用户密码
  • UPnPFramework.exe - UPnPFramework进程介绍
  • 如何设置windows启动密码
  • win8.1怎么样?
  • Win7系统启动qq无法访问个人文件怎么解决
  • ztree拖动
  • jQuery on绑定的事件
  • jquery校验form表单
  • 用js改变css样式
  • python网络爬虫项目步骤
  • 手滑式手机是什么意思
  • python的读写文件
  • 社保扣缴客户端密码
  • 税控系统减免税报表里
  • epc项目不接受联合体投标违规吗
  • 福建省顺昌县人口有多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设