2d窗口分辨率 unity3d_unity3d 2d项目设置分辨率 - CSDN
  • 此文将阐述一种简单有效的Unity2D分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有使用第三方2D插件,如Uni2D,2D toolkit等开发的游戏,NGUI插件不受这个方案影响,可以完美和此方案配合使用。...

    此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有使用第三方2D插件,如Uni2D,2D toolkit等开发的游戏,NGUI插件不受这个方案影响,可以完美和此方案配合使用。

    ---------------------------------------正式开始的分割线-----------------------------------------

    先说明一些基本的概念:

    1.屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕高度

    2.Unity2D中摄像机镜头的尺寸决定了我们实际看到游戏内容的多少,在编辑器中我们可以通过调整摄像机Camera的orthographicSize属性值来调整摄像机的大小。如下图所示,当摄像机orthographicSize属性值等于当前屏幕高度单位的一半时,摄像机大小正好与屏幕大小相等。注意这里提到的是屏幕单位高度的一半,这个数值是经过像素到单位比即Pixels To Units换算的,Unity2D中这个比例的默认值是100,即100像素等于1单位。如果我们的游戏屏幕有640像素高,那么实际换算成单位高度则是6.4个单位,当我们摄像机的orthographicSize值是3.2时,摄像机大小刚好与屏幕大小相等。

    (可以通过此选项调整每张图片的像素单位比)

    看到这里你可能会发出疑问,Unity编辑器中只能直接调整摄像机的高度,那摄像机的宽度是如何确定的呢?答案就是我们最前面提到的屏幕宽高比。Unity会根据当前屏幕实际的宽高比和摄像机的orthographicSize值来计算出摄像机的宽度值,即:

    摄像机实际宽度 = 摄像机orthographicSize * 2 * 屏幕宽高比

    也即是

    摄像机实际宽度 = 摄像机高度 * 屏幕宽高比

    我举个例子说明一下,iPhone4的屏幕像素为640*960,宽高比为2:3,假设Pixels To Units值为100,那么如果设摄像机高度size值为4.8,那么摄像机实际宽度按照公式算出6.4,刚好就是屏幕的单位宽度。

    ---------------------------------------渐入佳境的分割线------------------------------------------

    好了,讲了以上的东西我们就知道为何我们的游戏会在不同的屏幕分辨率的设备上有不同的显示了。

    不同的屏幕分辨率,相同的摄像机orthographicSize值会产生不同的摄像机尺寸,不同的摄像机尺寸导致实际显示的游戏内容的不同。

    接下来我再提出两个概念,为了方便后文的说明:

    1.游戏有效内容,指游戏中一定需要完整显示在屏幕上的内容;

    2.游戏实际内容,指全部的游戏内容,包括有效内容主要是为了适配多分辨率的或其他不重要的目的而增加的内容

    我们的开发一般都会选择在一个固定的设计分辨率上进行,比如常用的iOS竖屏游戏设计分辨率640*960,我们就以这个设计分辨率为例。通常情况下,设计分辨率尺寸就是我们游戏有效内容的尺寸。

    采用这个分辨率,我们将摄像机的orthographicSize值设为4.8。假设我们不做任何多分辨率的适配处理,使我们游戏的有效内容区域和实际内容区域尺寸相同,都为6.4*9.6(已经做过像素到单位的换算,下同),让这个游戏运行在一款iPhone5设备上(即屏幕是640*1136)时,我们来看看会发生什么情况。

    为了更好的说明,我们先设变量:

    游戏有效内容尺寸为gameValidContentSize
    
    游戏实际内容尺寸为gameContentSize
    
    摄像机尺寸为cameraSize
    
    实际屏幕尺寸为screenSize
    
    屏幕宽高比为aspectRatio
    接着开始计算:
    orthographicSize = 4.8
    
    aspectRatio = 640/1136 = 9/16
    
    cameraSize.height = 摄像机orthographicSize * 2 = 4.8 * 2 = 9.6
    
    cameraSize.width = cameraSize.height * aspectRatio = 9.6 * 9 /16 = 5.4

    根据计算,我们得到实际摄像机的宽度为5.4,而游戏有效内容宽度是6.4,摄像机宽度小于游戏有效内容宽度,即cameraSize.width < gameValidContentSize.width = gameContentSize.width,这时游戏内容被摄像机裁减!

    以下以我做的一个小游戏为例子,我们可以更清楚的看到这个问题:

    第一张是在640*960的设备上运行时的效果,一切正常。第二张是在640*1136的设备上运行的效果,可以看到游戏内容被剪得很明显,右上角的按钮都快没有了。

    如何解决这个问题呢?最直接的想法是,如果我们的游戏在640*1136屏幕的设备上,摄像机宽度依然保持是6.4,那肯定就不会剪切了。为了做到这一点,我们必须在运行时来调整camera的orthographicSize值。方法很简单,还是套用上面讲到的公式:

    aspectRatio = 9/16
    
    为了使cameraSize.width = 6.4,我们计算
    
    cameraSize.height = cameraSize.width/aspectRatio = 6.4 * 16 / 9 (因为除不尽,后面就不继续写了)
    
    camera的orthographicSize = cameraSize.height / 2 约=5.69

    我们再一次运行游戏,动态修改camera的orthographicSize值为5.69,可以看到:

    宽的方面是完全显示出来了,可是上下都出现了的“黑边”(这里是蓝边,呵呵)。这是因为摄像机的高度已经大于了游戏内容的高度,所以自然会出现没有内容的区域,即“黑边”。为了解决这个问题,我们就需要给游戏增加上下边,直接上和黑边同尺寸的图是一种方法,但是还有一种更简易的办法,直接将游戏背景放大一些,以盖住黑边!这个游戏比较简单,我们就用这个简易的方法,我们将游戏背景放大到1.3倍,如下图:

    OK!现在我们的游戏看起来已经很正常了,已经完成了iPhone5的适配。

    注意到这个时候我们游戏的有效内容区域已经不等于实际内容区域了,我们放大了背景图片,实际上等于为游戏增加了一层外边缘。如图,在白框内部的就是有效内容区域,在白框外部的就是无效内容区域。整体实际游戏内容区域已经大于了有效内容区域。

     

    -----------------------------------------最终结论的分割线------------------------------------------

    根据以上解决分辨率问题的过程,我们可以得出,实际的分辨率适配问题与三个尺寸相关,他们分别是:摄像机尺寸,游戏内容尺寸(包括有效内容尺寸和无效内容尺寸)和实际屏幕尺寸。为了能够显示我们需要的有效内容,并且不显示黑边,我们必须要保证:

    摄像机的尺寸既必须要小于或等于游戏实际内容尺寸,又必须要大于或等于游戏有效内容尺寸。如下图,蓝色的线框表示摄像机的尺寸,我们即只要保证蓝色框在白框外,在图内就能保证游戏内容的显示正确。

    只要能够确保以上这一点,那么我们的游戏就能够应对几乎所有的屏幕分辨率。

    按照这种方案,说到底,解决屏幕分辨率适配的问题,其实就是解决如何让游戏摄像机尺寸限定在给定范围的问题。

    总结起来,步骤就是:首先,需要确定游戏的有效内容区域和实际内容区域;然后,游戏启动时,根据实际的屏幕宽高比将你的摄像机尺寸调整到合适你游戏的大小即可。

    -----------------------------------------最后的分割线------------------------------------------

    最近写了很多小游戏,用这个方案一劳永逸地解决了多分辨率适配特别是Android设备适配的问题。这种方法的好处一方面是只要理解了,操作起来很简单,另外一方面不同于缩放游戏内容的方案,这种方法保证了游戏内容的原汁原味。当然,缺点可能也是有的,暂时能想到的可能是对于一些需要依赖摄像机做效果或者操作的游戏,改变摄像机的大小可能会造成一些影响。目前这方面经验还比较少,希望以后可以不断地完善这个方案。

    最后上一下自己写的一段简单的调整orthographicSize值的脚本,用于保证camera的width值不会小于游戏有效内容宽度,有效内容尺寸为6.4*9.6。这个脚本只要附加在游戏的Camera上就可以生效。

    using UnityEngine;
    using System.Collections;
    
    public class GameCamera : MonoBehaviour {
    
        float devHeight = 9.6f;
        float devWidth = 6.4f;
    
        // Use this for initialization
        void Start () {
        
            float screenHeight = Screen.height;
    
            Debug.Log ("screenHeight = " + screenHeight);
    
            //this.GetComponent<Camera>().orthographicSize = screenHeight / 200.0f;
    
            float orthographicSize = this.GetComponent<Camera>().orthographicSize;
    
            float aspectRatio = Screen.width * 1.0f / Screen.height;
    
            float cameraWidth = orthographicSize * 2 * aspectRatio;
    
            Debug.Log ("cameraWidth = " + cameraWidth);
    
            if (cameraWidth < devWidth)
            {
                orthographicSize = devWidth / (2 * aspectRatio);
                Debug.Log ("new orthographicSize = " + orthographicSize);
                this.GetComponent<Camera>().orthographicSize = orthographicSize;
            }
    
        }
        
        // Update is called once per frame
        void Update () {
        
        }
    }

    原本地址:http://www.cnblogs.com/flyFreeZn/p/4073655.html


    展开全文
  • 好一段时间没写博客了,新年来第一天正式上班,新的一年里要求自己有新的变化,坚持每天不断的学习和提高,改变过去的晚睡晚期的不好习惯,昨天周末,利用一天休息时间去打打篮球,发现过去一百天里每天熬夜到深夜,...

    好一段时间没写博客了,新年来第一天正式上班,新的一年里要求自己有新的变化,坚持每天不断的学习和提高,改变过去的晚睡晚期的不好习惯,昨天周末,利用一天休息时间去打打篮球,发现过去三个月里每天熬夜到深夜,发现体质明显下降,今天起来发现浑身酸痛,得调整一下作息和生活,坚持锻炼,坚持早睡早起,早晨起来每天都坚持看一小时的书,如果每天都坚持在某个时间段固定去学一样东西,时间一长,一周或者一个月甚至一年下来你会惊讶的发现原来你自己学了那么多,贵在坚持,每个人都知道,但真真能做到的人比较少,如果能做到这点,就算将来即便成不了大牛那也是一直走在成为大牛做过的路上,也会受益匪浅,我写上这个也是自我勉励,另一方面也是大家共勉,生活上,学习上的点点滴滴总是那么神奇,过去未知答案时所走出的道路在未来的这天,发觉将其串联起来,现在所走的路不知道是何路,但必是将来通向未来之路,因不满足于现状,觉得可以做的更好,所以,通过不断的努力,去改变现状,一直不想当一个井底之蛙,IT技术上更是如此,如果仅仅是安于现状,那永远是跟不上时代的步伐,只会不进则退。不知何时开始,我有了自己的追求,有一股劲儿,一直想做的更好,学的更多,相信有一天能成为一个参天大树。假如抛开一切的负担,你最在乎的是什么?或者说你最想做的事是什么?燃气你的激情,为理想而奋斗。实现理想的过程是艰辛的,但如果一旦实现,发现时甜蜜的,理想or梦想,但他们不是梦,并不是遥不可及,用燃烧不进的激情,追随她~ 不要让自己迷失方向,安于现状,不要冷漠了任何事物,她总会有她神奇的一面,不断的挖掘,相信你都会有人家体会不到的收获,好奇心,永远保持一颗好奇心!以上是算给自己新年鼓鼓气,接下来还是要落地,写写今天的收获!

    问题说明:

    年前做的web和pc的一个项目,背景当时是用的一个plane然后上面放的是一个带有背景图片的一个材质球,这个通过改变plane的z轴属性是能控制它的显示在3D模型之后,但貌似自适应有点难以控制,当时是用过在界面上手动改变的Scale属性来让背景铺满整个窗口,但无法自适应所有分辨率大小的窗口,然后我就想通过动态代码在plane上添加一个Textrue2D的一个图片,但发现无论怎样拖动模型的z轴属性还是不能让模型显示在背景之前。后来经过一段摸索,搞定,这将摸索过程写下来。

    在这里我要提一下MeshRenderer,即网格渲染器,如果我们不勾选这个网格渲染器,在Game场景中是看不到plane的样子的,即网格渲染器将材质渲染出来,材质中包含Texture属性,我们可以选择自己的贴图,也可以选择颜色,网格渲染器就可以将材质中的这些给渲染出来,让我们看到,原来我就是通过这个方法来实现的背景图,下面是另一种添加GUITexture的方法来实现,利用到了多个摄像机共同合作达到效果!

    解决步骤:

    1.添加一个摄像机,命名为BackgroundCamera,然后在Layer添加一个background层。并且将plane拖放到改相机节点下。然后将BackgroundCamera和Plane都置于background层,修改ClearFlags未Depthonly深度渲染,并且设置CullingMask为只看到background层,还有设置Depth为-1,说明背景层是最深,其他model所在的相机的Depth是0,NGUI的是1,这里层次关系就是NGUI在最前面,model层其次,然后是背景层,这样确保3D模型在背景的前面!


    2.同样的操作,将MainCamera设置一下,注意的就是,将MainCamera的CullingMask不能包含background层,也就是让它看不到背景层,不然还是会出现背景遮挡住模型的情况。


    3.在plane上添加一个脚本,用于动态在plane上加载贴图
    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    
    public class AddBackground : MonoBehaviour
    {
        public Texture2D mtexture;
    
        void Awake()
        {
    //        Texture2D mtxture = new Texture2D(Screen.width, Screen.height);
    //        renderer.material.mainTexture = mtxture;
    //        mtxture.Apply();
            
            gameObject.AddComponent<GUITexture>();
        }
    
        // Use this for initialization
        void Start()
        {
            guiTexture.texture = mtexture;
            transform.localScale = new Vector3(0, 0, 0);
            transform.localPosition = new Vector3(0, 0, 25);
            guiTexture.pixelInset = new Rect(65, 0, Screen.width, Screen.height);
        }
    }
    上面Start方法中设置position的z轴属性是原来尝试的,想通过z轴来进行深度的修改后来发现行不通,还是层的关系影响渲染的深度。

    4.效果图


    ==================== 迂者 丁小未 CSDN博客专栏=================

    MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

    Unity QQ群:375151422         cocos2dx QQ群:280818155

    ====================== 相互学习,共同进步 ===================


    展开全文
  • 在本文,笔者将教大家如何...这个窗口分辨率配置窗口 1.如何取消配置页面: 照图索骥,一步步的就能将上面的配置窗口取消。   照图索骥 Tips: 设置路径:File ☞ Build Settings ☞Pc and Mac Stand...

    https://www.jianshu.com/p/542f5cbb02e2

    在本文,笔者将教大家如何取消启动时的设置窗口(如下图所示),并将游戏窗口化运行

    这个窗口叫分辨率配置窗口

    1.如何取消配置页面:

    照图索骥,一步步的就能将上面的配置窗口取消。

     

    照图索骥

    Tips:

    1. 设置路径:File ☞ Build Settings ☞Pc and Mac Standalone ☞ Player Settings ☞Resolution and Presentation ☞Display Resolution Dialog 选项改为 Disabled

    2. 游戏启动时单击键盘上的alt键能够再次显示这个配置界面。

    2.如何窗口化:

    经过上面的步骤一路走来,配置窗口是不见了,但是依旧没有窗口化运行啊,而且我设置了这2个位置,理论上应就能窗口化运行了:

    理论上取消勾选并设置自己的分辨率就能窗口化运行

    然而实测上述设置并不能实现窗口化运行,别灰心,我们离成功相当近了!
    其实只需要在任意一个脚本里面的Start方法里面添加如下的一句代码就能解决问题;

            Screen.fullScreen = false;
    

    3.效果展示:

    看看就好不喜勿喷哈

    4.扩展:

    如何窗口化显示Unity打包应用,且不显示标题栏:
    为EXE创建快捷方式,对快捷方式右键打卡属性,目标(T)字符串最后追加“ -popupwindow”

    5.推荐博文:

    1. Unity3d发布成exe项目后的设置(全屏自适应屏幕大小)
    2. [Unity3d]Player Settings导出设置](http://blog.csdn.net/highning0007/article/details/37991321)
    3. Unity设置发布程序运行时候位置以及窗体大小

    这里有个DOMO是调用WindowsAPI实现的窗口最大化最小化,拖拽的,附源码下载(原作者不知道是谁,博客也没找到):

    链接:https://pan.baidu.com/s/1kVP2DKj 密码:h2g2



    作者:雨落随风
    链接:https://www.jianshu.com/p/542f5cbb02e2
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    展开全文
  • Unity3d不久之前正式发布了Unity3d 2017.1, 这个版本的发布也宣告了Unity3d正式告别了5.x时代,并且开始已年份直接命名,开启了新的纪元。那么Unity3d 2017相较上一版本到底有哪些改进呢?这介绍这些改进之前先放出...

    Unity3d不久之前正式发布了Unity3d 2017.1, 这个版本的发布也宣告了Unity3d正式告别了5.x时代,并且开始已年份直接命名,开启了新的纪元。那么Unity3d 2017相较上一版本到底有哪些改进呢?

    这介绍这些改进之前先放出下载地址:Unity 2017.1
    有趣的是通过Unity产品蓝图我们可以发现Unity 2017.2 beta已经提供下载测试并且Unity 2017.3也已经在制作中了。
    这里写图片描述
    Unity 2017.2 beta下载地址:Unity 2017.2 beta

    以下关于Unity2017.1的介绍内容来自Unity官方中文社区,原帖地址:[官方] Unity 2017.1正式版发布

    Unity 2017.1中包含大量新功能与改进。主要内容如下:

    • 艺术家和设计师们:全新的叙事和游戏视频创作工具
      Unity 2017.1为艺术家和设计师们提供了全新的工具,使用Timeline,Cinemachine和Post-processing工具,可以创造令人惊叹的影视内容,合成精美相机镜头,描绘更好的视觉故事。
      Timeline是一款强大的可视化新工具,可用于创建影视内容,例如过场动画、预告片、游戏试玩视频等等。
      Cinemachine是一个高级相机系统,您可以像电影导演一样,在Unity中合成镜头,无需编写任何代码,引领您进入程序化摄影时代。
      Post-processing可以很方便地为场景应用各种逼真滤镜,使用电影工业级技术、控件和颜色空间格式来创造高质量视觉效果,让画面更生动、更逼真,助您描绘更好的视觉故事。
    • 效率:协作、实时操作分析、工具
      我们发布了Unity Teams,它由一系列简化创作者协作流程的功能和解决方案组成,包含Collaborate多人协作(现已发布)和Cloud Build云构建。
      实时操作分析系统引入了新的、更简单的方法,帮助您理解用户,并在不需要重新部署的情况下,对游戏做出动态的反应和调整。
      最重要的是,Unity 2017.1对编辑器进行了大量更新,包括对FBX导入、动画工作流程、2D功能、Asset Bundle工作流和Visual Studio集成的改进。
    • 图形与平台:全面改进
      Unity 2017.1对粒子系统和Progressive Lightmapper进行了大量改进,提供了更多选择来实现您的艺术愿景并控制性能。不同平台可采用不同的渲染品质,例如iOS平台上的Deferred Rendering,和PC上的NVIDIA VRWorks。
      这些都只是Unity 2017.1的亮点概念,下面将介绍完整丰富的细节内容!

    Unity 2017.1新看点

    艺术家叙事工具: Timeline和Cinemachine介绍

    设计师、艺术家或动画师们可以使用新的集成叙事工具,自己制作影视内容和游戏视频,而不用依赖程序员。这意味着开发效率更高,而节约沟通与排队成本。

    Timeline是一款强大的可视化新工具,可用于创建影视内容(例如短片Adam)。通过编排游戏对象、动画、声音和场景,来创建过场动画、游戏视频等等。有了Timeline,您可以专注于叙事和电影艺术创作,而非编码。

    Timeline基于轨道的序列工具,使用“拖放”操作来编排动画、声音、事件、视频等元素,以更快地创建漂亮的过场动画和程序化内容。Timeline有许多功能,例如动画、音频、自动关键帧,以及可以锁定或静音特定轨道的多轨道界面。Timeline可通过Playable API进行扩展,支持创建自定义轨道,来驱动游戏中的任意系统。您可以制作一个Timeline剪辑来表示几乎所有内容——并且可以重复播放、缩放和混合这些剪辑,所有这些都可在Timeline中实现。
    这里写图片描述

    Cinemachine 是多年游戏和电影摄像机的构建经验凝聚而成的结晶。现在,它将业界领先的摄像操作置于所有人手中,引领了程序化摄影的时代。

    这是一套智能摄像机,可以动态的根据场景组成和交互,在最佳时间拍摄最佳镜头。使您摆脱无尽的手工动画、摄像机编程以及修订的过程。

    Cinemachine可以在Asset Store资源商店中下载,现在就添加到您的项目中。

    从第一人称射击游戏到第三人称动作冒险,您可以用Cinemachine彻底改变游戏内摄像机。很容易地:

    • 像电影导演那样,使用高级摄像机工具及真实的摄像机设置,来控制视频序列。
    • 合成镜头,把重点放在艺术方向上,而非实现细节。给Cinemachine智能摄像机一个简单的指示,比如跟随人物的头部,如果动画发生变化,镜头会自动更新并继续正常工作。
      这里写图片描述

      在Unity 2017.1中,我们为Cinemachine增加了很多新功能,比如:

    • 多个目标对象:以多个对象为目标,并设置它们的权重。它基于任意数量的对象创建一个逻辑组,根据其成员的位置来定位自己。在跟踪一组对象时,可以将其用作LookAt和Follow方法的目标。对2D场景也非常适用。
    • 动态取景多个对象:该功能将基于对象的位置自动取景一组目标。如果对象散开,Cinemachine将根据您创建的一套规则调整FOV或推拉(或两者同时进行)
    • 全新开放API:轻松定制Cinemachine配置,获得项目需要的摄像机行为。
    • 推拉轨道:创造出像电影一样的推拉镜头,让摄像机在游戏世界里平滑移动。适合于电影序列,或当您希望摄像机沿着一组轨道跟踪拍摄对象时。
    • 安全镜头:安全镜头会根据镜头优先级与质量,动态选择最佳的摄像机。有东西进了取景框,破坏了镜头?没问题,Cinemachine会切换到下一个最佳摄像机。尤其适用于回放或任何一个可变场景的电影序列。

    Timeline和Cinemachine结合使用,您可以将叙事带入更高的层次。使用后处理栈来进一步创建特效,烘托场景氛围和戏剧效果。
    这里写图片描述

    改进Post-processing栈(测试)

    Post-processing将全屏滤镜和特效应用于摄像机的图像缓冲区,然后再将其显示在屏幕上。您可以使用图像后处理特效来模拟物理摄像机和电影效果。

    最新版的Post-processing栈测试版可以在此下载。最终版预计将于今年夏季发布。(注意:上一个稳定版本可以在Asset Store资源商店中下载)

    改进后的后处理栈将一组完整的图像效果整合到单个后期处理流程中,并带有一系列高质量的摄像机效果:

    • Screen-space anti-aliasing
    • Auto Exposure
    • Motion Blur
    • Bokeh Depth of Field
    • Bloom
    • Color Grading
    • Chromatic Aberration
    • Film Grain
    • Vignette

    您可以将多个特效组合到单个Pass中,使用基于Asset的预设配置系统管理特效也非常轻松。

    颜色分级效果是一种支持Academy Color Encoding System (ACES)的全HDR颜色管线,低端平台可以使用LDR管线。该栈有两个屏幕空间的光照特效,即环境光遮蔽和屏幕空间反射。

    这个新版本还提供了一个基于体积的混合特性,您可以在场景中定义区域(任何类型的网格),并在玩家进入区域时设置特定的氛围/外观。Unity会自动在体积之间进行混合,以实现流畅的外观转换。
    这里写图片描述

    Unity Collaborate多人协作已正式发布!现为Unity Teams一员

    Unity Collaborate多人协作已结束测试,与Cloud Build云构建一起成为Unity Teams的一部分,仅用一个解决方案一套功能,即可帮助您更快速地进行团队协作。Unity Teams将可免费使用至2017年10月。

    点击了解有关Unity Teams的更多内容。

    对于Collaborate多人协作,我们在Unity 2017.1中发布的首个发布版本优先处理了Beta用户提供的反馈。除了性能改进、稳定性和Bug修复之外,我们还增加了一组新功能:选择性推送、更佳的Asset浏览器集成和一个新的“In Progress”功能,用以标志团队成员在某个场景或预制件上有未发布的本地更改。
    这里写图片描述

    以下是我们为Collaborate多人协作添加的一些新功能:

    • In Progress标志
      为场景和预制件添加了In Progress标志,以指示团队中其他人已对某个场景或预制件做出了一些未发布的本地更改。这个特性有助于协作者协调对场景和预制件的更改。
      这里写图片描述
      这里写图片描述

    • 右键单击选择发布
      我们添加了右键单击操作,现在您可以在项目浏览器中直接发布、恢复、查看差异,解决文件冲突。这是一个主要的用户痛点源头,我们希望使Collaborate的行为与其他项目浏览器的行为更加一致。请注意,这种UX允许您选择性地发布已更改的Asset。之前的版本中,您必须发布所有更改。
      这里写图片描述

    • 浏览体验更佳
      在项目浏览器的“收藏”中添加了新的过滤器,包括“所有修改”、“所有被排除”和“所有冲突”,这样用户就可以看到他们所有修改过的文件、所有正在修改的文件、带有冲突的文件和忽略的文件。特别要留意的是“All in Progress(一切都在进行中)”,这让您可以实时看到Collaborate团队中的其他人正在处理哪些Asset(稍后将详细介绍)。
      这里写图片描述

    • 实时操作分析
      Unity 2017.1可以通过数据驱动的实时操作,随时获得丰富的分析数据。深入了解您的用户与您作品的互动情况,并实时做出相应的调整,迎合他们的习惯,无需重新部署新版本。在Unity 2017中,您可以更好地为用户提供更佳的游戏体验。
      通过Standard Events (目前是Beta版)可以进行更高效的洞察,它提供了一组精心设计的预定义事件,可揭示与您游戏相关的重要信息。使用新的Analytics Event Tracker,无需代码即可实现这些功能。
      这里写图片描述
      使用Remote Settings特性,可以即时更改游戏,无需重新部署,该特性已添加到Unity Analytics分析服务中。
      这里写图片描述

    • 2D改进
      在Unity 5.6中,我们为2D游戏开发者对工具和工作流程进行了重大改进。Unity 2017.1中引入了2D Sprite Atlas,这是一种新的Asset,将取代Sprite Packer。随着它的出现,新改进的工作流程可以在运行时更好地控制精灵的打包和使用。图集是Unity中2D工作流程的重要组成部分,而精灵图集不仅提供了更简单的图集创建和管理方式,还有相应的脚本API,可获得更多的控制和用途。
      这里写图片描述
      Sprite Masks用于在世界空间中隐藏或显示精灵或精灵组的一部分。精灵遮罩仅对拥有Sprite Renderer组件或粒子系统的对象生效。
      这里写图片描述
      在Unity 2017.1中,我们还为精灵编辑器添加了精灵物理形状。可以为精灵设置自定义的默认形状,以使用PolygonCollider2D生成碰撞器形状。

    • 动画改进
      我们对Animation窗口进行了全面修改,改进了关键帧的工作流程,使动画制作更方便和熟练,并支持与Animator状态机进行交互。Performance Recording是一个实验性功能。
      新的关键帧工作流程支持明确指定何时将哪帧变为关键帧,并在重新评估/预览动画时,将所有未修改且未关键帧化的属性值都丢弃。我们已经改变了在Animation窗口中编辑剪辑的默认行为(新的默认预览模式)、视觉反馈和全局关键帧操作热键。这些变化的目的是在Animation窗口之外为关键帧操作提供一个流畅的工作流程,同时预览动画剪辑无需处于自动关键帧或录制模式下。
      现在在编辑器中可以对状态机行为进行调试。
      我们还引入了GameObjectRecorder,这是一个新的实验性编辑器特性,它允许您记录GameObject和它子对象上的任何属性。这样就可以轻松地创建动画,将被记录的所有内容保存到一个动画剪辑中。欢迎访问论坛进行反馈。
      这里写图片描述

    • Playables已正式发布
      Playables API通过使用树状结构的PlayableGraph组织和评估数据来源,提供一种创建工具、特效或其他游戏机制的方法。PlayableGraph允许您混合和修改多个数据源,合成为单一输出后播放。
      Playables API支持动画、音频和脚本。Playables API还提供了通过脚本来与动画系统和音频系统进行交互的能力。
      Playable API是一个通用API,它最终将用于视频和其他系统。查看文档了解更多细节。

    • Ambisonic音频
      在Unity 2017.1中,我们增加了对环绕立体声音频剪辑的支持,这是全方位环绕音频技术,它(除了水平面外)还覆盖了听众上方和下方的声源。
      Ambisonics以多声道格式储存。它不是将每个通道都映射到一个特定的扬声器,而是以一种更通用的方式来表示声场。然后,根据聆听者的方向(即XR中用户的头部旋转),旋转声场。声场也可以被解码成一种与扬声器设置相匹配的格式。Ambisonics通常与360度视频结合使用,也可以用作音频天空盒,表现遥远的环境声音。
      我们还添加了Ambisonic解码器插件,而且现在也可以使用正开发中的API,在新的叙事工具Timeline中使用音频剪辑了。

    • 编辑器改进
      我们在UnityEditor.IMGUI.Controls中添加了一个新的ArcHandle类,它可以在场景视图中交互式地编辑弧线。还加入了名为SearchField的新IMGUI控件,它带有普通和工具栏用户界面风格,但也可以自行定制。
      这里写图片描述
      现在还支持使用JetBrains Rider作为外部脚本编辑器。
      其他改进还包括对所有播放器循环阶段添加分析器标签,改进Package Export加载状态,以及记录已连接玩家的日志信息,这些都将出现在编辑器控制台中,使调试更加轻松。

    • 改进了对Visual Studio的支持,包括Mac OS
      Unity安装程序现在可以选择在Windows上安装Visual Studio Community 2017(而非Visual Studio Community 2015)。安装速度显著提高也更轻量。
      Mac用户也别难过,现在可以使用Visual Studio了!微软发布了Mac版的Visual Studio和Tools for Unity。Visual Studio for Mac还提供了许多很酷的功能:一键调试,Unity消息的IntelliSense(完整Unity特定库代码),着色器代码高亮显示等等(点此查看详情)。

    • 场景与Asset Bundle改进
      我们对游戏中的场景和Asset Bundle进行了一些改进。更改底层架构使场景和Asset Bundle加载速度更快,从而使玩家体验更加流畅。我们还创建了一个工具,Asset Bundle浏览器——以帮助创建和优化Asset Bundle。

    • Asset Bundle浏览器
      Asset Bundle浏览器的Beta版与Unity 2017.1一同发布。该工具允许您在Unity项目中查看和编辑Asset Bundle的配置。它的目的是替换当前选择Asset的工作流,并在检视窗口中手动设置Asset Bundle的工作流程。现在您可以集中查看所有的Asset Bundle配置。通过使用上下文菜单和拖放功能,配置、修改和分析相关资源包。
      该工具将标记可能值得关注的警告,并提示将中断资源包创建的错误。从上层查看包集合,您可以更有效地组织Asset Bundle。在更低层查看单个Asset Bundle,您可以看到由于显式包含或依赖项的关系,哪些内容将会放入包中。
      更多细节请查阅文档
      这里写图片描述
      Asset Bundle浏览器可以从Asset Store资源商店下载。

    • 脚本运行时升级(实验性):畅享 C# 6和.NET 4.6
      在Unity 2017.1中,我们引入了实验性版本的脚本运行时内核,该内核已升级到Mono/.NET 4.6运行时。它包含了许多修复、性能改进,可以使用C# 6。我们相信它会提高游戏的整体性能。
      可以在Player Settings中启用.NET 4.6:
      这里写图片描述
      注意,更改该设置会在重启编辑器后生效,因为它会影响编辑器和播放器。对应的脚本API是PlayerSettings.scriptingRuntimeVersion属性。
      IL2CPP完全支持新的.NET 4.6 API,因此您仍可使用C#编写脚本,同时享有原生C++的性能优势。如果您发现任何问题,请访问论坛进行反馈。

    • 模型导入器改进
      从像Maya这样流行的数字内容创作(DCC)工具导入Asset的过程是首批重要的改进对象,这使得DCC工作流程变得更加轻松。最终提高了艺术家和设计师的生产力,减少了程序员的麻烦。
      现在Unity导入从Maya导出的FBX文件已支持Segment Scale Compensation,而且FBX SDK已升级至2016.1.2。
      在导入FBX文件时,我们还添加了计算加权法线的选项,如按面积、角度或二者皆有,以及硬边缘的固定法线生成。现在,可以从FBX文件中导入灯光和摄像机,Unity会自动在需要时为对象添加和配置摄像机和/或灯光组件。
      Unity现在可以使用“Import Visibility”属性从FBX文件中读取可见性属性。值和动画曲线将启用或禁用MeshRenderer组件:
      这里写图片描述

    • Progressive Lightmapper改进
      Unity 2017.1增加了Progressive Lightmapper中对烘焙LOD的支持。在烘焙LOD时,Enlighten和Progressive Lightmapper之间的主要区别在于,使用Progressive Lightmapper不必在LOD周围放置光照探针来获得反射光。在完全烘焙分辨率下,间接光照将为LOD提供更优质的烘焙光照贴图,您也可以避免为它们设置光照探针的繁琐过程。(Unity 5.6中也有此功能。)
      我们还在Progressive Lightmapper中增加了对双面材质的支持,通过添加新的材质设置,使光线与背面接触。启用后,在进行全局光照计算时几何体的两面都被包括在内。当从其他对象观察时,背面不会被认定为无效。背面渲染既不受该设置的控制,也不会在光照贴图中显示。背面使用与正面相同的自发光和漫反射设置反射光线。(该功能也可在Unity 5.6中使用)
      这里写图片描述

    • 实时阴影改进
      我们优化了在稳定模式下,级联定向光源阴影投射器的选择。这意味着生成阴影贴图时会产生更少的Draw Call。这增益是与场景和配置相关的。例如,在四个级联光的情况下,可以看到Draw Call数量显著下降。根据太阳/摄像机的方向,场景中可以减少50%的阴影投射器。下面是维京村庄的一个例子:
      下面的场景在Unity 5.6中有5718个阴影投射器。
      这里写图片描述
      在Unity 2017.1中,相同的场景,只有4807个阴影投射器。
      这里写图片描述
      Unity 2017.1还实现了实时阴影的Percentage Closer Filtering (PCF)。每个像素的深度值都是从当前像素周围的阴影贴图中取样,并所有的采样值进行比较。这使得光和影之间的线条更加平滑。您可以在下图中看到对比:
      这里写图片描述
      除了实时阴影改进,Shadowmask和Distance Shadowmask光照模式现在已成为Quality Setting中的参数,可以在运行时进行修改而无需任何成本。例如,可以在室内使用Shadowmask (实现柔和的阴影),并在相同关卡中的户外场景切换至distance Shadowmask。它也可以作为一个质量设置项。
      我们还添加了Custom Render纹理作为渲染纹理的扩展,可以很方便地用着色器来更新纹理。这有助于实现各种复杂的模拟,比如焦散光、雨滴涟漪模拟,墙面液体喷溅等等。它还提供了一个脚本和着色器框架,以便进行更复杂的配置,比如局部或多阶段更新,不同的更新频率等等。
      这里写图片描述
      有了新添加的LineUtility类和LineRenderer.Simplify函数,现在可以优化线条,用LineUtility创建由简单形状组成的简化版本。
      使用Metal/OpenGL ES3实现iOS上的Deferred Rendering
      我们为A8芯片和以后的iOS设备启用了一个使用Metal和OpenGL ES 3.0的延迟渲染路径。当使用延迟着色时,能够影响GameObject的灯光数量是没有限制的。所有的灯光都是按像素计算的,这意味着它们都能与法线贴图进行正确的交互等等。此外,所有的灯光都可以有剪影和阴影。

    • 粒子系统改进
      我们引入了精灵集成,粒子碰撞力(可以推动碰撞器),大量形状方面的改进,包括一个新的形状类型,噪音模块增加了新选项,以及其他一些较小的特性和增强。因为增加了新的控制和约束,例如速度与对齐,使得在2D中使用粒子更加轻松。可以使用粒子来获得比以往更多的特效和动画效果,包括光线的线条和尾迹。
      通过Texture Sheet Animation模块,我们在粒子系统中增加了对精灵使用的支持。这使粒子系统能更好地进行了图集处理和批处理,同时也在粒子系统中增加了大量与精灵相关的特性,例如不同大小的动画帧,以及每帧的轴心点。
      这里写图片描述
      这里写图片描述
      噪音模块提供了新的选项,可以更好地将噪音应用于粒子效果中。这个功能在Unity 5.5中第一次实现,噪音是被应用到粒子的位置属性。在2017.1中,我们可以将噪音应用到更多的地方:
      -位置
      -旋转
      -大小
      -使用Custom Vertex Streams的着色器(非常适合制作UV失真效果!)
      这里写图片描述
      在粒子系统形状模块的碰撞模式中,我们引入了一个新的甜甜圈粒子发射形状和编辑模式。模块内的Transform可以为粒子发射的形状应用自定义位置、旋转和缩放。
      其他的改进还包括将粒子与速度方向对齐的能力,以及允许在局部空间系统使用Emit over Distance。边缘粒子发射现在更加灵活,可以选择用来产生粒子的边缘厚度。
      粒子现在也可以使用碰撞模块对碰撞器进行施力。
      这里写图片描述

    • Windows Store现在改名为Universal Windows Platform
      Unity现在支持Windows商店的Universal Windows Platform(UWP)应用模式,支持为Xbox One、Windows 10、Windows Phone 10和HoloLens进行构建。
      请注意,对Windows混合现实PC设备的支持将在今年晚些时候发布。
      这里写图片描述
      我们增加了对UWP的多显示支持,现在Unity播放器二进制文件已做数字签名,增加了额外的一层安全性,可以防止对Unity运行时二进制文件进行篡改。
      最后,我们取消了对Windows 8.1和Windows Phone 8.1应用的支持,Unity 5.6是最后一个支持这两个平台的版本。

    • 索尼PS4的视频播放器
      我们在Unity 5.6中引入了一个全新的视频播放器,在Unity 2017.1中正式加入了对索尼PS4的支持,从而完成了对跨平台的支持。PS4的视频播放器使用索尼的AvPlayer库来加速h.264流的解码。解码h.264流(PS4的推荐格式)时,CPU开销非常低。可以同时对最多8个并发h.264流进行解码。它还支持对webm容器中的VP8格式流进行软件解码(更高的CPU开销)。最后,它支持多种视频渲染模式(直接渲染到摄像机的近/远平面,作为材质覆盖,或渲染纹理),音频流可以直接输出或发送到音频源进行混合。

    • 底层原生插件渲染扩展
      我们已经扩展了底层渲染插件API,并提供了一些很酷的新特性:
      -现在可以将用户数据发送到回调函数。
      -我们已经扩展了插件将接收回调的可能事件列表。
      -我们在着色器编译器进程中添加了钩子,可以在发送到编译器之前对着色器打补丁。支持创建自定义关键字所控制的自定义变体。
      -要想了解这些扩展的威力,请查看NVIDIA的VRWorks包,它是实现这一切的基石。

    • VR: NVIDIA VRWorks
      现在,在Unity 2017.1中,NVIDIA VRWorks通过以下特性,为虚拟现实提供了一种全新高度的视觉保真度、性能和响应能力:
      -Multi-Res Shading是一种用于VR的创新性渲染技术,它可以使图像的每一部分都能渲染在一个与镜头矫正图像像素密度相匹配的分辨率上。
      -Lens Matched Shading使用NVIDIA基于Pascal的GPU的新Simultaneous Multi-Projection架构,为像素着色提供潜在的性能改进。
      -Single Pass Stereo使用NVIDIA基于Pascal的GPU的新Simultaneous Multi-Projection架构,仅对几何体进行一次绘制,即可在双眼视图同时投射相同几何体。
      -VR SLI为虚拟现实应用程序提供更高的性能,其中两个GPU可以被指派给特定眼睛,极大地加速立体渲染。
      这里写图片描述
      为了更好地利用这些改进,应该在PC上使用GeForce 9系列或更高的GPU来进行回放。可以访问Asset Store资源商店下载NVIDIA VRWorks for Unity

    • 发布说明
      与往常一样,请查阅发布说明,以了解新特性、改进和修复的完整列表。

    以上内容来源Unity官方中文社区,原帖地址:http://forum.china.unity3d.com/thread-25171-1-1.html
    本文仅做转载和整理。

    by:蒋志杰

    展开全文
  • 雨松MOMO 2014年10月15日 于 雨松MOMO程序研究院 发表2、一种Unity2D分辨率屏幕适配方案3、Unity3D之如何创建正确的像素比在屏幕上Michael总结: 1)camera的宽长比永远和选用的渲染窗口(下图)的宽长比一致; ...
  • 图1:欢乐麻将微信小游戏版 大部分同学应该都处理过2D麻将桌的适配,从...但3D的适配则不是通过缩放来的,因为3D看到的画面,大部分是调整摄相机参数得来的。我们常见的设备有以下分辨率 2.16 : 1 iPhoneX系列...
  • Unity2D,说是说2D,其实是在3D的基础上进行的扩展,点击Scene窗口上的2D按钮就能让Scene的摄像机在2D3D之间切换。   个人推荐刚开始做的新手小团队就制作2D好了,我之前网上组织的一个项目就用的2D,工作量小,...
  • 正交摄像机与 Unity 3D 中普通摄像机相比没有透视效果(近大远小),所以正交相机一般可以用于 2D 游戏开发或者是 3D 游戏的 UI 开发。 在 2D 游戏开发中,有时会遇到根据屏幕的分辨率对游戏的背景进行自适应缩放...
  • Unity3D常见面试题

    2017-08-11 20:20:00
    Unity3D常见面试题
  • Unity3d编辑器的使用

    2019-06-24 19:24:43
    第一步:双击Unity3d,点击New 第二步:填写项目信息,注意:工程必须放在空文件夹下 第三步:点击创建 第四步:工程创建完毕 文件夹介绍: Assets:放项目所有资源的文件夹 Library:文件资源库 ...
  • 声明: 本博客文章翻译类别的均为个人业余时间翻译,版权所有。...    译者说明:  ... 公司目前的3D项目由OGRE 3D转为Unity3D了,由于整个3D项目组只有我对Unity3D比较熟,所以前期研究工作都是我来完成的
  • Unity 2D入门基础教程

    2016-09-20 13:42:56
    开始:创建你的项目场景视图的2D模式轻松制造精灵(Sprites)Sprite 资源切片精灵表(Slicing Sprite Sheets)配置游戏视图精灵动画(Animating Sprites)精灵封装(Sprite Packing)-仅针对专业人员.
  • Unity3D_2D游戏实例从零讲起(3)——基本菜单UI的实现   游戏除了基本的画面渲染,操作对象等等,还需要各种UI菜单来辅助玩家,或是引导,或是做游戏设置。比如,登录菜单,图片的显示,人物血条等等。  游戏...
  • Unity3D常用知识点总结

    2020-06-18 10:29:01
    Unity3D 可以通过将游戏中的物体拖入新键文件夹来重复使用(往往包括该物体用到的模型,动画,贴图,脚本等等) 右上可以调整Debug还是Normal模式 物体 unity3d下 常用物体 cube cylinder sphere plane quad ...
  • 原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 引言:想用Unity3D制作优秀的游戏,插件是必不可少的。工欲善其事必先利其器。本文主旨是告诉使用Unity3D引擎的同学们如何根据需求选择适当的工具...
  •  下面的教程是我今天整理的资料,教大家一步步完成自己的3D立体... 理论上,每个普通的非立体3D游戏,都可以改为3D立体游戏,看完这篇帖子,你们都可以把自己之前做过的3D游戏改为立体游戏,那效果。。。
  • Unity2D入门手册

    2017-09-10 19:48:03
    Unity2D 编辑裁切纹理图片素材导入2D模式下Texture Type导入默认为Sprite(2D and UI)裁切精灵集合 Sprite Mode选Multiple(告诉Unity这张图片由多张序列组成) Filter Mode 为Point(no filter) 点击Apply应用设置 ...
  • 如果用以前版本的Unity做2D游戏,虽然能做,但是要费很多周折. 比如你可以将一张纹理赋予一个”面片”网格,然后用脚本控制它的动画调整它的位移.如果你要使用物理引擎,那么还要将这个Obeject处理3D的,所以你还要确保你...
  • 调整游戏分辨率 再次!使精灵变清晰 制作瓦片地图(TileMap) 新建瓦片调色板(Tile Palette) 新建空白Tilemap 使用Tile Palette绘制Tilemap 最终效果 拓展阅读 回顾 上一篇:(二) 准备图像素材并认识...
1 2 3 4 5 ... 20
收藏数 725
精华内容 290
关键字:

2d窗口分辨率 unity3d