Unity

Unity5 如何做资源管理和增量更新

工具

Unity 中的资源来源有三个途径:一个是Unity自动打包资源,一个是Resources,一个是AssetBundle。

  •   Unity自动打包资源是指在Unity场景中直接使用到的资源会随着场景被自动打包到游戏中,这些资源会在场景加载的时候由unity自动加载。这些资源只要放置在Unity工程目录的Assets文件夹下即可,程序不需要关心他们的打包和加载,这也意味着这些资源都是静态加载的。但在实际的游戏开发中我们一般都是会动态创建GameObject,资源是动态加载的,因此这种资源其实不多。

  •   Resources资源是指在Unity工程的Assets目录下面可以建一个Resources文件夹,在这个文件夹下面放置的所有资源,不论是否被场景用到,都会被打包到游戏中,并且可以通过Resources.Load方法动态加载。这是平时开发是常用的资源加载方式,但是缺点是资源都直接打包到游戏包中了,没法做增量更新。

Unity 2018.2新功能:可编程着色器变体移除

由于着色器变体数量在不断的增加,播放器构建时间和数据大小会随着项目复杂度而增加。而通过允许开发人员控制Unity着色器编译器处理哪些着色器变体,并将其包含在播放器数据中,可大量减少播放器构建时间和数据大小。今天我们将为大家介绍Unity 2018.2 beta版中新功能可编程着色器变体移除功能。

可编程着色器变体移除功能允许开发人员移除所有包含无效代码路径的着色器变体、去除带有未使用功能的着色器变体,并创建着色器构建配置,例如“debug”(调试)和“release”(正式版),这些操作不会影响迭代时间或是复杂性的维护。

在本文中,首先会定义一些需要使用的术语。然后我们会关注于着色器变体的定义,解释为什么可以生成那么多变体。接下来,再介绍自动着色器变体移除功能,讲解可编程着色器变体移除功能在Unity着色器管线架构中的实现方法。之后,我们会介绍可编程着色器变体移除功能的API,讨论Fountainbleau演示项目中得到的结果,最后针对编写移除脚本提供一些技巧。

尽管学习可编程着色器变体移除功能并不简单,但这个功能却可以大幅提升团队效率。

下载示例项目

关于Unity中渲染顺序问题

1、Camera是渲染顺序的最大总指挥

顺序由Camera的Depth值决定,值越小视野范围内的游戏物体越先渲染

关于Unity中渲染顺序问题

2、layer是对游戏中所有物体的分类别划分

如UIlayer, waterlayer, 3DModelLayer, smallAssetsLayer, effectLayer等。将不同类的物体划分到不同的层,便于相机拣选,在相机的cullmask中可以选择渲染哪些层,不选择的层则不会渲染。还可以用于射线检测对象的拣选,可以指定只对某些层的对象进行射线检测。

Unity里有哪些让你拍案叫绝的技巧?

1、如果编辑器意外崩溃了,但场景未保存,这时可以打开工程目录,找到/Temp/_Backupscenes/文件夹,可以看到有后缀名为.backup的文件,将该文件的后缀名改为.unity拖拽到项目视图,即可还原编辑器崩溃前的场景。

Unity里有哪些让你拍案叫绝的技巧?

2、所有数值类型的字段,都支持在检视面板中直接输入简单的数值表达式。
Unity里有哪些让你拍案叫绝的技巧?

3、好不容易才调好的坐标,结果发现是在运行模式下,如果退出运行模式就还原了怎么办?可以在检视面板右键点击组件名,在弹出界面中选择Copy Component,然后退出运行模式后同样右键点击组件名,在弹出界面中选择Paste Component Values即可。

浅析Unity中的Enlighten与混合光照

陈嘉栋(慕容小匹夫)

前言

在Unity的5.6版本之前的5.x中,主要使用了Geomerics公司的Enlighten【1】来提供实时全局照明以及烘焙全局照明,在5.6之后Unity引入了新的Lightmapper——Progressive来提供烘焙全局照明并且提供了更多的混合光照模式,但是Enlighten仍然是Unity中全局照明的主要提供者。

浅析Unity中的Enlighten与混合光照

所以,本文就来聊聊Unity5.6以及Unity2017中和Enlighten、混合光照相关的话题吧。

直接光和间接光

关于Unity中LOD和渲染队列----渲染通道通用指令(一)

每个shader里面有很多的subshader,如果所以的subshader都不执行的话就,就执行fallback。每个subshader都可以设置一个LOD,整个shader也有一个LOD。

系统就去找第一个LOD小于等于shader的LOD的subshader执行,其他的subshader就不会被执行。

LOD

1:LOD Level of Detail, 根据LOD来设置使用不同版本的Shader;
2:着色器中给SubShader一个LOD值,程序来设置这个shader的LOD值,只有第一个小于等于LOD值subShader才会被执行;
3: 每个shader最多只会有一个SubShader被使用;
4: 通过Shader maximumLOD来设置最大的LOD值;
5: 设置全局的LOD值,Shader.globalMaximumLOD;
6: Unity内置着色器分LOD等级:
(1)VertexLit kind of shaders 100
(2) Decal, Reflective VertexLit 150
(3)Diffuse 200
(4)Difuse Detail 250
(5) Bumped, Specular 300

关于Unity中Cg的基本语法和使用

Cg是类似于C语言的发展起来的图形编程语言,Cgraphics,它的很多表达式if...else...和C语言非常相像,也和C#非常相像。

由于Shader是写给显卡执行的,所以没有输出语句来调试,很多地方调试不了,只能靠Unity编辑器来帮我们报错,写起来一定要小心谨慎。

基本类型表达式

1:语法和C语言类是,有对应的编译器,程序是给显卡运行;
2: 可以从渲染流水线中获得对应的输入;
3: 指定的输出能流入下一个流水线模块;
4: 操作符号和C语言一样,可以使用 +, -, * / <, >, <=, >= 等运算;
5: Cg提供了float half double 浮点类型;单精度,半精度,双精度
7: Cg 支持定点数 fixed来高效处理 某些小数;
8: Cg使用int来表示整数;
9: bool 数据类型来表示逻辑类型;
10:sampler*,纹理对象的句柄, sampler/1D/2D/3D/CUBE/RECT,往shader里面关联一个图片,关联纹理Texture,使用sampler
11: 内置向量数据类型: float4(float, float, float, float), 向量长度不能超过4;

面向Unity游戏引擎:PowerVR性能建议

作者:Dev Tech

如果你正在进行移动端Unity开发,那么这篇博客你绝对不能错过!最近,我们为广大用户提供了面向虚幻4游戏引擎的PowerVR性能建议,如果你更多时候使用的是Unity游戏引擎,那么我们现在就将与你分享PowerVR性能建议文档中关于提升Unity性能的一些方法。

大部分优化操作都适用于移动平台,但是也有一些是专门面向PowerVR平台的。也就是说,无论你的目标应用平台是什么,几乎所有的情况下都能够带来性能的提升,采用这些建议通常是很好的做法。

编译设置

纹理压缩

首先一定要确保使用了纹理压缩,这不仅能压缩存储空间,同时也会节省运行时的带宽,这是提升性能且节约电池寿命最好的方法之一。纹理压缩的优点是它们会一直处于压缩状态直到它们要被用于某个片段处理操作的时候。

Unity中Shader的三种基本类型

按照渲染管线的分类,可以把Sharder分成3个类别:

1、固定功能着色器(Fixed Function Shader)

固定功能着色器为固定功能渲染管线的具体表现。

2、表面着色器

存在于Unity3D中由U3D发扬光大的一门技术。Untiy3D为我们把Shader的复杂性包装起来,降低shader的书写门槛。

3、顶点着色器和片段着色器

GPU上含有两个组件:可编程顶点处理器和可编程片段处理器,顶点和片段处理器被分离成可编程单元,可编程顶点处理器是一个硬件单元,可以运行顶点程序,而可编程片段处理器则是一个可以运行片段程序的单元。

顶点着色器

顶点着色程序从GPU前端(寄存器)中提取图元信息(顶点位置、法向量、纹理坐标),并完成顶点坐标空间变换、法向量空间转换、光照计算等操作,最后将计算数据传送到指定寄存器中。

片段着色器

关于Unity中水和雾的使用

自己来做水和雾还是有点麻烦的,不过没关系,Unity帮我们做好了很多可以用的。

1.Unity自己实现了水的特效,帮助我们解决游戏中水的问题

2.Unity的水集成在了Environment的环境资源包里面,导入的方法是:Assert---->Import---->Environent导入

需要正式版才能看到这个菜单,没有的话也没关系,我们可以使用网上别人导出的package

3.水分为Water与Water(Basic)两个文件夹,Basic效果要差,但是占用CPU比较低。两个文件夹中都有一个Prefabs预制体的文件夹,文件夹下面有两个为文件,对应DayTime和NightTime的水。

4.水是有Shader来实现的,所以要看一下水对应的Shader,可以自己调节参数。

水环境的实例

1.Assert---->Import Packages---->Cuotom Packages---->Environment.unitypackage,在E:\电影\Unity Video\47

同步内容
--电子创新网--
粤ICP备12070055号