叮当你个喵 的blog

全面理解Unity加载和内存管理

Unity里有两种动态加载机制:一是Resources.Load,一是通过AssetBundle,其实两者本质上我理解没有什么区别。Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时动态加载,可以指定路径和来源的。

其实场景里所有静态的对象也有这么一个加载过程,只是Unity后台替你自动完成了。

详细说一下细节概念:

AssetBundle运行时加载:

来自文件就用CreateFromFile(注意这种方法只能用于standalone程序)这是最快的加载方法
也可以来自Memory,用CreateFromMemory(byte[]),这个byte[]可以来自文件读取的缓冲,www的下载或者其他可能的方式。

其实WWW的assetBundle就是内部数据读取完后自动创建了一个assetBundle而已
Create完以后,等于把硬盘或者网络的一个文件读到内存一个区域,这时候只是个AssetBundle内存镜像数据块,还没有Assets的概念。

Assets加载:

Unity 2018.2正式推出,带来一系列3D内容优化

Unity刚刚更新了他们的3D引擎,为今年年初推出的Scriptable Render Pipeline带来了一系列的优化。

Scriptable Render Pipeline(SRP)最初以预览功能的方式来到了Unity 2018.1,其可以帮助开发者根据硬件配置文件来优化应用程序的性能。Unity的Lightweight Render Pipeline(LWRP)专为在智能手机和平板电脑上运行高质量沉浸式内容而设计,而High Definition Render Pipeline(HDRP)则允许开发者利用高性能的游戏主机和PC。

Unity的高级产品市场营销经理Thomas Krogh-Jacobsen在博文中写道:“Unity 2018.2的目标之一是,在Scriptable Render Pipelines(SRP)的基础上进一步优化,从而实现新水平的渲染。我们的另一个重点是开发一系列的功能和优化,从而帮助你在移动领域取得成功。”

关于unity的各种贴图

贴图的英语 Map 其实包含了另一层含义就是“映射”。其功能就是把纹理通过 UV 坐标映射到3D 物体表面。贴图包含了除了纹理以外其他很多信息,比方说 UV 坐标、贴图输入输出控制等等。材质是一个数据集,主要功能就是给渲染器提供数据和光照算法。

关于unity的各种贴图

漫反射贴图diffuse map :漫反射贴图在游戏中表现出物体表面的反射和表面颜色。换句话说,它可以表现出物体被光照射到而显出的颜色和强度。我们通过颜色和明暗来绘制一幅漫反射贴图,在这张贴图中,吸收了比较多的光线的部分比较暗,而表面反射比较强的部分,吸收的光线比较少。

七个方法让你的unity项目更条理!

一天,我在Quora上看到一个人问:程序员如何用超过一万行的代码编写一个项目。软件做的越大,维护就越困难,这是一个不争的事实。所以这面临的问题就是如果你不让你的项目有条理,就会很难维护它。到后期,你就会发现你并不是在添加新功能而是在把时间浪费在一个凌乱的项目上。每一个Unity项目也是这样的。在我看来,这是非常重要的技巧,可以帮助你保持你的项目条理性。

1. Directory Structure 【目录结构】

我们不能够在不提到项目目录结构的情况下谈论组织结构。Unity让你可以自由的创建自己想要的目录结构,也正是因为这样,它可能让项目很混乱。下面是我个人使用的目录结构:

3rd-Party(第三方资源)
s
Audio
1、Music
2、SFX
Materials
Models
Plugins
Prefabs
Resources
Textures
Sandbox
Scenes
1、Levels
2、Other
Scripts
1、Editor
Shaders

不要在根目录存储任何资源文件,尽可能使用子目录。

除非需要,否则不要在根目录中创建一些额外目录。(意思是不要在根目录创建一些无用目录)

Unity VS Unreal,游戏开发该如何选择引擎?

随着游戏开发的不断进步,游戏开发越来越庞大复杂,因此游戏引擎已经成为游戏开发必不可少的工具。引擎对基本的功能封装,对工具链的提供等都可以大幅降低游戏引擎的开发难度,提高开发速度和质量。

Unity为手机AR推出跨平台开发工具AR Foundation

我们知道,你们中的很多人都对于构建手持式AR应用感到非常兴奋。所以,Unity开发了一个多平台API和实用程序,帮助你在AR开发过程中遇到的众多难题。他们将其称之为 AR Foundation。

Unity表示,“我们一直站在手持式AR开发的前沿,我们从一开始就支持ARCore和ARKit。但借助AR Foundation及其利用的软件架构,我们现在可以为开发者提供一个支持ARCore,ARKit和未来平台核心功能的通用API。”

AR Foundation已经通过Package Manager集成至Unity,所以你可以轻松将其集成至你的新项目之中。Unity专注于为AR Foundation增加对新功能和平台的支持。同时,他们将继续支持特定于平台,开发者希望在现有项目中使用的插件。

Unity表示:“我们对手持式AR和可穿戴AR感到非常乐观,而随着技术的发展和AR市场的增长,我们将继续投资于平台支持和开发者工具。”

1. AR Foundation

AR Foundation的初始版本将为大多数AR应用的核心功能提供支持:
  •   平整表面检测
  •   表示为点云的深度数据
  •   高效的pass-thru渲染

关于Unity中3D声音的使用

3D声音

3D立体声和2D声不同的地方是它是会随着距离衰减的,距离越近声音越大,距离越远声音越小。

1、声音: 背景音乐和音效;

2、声音文件支持的格式:ogg, mp3, wave, AIFF;

ogg比较流行,很多安卓里面的声音使用ogg的格式是为了绕开mp3的版权

ogg和mp3都比较常用

wave和ogg、mp3比起来比较大,没有压缩的数字音乐,可以直接写到声卡里面

3、音频管理器:Edit-->ProjectSetting--> Audio;和物理引擎一样有管理器

Global Volume:全局播放的音量;

Volume Rolloff Scale:衰减因子,越大,声音衰减越快;

Doppler Factor:多普勒因子;模拟多普勒效应的监听效果:0关闭, 1 高速物体的多普勒效应会比较明显的监听的到;

Default Speak Mode:设置扬声器模式;默认值为2(立体声, AudioSpeakModer); stereo立体声

System Sample Rate:(输出采样率);

DSP Buffer Size:调整DSP缓冲区大小优化延迟和性能;越大效果越好

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中可以选择渲染哪些层,不选择的层则不会渲染。还可以用于射线检测对象的拣选,可以指定只对某些层的对象进行射线检测。

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