unity

Unity前向渲染路径细节(Forward Rendering Path Details)

匿名 (未验证) 提交于 2019-12-03 00:32:02
Rendering Paths Unity支持不同的 Rendering Paths (渲染路径)。您应该根据游戏内容和目标平台/硬件来选择。不同的渲染路径有不同的表现特点,这主要影响光照和阴影。查看 render pipeline 获取技术细节. 您项目所使用的渲染路径是在 Graphics Settings Camera 重写. 如果一个显卡不支持选择的渲染路径,Unity将会自动选择一个低一点保真度(lower fidelity)的路径。例如,在一个GPU上,不能操作 Deferred Shading 那么 Forward Rendering 将会被使用。 Deferred Shading Deferred Shading (延迟渲染)是光照阴影保真度最高的渲染路径,很适合有许多实时光照的情况。它需要一定程度的硬件支持。 Deferred Shading page 获取更多细节。 Forward Rendering Forward Forward Rendering page Legacy Deferred Legacy Deferred (light prepass) Deferred Lighting page 获取更多细节. Legacy Vertex Lit Legacy Vertex Lit Vertex Lit page NOTE Deferred

[Unity] SV_POSITION位置导致的shader问题

匿名 (未验证) 提交于 2019-12-03 00:32:02
今天碰到了一个非常无语的问题,特写下来记录一下。 在PC上效果正常的shader,放到手机上就是一片粉。 挨个排查后最后发现是因为v2f中SV_POSITION放在最后没有放在最前面,挪到第一个就好了 这个人也碰到了这个SV_POSITION导致的问题,不过跟我的问题不一样。 https://forum.unity.com/threads/why-must-sv_position-be-the-first-output.245327/ 这是bug还是feature? 文章来源: [Unity] SV_POSITION位置导致的shader问题

Unity游戏开发案例分享

匿名 (未验证) 提交于 2019-12-03 00:30:01
项目的github地址: 点击打开链接 以下是我开发MiniCar小游戏的过程和心得体会。 使用GitHub迭代开发与版本控制: 我觉得,在独立开发游戏的过程中,始终明确自己的目标是一件非常重要的事情。使用迭代的思路可以找出当前最重要的几个需求,集中精力来实现,避免的一些不要紧和不明确的小需求上浪费过多时间。版本控制可以在让我放心大胆的去写代码,去比较不同的版本哪个更好,github的不同分支可以很好的实现这一点。 面向对象思想: 通过面向对象设计,可以比较好的分配游戏职责,编程的时候思路也更清晰。 软件架构与设计模式: 我使用的是MVC的架构,将比较好理解,在这个游戏里,像赛车这样的对象作为模型,提供控制的方法,而用户处理,关卡控制作为控制器,用户的界面显示这些模型的信息。如赛车的速度,关卡能否解锁等。 设计模式可以在代码量增长时提供方便的维护方法,用例如观察者模式,状态模式,等可以很好解耦不同类,不同功能之间的依赖,如赛车受到碰撞时要发出碰撞的音效,如果把物理和音效放在一段代码里,会导致两个系统的直接耦合,不利于之后功能的拓展,且可能会发生难以预测的bug。 确定需求是快速开发的关键: 在开发的初始阶段,需求要少而精,确定之后就以此为根据进行面向对象,架构与编程模式的设计,要保持写的代码是可以扩展的,职责是合理且明确的。这样的方式可以避免未来大量的修改与重写,极大的提升效率。

Mac 破解Unity 20017.4.5

匿名 (未验证) 提交于 2019-12-03 00:30:01
下载 Unity 2017 破解软件,然后 右键点击 破解软件,显示 show package Contents,然后找到 里面的 .ulf 文件,替换掉当前/Library/Application Support/Unity 下的 .ulf 这样才会破解成功 文章来源: Mac 破解Unity 20017.4.5

(转)Unity 如何减少DrawCall

匿名 (未验证) 提交于 2019-12-03 00:27:02
Draw Call Batching for ( int i = 0 ; i < 500 ; i++ ){ GameObject cube; cube = GameObject.Instantiate(prefab) as GameObject;} for ( int i = 0 ; i < 500 ; i++ ){ GameObject cube; cube = GameObject.Instantiate(prefab) as GameObject; if (i / 100 == 0 ) { cube.transform.localScale = new Vector3( 2 + i, 2 + i, 2 + i); }} MipMap IEnumerator DownloadAndCache (){ // Wait for the Caching system to be ready while (! Caching.ready) yield return null ; // Load the AssetBundle file from Cache if it exists with the same version or download and store it in the cache using ( WWW www = WWW

Unity PlayerSetting设置

匿名 (未验证) 提交于 2019-12-03 00:27:02
我用的是unity5.4.3版本的 一、窗口打开: 二、全局设置 第一部分: 默认的 游标 状态(通常为一个 箭头 )。 Cursor Hotspot 光标的设置。 附注:最后两项通常不做设置。 三、Per-Platform Settings 各平台设置 (一)、PC、Mac、Linux等平台的设置 4、Other Settings 其他设置 最低光照保真,不支持阴影,最好用于老机器或受限的手机平台。 用于渲染的色彩空间 伽马空间渲染 伽马校正渲染 线性渲染 在线性空间渲染 (二)IOS平台的设置 设备为纵向模式,设备垂直手持并home键在底部。 纵向倒置 (仅iOS) 设备为纵向倒置模式,设备垂直手持并home键在顶部。 设备为横向模式,设备垂直手持并且home键在左边。 左横向, 设备为横向模式,设备垂直手持并且home键在右边。 基于设备物理设备方向,自动设置屏幕方向。 3、Other Settings 其它设置 最好是固定Opengl ES 2.0 ,不要 选择Automatic也不要选择Metal,因为这个选项可能会导致app在Iphone6上出现crash。 标识符 优化 Strip Engine Code 剥离引擎代码的选项。官方文档是这样描述它的"如果被选中,unity会默认剥离在项目中不会使用的组件",也就是说,假如你的项目中没有音频功能

[Unity优化]减少DrawCall:批处理

匿名 (未验证) 提交于 2019-12-03 00:27:02
参考链接: http://game.ceeger.com/Script/Mesh/Mesh.CombineMeshes.html 一、批处理 1.批处理的目的就是为了减少DrawCall。DrawCall即CPU命令GPU去绘制。 2.如果我们需要渲染一千个三角形,那么把它们按一千个单独的网格进行渲染所花费的时间要远大于直接渲染一个包含了一千个三角形的网格。 3.要想使用批处理,需要物体有相同的材质。这是因为,对于使用同一个材质的物体,它们的不同仅仅在于顶点数据的差别,我们可以把这些顶点数据合并在一起,再一起发送给GPU,就可以完成一次批处理。 4.在unity中,有两种批处理:一是动态批处理,二是静态批处理。 对于动态批处理,unity会自动完成,不需要我们进行操作,而且物体是可以移动的,但是动态批处理有许多限制条件。 对于静态批处理,物体不可移动,但是限制条件很少。 二、动态批处理 原理:每一帧把可以进行批处理的模型网格进行合并,再把合并后模型数据传递给GPU,然后使用同一个材质对其渲染。 限制: 1.顶点属性要小于900。例如,如果shader中需要使用顶点位置、法线和纹理坐标这三个顶点属性,那么要想让模型能够被动态批处理,它的顶点数目不能超过300。因此,优化策略就是shader的优化,少使用顶点属性,或者模型顶点数要尽可能少。 2.多Pass的shader会中断批处理。