从零开始开发一款AR应用

Vuforia

什么是vuforia

  • 我没有自己看过它的概念,但是在使用的过程中它的作用实现图片、模型的识别,识别后就可以显示我们预设好的内容了。

怎么使用

  • 进入Vuforia,右上角注册。
  • 点击Develop进入下图

image

  • License Manager:管理你的授权,其实和其它一些SDK一样就是管理一下APP key(就是一串字符串)。在使用vuforia的SDK的时候需要用到。

  • Target Manager:target就是你扫描的图片或者模型或者其它什么的东西,当你扫描完成后如果匹配上了,就会在手机上显示相关的内容。

每天一点UWA:第六周

AssetBundle

这是一个很长的问题:

字体作为多个资源的依赖包,会在游戏中被加载多次。我们现在有个问题,AssetBundle A资源依赖于这个字体,加载A的时候加载了一份字体,然后B资源也依赖这字体,而后加载B的时候我们没有去重复加载字体,这时候发现B资源上出现了字体丢失的现象。

游戏设计模式读书笔记:组件模式

为什么是组件

意图

  • 允许单一的实体跨越多个领域而不会导致这些领域彼此耦合。

实体-组件-系统(ECS)

  • 组件模式在游戏中常见的体现就是ECS

每天一点UWA:第五周

AssetBundle

shader加载

  • 首先 Shader. WarmupAllShaders 并不影响 Shader 的加载,因为该函数的作用是将所有已加载的 Shader 都做一次快速渲染(渲染单个像素,GPU 在首次使用某一个 Shader 时会有额外开销,Warm 相当于是将这部分开销提前)。
  • 可以通过AssetBundle.LoadAll等接口预加载 AssetBundle 中的 Shader。而对于 Always Included Shaders 中的 Shader 则可以通过 Shader. Find 来预加载。

每天一点UWA:加载模块深度解析

专题

  • 因为UWA上会对一些技术进行系列的专题讲解,而且文章并不连续,如果按照每周的形式就会割裂这些内容,因此针对这样的情况统一写成专题形式。

概述

  • 载模块中最为耗时的性能开销可以归结为以下几类:资源加载、资源卸载、Object的实例化和代码的序列化等。
  • 资源加载是加载模块中最为耗时的部分,其CPU开销在Unity引擎中主要体现在Loading.UpdatePreloading和Loading.ReadObject两项中。
  • Loading.UpdatePreloading,这一项仅在调用类似LoadLevel(Async)的接口处出现,主要负责卸载当前场景的资源,并且加载下一场景中的相关资源和序列化信息等。下一场景中,自身所拥有的GameObject和资源越多,其加载开销越大。
  • Loading.ReadObject,这一项记录的则是资源加载时的真正资源读取性能开销,基本上引擎的主流资源(纹理资源、网格资源、动画片段等等)读取均是通过该项来进行体现。可以说,这一项很大程度上决定了项目场景的切换效率。

每天一点UWA:第四周

AssetBundle

Resources.UnloadAsset仅能释放非GameObject和Component的资源,比如Texture、Mesh等真正的资源。对于由Prefab加载出来的Object或Component,则不能通过该函数来进行释放。

每天一点UWA:第三周

内存

资源复用

  • 如果一个prefab被简单的多复制几次,里面的mesh、Texture、AnimationClip、Material这些都是被复用的,在profile中可以看到。但是如果prefab从AssetBundle中获取,并且多次的加载、实例化、卸载可能造成内存泄漏,因为unload(false)并没有真正卸载内存中的已经实例化的prefab,再次load时PersistentManager会认为是一个新的对象。

每天一点UWA:第二周

内存

概述

  • 内存的开销无外乎以下三大部分:1.资源内存占用;2.引擎模块自身内存占用;3.托管堆内存占用。

资源内存

  • 大头在纹理,其次在网格、动画片段和音频。

每天一点UWA:第一周

初衷

  • 首先UWA一直以来都是一个我很喜欢的网站,因为他们在unity的优化方面是非常专业的,而且他们对于技术的分享也是毫不吝啬的。在他们的网站上有很多的技术文章,很久以来都想系统的阅读一遍,但是一直没有去做。这周开始下定决心要从第一篇开始,把UWA所有的技术分享文章读完,这个系列的文章会对每周读到的技术做一个总结,但是因为文章涉及的方向比较杂,因此会简单的用技术进行一个分类。

CPU方面的优化(很有用)

  • 就目前的Unity移动游戏而言,CPU方面的性能开销主要可归结为两大类:引擎模块性能开销和自身代码性能开销。其中,引擎模块中又可细致划分为渲染模块、动画模块、物理模块、UI模块、粒子系统、加载模块和GC调用等等。

Unity返回Value的协程

起因

  • 其实一直以来就有个想法,希望能让unity中的coroutine返回一个具体的数值,比如int,比如string或者一个GameObject。最近也查了些资料,然后总结一下这个功能如何实现。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×