<track id="VloUwfX"></track>
  • <track id="VloUwfX"></track>

        <track id="VloUwfX"></track>

        1. 接下来我们一一的介绍他们的作用,差别以及优毛病:

          第一种:直接通过Public变量的情势,在Hierarchy显示面板拖拽预制体的方法

          这是很少应用的方法,对于项目来说,直接的拖拽的方法并不是快效力的方式,10次可能没感到什么,但是成千上个的须要拖拽到预制体而言,这种方法就是纯洁的挥霍研发时光。其次,如果项目升级换成更高版本的Unity,会提醒你进行一次项目标更新,这时候如果引用丧失可能会造成一些除了空指针报错之外的偶发性BUG,这是更加致命的,而且丧失了的引用又是须要重新的进行一次反复性操作的拖拽赋值,所以第一种方法一般都是个人小项目,或者为了赶DEMO完成的演示版可以用用,真正的项目开发基础上没有应用这样的方法,如果不是你负责的模块还好,但如果是你自己负责的模块,我建议不要再应用这种方法,如果是先辈留下的遗产,我建议是直接跑路吧。

          第二种:通过Resources文件夹配合Unity内置API的Resources方式进行加载资源的方法

          首先,先声明为自己的观点,我并不排挤这种方法的加载,甚至如果通过Resources配合上其他的加载方法才是项目中常见的计划,但是我们是须要准确的应用Resouces,如果你不应用准确的方法应用Resources文件夹,那我强烈的建议你不要应用Resources,为什么这么说?

          我们先来懂得一下Resouces文件夹,Resources文件夹很便利,初级学习的人很早就应当知道这个文件夹,一般都是把要实例化出来的预制体放进去,然后须要应用的时候再在脚本中Resouces.XXX加载方法进行加载,然后再Instantiate实例化它到场景中。那么,我为什么说如果没有准确的方法应用,并不建议应用它呢?原因如下:

          1.Resources文件夹的大小是有限的,我没记错的话,最大应当是2GB的大小左右2.Resources文件夹应用不当的话会增添与利用程序的启动时光和构建时光,因此它使内存管理变得艰苦3.随着Resouces文件夹数量的增添,管理这些文件夹中的资产变得非常的艰苦4.资源包无法分块读取,内存占用大,加载速度慢,须要一整块资源加载5.下降了工程中的内容转换到特定平台的才能,使内容更新艰苦6.增大包体大小,打包宣布时Resources文件夹会一并打包出去7.Resources文件夹下的资源是无法进举动态更新的,是直接紧缩并包括在平台可履行文件中(如果想应用动态更新须要用到AssetBundle或者Addressable)

          我清楚有的开发者可能会对第2点和第5点表现怀疑,我针对这两点给出官方上的说法:

          Assets下,可以放置任意多个命名为Resources的文件夹,这些文件夹在版本构建时,汇合并成一个序列化文件,这个序列化文件包含了metadata和indexing information。indexing information包含了一个平衡的搜索树(On most platforms, the lookup data structure is a balanced search tree),我们可以通过Resources API 传递路径名字去找到资源在Resources下的地位,平衡的搜索树是为了保证我的时光庞杂度在O(n log(n)) ,进步资源查找的速度。Resources 的这两点因素,会导致构建时光和启动时光变长。1.产生在构建阶段时候,合并所有命名为Resources的文件夹下的资源并序列化的时光。 2.产生在运行阶段(non-interactive splash screen),在Unity启动时,会创立indexing information,平衡搜索树的时光。所以,Resources下的的资源越多,耗时就越多,是线性增加的。如果Resoruces下的子文件夹嵌套特殊深,递归的成本也会越大。创立balanced search tree是在真机装备上产生的,在一些低端机装备,可能会有数秒的耗时,并且这个进程,是必定会履行,不可跳过的。

          那么我们现在回过来看看,我还说了一句,如果是在准确的应用下,我是并不排挤Resouces文件夹的,甚至如果配合AssetBundle等其他加载方法,可能还会更优于单一的方法。那么在哪些情形下我是建议你可以应用Resouces文件夹的呢?

          1.Resouces文件夹的易用性使其成为快速原型化的绝佳体系,但是,当项目进入全面生产阶段时候,应当撤消Resources文件夹的应用。也就是如果是DEMO阶段或者是为了演示时候为了快速赶进度给甲方爸爸看或者是内部测试版的时候,Reouces文件夹的应用是可以的。

          2.其实Reources的毛病中有一点就是不便利内存的管理,那么,如果项目中存在一些琐碎的情形,在不占用内存和不会因为平台或者装备而异与不须要打补丁的情形下,也是可以应用Resources的。例如,我们会放几张固定的配置表这类文件。一些基础配置数据,如App id,一些小的prefabs,一些非内存密集型的文件,即小文件,不随装备平台变更,比拟“佛系”的资源。这类资源的请求就是文件要少,要小,惯例配置,通常性一类的文件。

          最后,这个系列就按加载的方法分节数来吧,因为如果放到一章讲,实在是太长了,我自己也看不下去那么长的文章,所以下一章节,我们就来讲讲AssetBundle.

          如果你还没有懂得过或者不知道AssetBundle是什么,你可以看我之前写过的一篇关于AssetBundle的详细介绍,然后再来学习我这里的下一个章节进行深刻懂得AssetBundle的原理。

          劳烦叫我小小泽:一.初识AssetBundlezhuanlan.

          参考材料:

          1.blog.uwa4d.com/archives

          2.zhuanlan./p/97

          3.docs.unity3d.com/cn/cur

          4.learn.unity.com/tutoria

          5.jianshu.com/p/a1c5a5825