本文内容主要翻译自下面这篇文章

https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-assetbundles-and-resources?playlist=30089  A guide to AssetBundles and Resources

第二部分 Resources文件夹

这部分讨论Resources系统。这个系统允许开发者在一个或者多个Resources目录里面存储Asset,并能够使用Resources API在运行时加载和卸载Objects。

1.1  Resources系统的最佳实践

最佳实践就是不要使用它。

这个强烈的建议理由如下:

  1. 使用Resources文件夹使得内存管理更加困难。
  2. 不正确的使用Resources文件夹会使得项目编译发布和发布后的应用程序启动时间变长。
  3. 随着Resources文件夹的增多,管理里面的Assets变得困难。
  4. Resources系统降低了发布平台独立的定制内容的能力,并且使得增量内容更新变得不可能。
  5. AssetBundle变量是unity的发布针对不同设备可定制内容的主要工具。

1.2  Resources系统的正确使用

Resources系统有两个特殊的使用案例而不与最佳实践相冲突

  1. Resources系统非常适于快速开发原型和实验,因为他非常简单易用。当项目推进到完整产品时,强烈建议排除掉Resources文件夹。
  2. Resources文件夹适合一些琐碎的资源,比如Resources文件夹里面的资源都是很小,或者整个项目生命周期都需要。这些内容都不需要打补丁。也即跨平台和设备时都不会变化。

适合第二种情况的例子比如有全局用的预制品,上面挂载一些单例MonoBehaviour脚本。或者是第三方配置资源,比如FaceBook App ID。

2.3  Resources序列化

当项目编译的时候所有Resources目录下的Asset都被序列化进一个文件。这个文件和AssetBundle一样也包含meta数据和索引信息。索引信息包含object名字到GUID和localID的查找树。也用来定位一个对象在文件内的字节偏移等信息。

查找树在大部分的平台上是平衡树。她的构造时间是O(Nlog(n)),n是Object数量。数量的增长造成加载时间不是线性增长。

当应用启动时,这个操作是不能跳过的。在很慢的移动设备上面初始化一个包含10000个资源的resource系统,可以观察到会消耗好多秒,虽然这些文件大部分都不需要加载到第一个关卡里面。

Unity AssetBundles and Resources指引 (二) Resources文件夹的更多相关文章

  1. Springboot 项目 无法读取resources下的mapper文件夹的.xml文件

    之前学习的时候遇到的一个问题 org.springframework.beans.factory.BeanCreationException: Error creating bean with nam ...

  2. Hadoop入门进阶步步高(二)-文件夹介绍

    二.Hadoop文件夹结构 这里重点介绍几个文件夹bin.conf及lib文件夹. 1.$HADOOP_HOME/bin文件夹 文件名 说明 hadoop 用于运行hadoop脚本命令,被hadoop ...

  3. Unity 需不需要再建Assets文件夹

    不需要,默认所有文件都是在Assets文件夹下创建的,看不到是因为设置了单栏模式,开启双栏模式就能看到了.

  4. Unity 特殊文件夹 Assets Resources StreamingAssets Editor Plugins......

    AssetsAssets文件夹是unity项目中放置游戏资源的主文件夹. 该文件夹中的内容将直接反应在编辑器的Project视口中.许多系统API基于该文件夹路径. ResourcesUnity允许你 ...

  5. 解决eclipse maven工程中src/main/resources目录下创建的文件夹所显示样式不是文件夹,而是"包"图标样式的问题

    参考:http://blog.csdn.net/luwei42768/article/details/72268246 eclipse项目中创建maven项目后,有时在执行命令maven update ...

  6. Unity 所有特殊文件夹

    1.Editor 2.Editor Default Resources Editor Default Resources注意中间是有空格的,它必须放在Project视图的根目录下,如果你想放在/xxx ...

  7. Unity3D_10_文件夹目录架构

    一:几个特殊文件夹介绍 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以.比如目录:/xxx/xxx/Editor 和 /Editor 是一样的,无论 ...

  8. Android读取asserts和raw文件夹下的文件

    Android读取asserts和raw文件夹下的文件 经常需要用到读取“/res/raw”和"/asserts"文件夹下的文件,索性写成工具类方便以后使用. 一.raw文件夹下的 ...

  9. iOS创建、删除文件夹、获取沙盒路径

    1.获取沙盒路径 // 获取沙盒路径 NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent: ...

  10. CodeSmith使用总结--下拉列表和文件夹对话框属性

    上一篇有点短了,因为实在没有什么可说的,这一篇会多一点.O(∩_∩)O~ 一.下拉列表 关于如何在CodeSmith中创建一个下拉列表的属性框其实很简单,是要使用C#中的枚举就行了,看操作. 首先定义 ...

随机推荐

  1. 高性能MySQL --- 读书笔记(1) - 2016/8/2

    此书不但帮助MySQL初学者提高使用技巧,更为有经验的MySQL DBA指出了开发高性能MySQL应用的途径.全书包括14章,内容覆盖MySQL系统架构.设计应用技巧.SQL语句优化.服务器性能调优. ...

  2. Saltstack系列1:安装配置

    安装 安装EPEL作为安装Ansible的yum源(CentOS6.4) rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release ...

  3. ifconfig报错:SIOCSIFFLAGS: Operation not permitted

    # insmod mt7601Usta.ko rtusb init rt2870 --->usbcore: registered new interface driver rt2870 # iw ...

  4. yarn的调度策略

    一. yarn的资源分配模型 无论先进先出调度器,容量调度器,还是公平调度器,他们的核心:资源分配模型是一样的. 调度器维护着多个队列的信息,用户可以向任意一个或多个队列提交job.每次NodeMan ...

  5. hive查询语句

    一. 为什么hive是数据仓库 hive局限于hdfs, 不能进行记录级别的增删改 hive底层的mapreduce启动耗时很长, 无法做到传统数据库的秒查, 只适合离线分析 hive不支持事务, 无 ...

  6. Segment fault及LINUX core dump详解 (zz)

    C 程序在进行中发生segment fault(core dump)错误,通常与内存操作不当有关,主要有以下几种情况: (1)数组越界. (2)修改了只读内存. (3)scanf("%d&q ...

  7. Qt属性表控件的使用 QtTreePropertyBrowser

    属性表是vs2003时引入的的新控件,用于流量和设置大量的信息,现在,很多软件上都能看到它的身影,如vs,Qt Creator等IDE的详细设置里都离不开属性表. 下图是Qt Creator里的属性表 ...

  8. AP_HZ Party和Supplier、Bank表关系详解

    2014-06-26 Created By BaoXinjian

  9. Codeforces Round #368 (Div. 2) D. Persistent Bookcase

    Persistent Bookcase Problem Description: Recently in school Alina has learned what are the persisten ...

  10. DDoS-Deflate安装及配置

    (D)DoS-Deflate是一款免费的用来防御和减轻DDoS攻击.它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限制时,该程序会通过APF或iptables禁止或 ...