Resources目录的优点与痛点

参考文章:

Resources目录的优点与痛点 - UWA问答 | 博客 | 游戏及VR应用性能优化记录分享 | 侑虎科技 (uwa4d.com)

 特殊的工程目录

 

(1)Editor
第一个介绍的就是这个目录。这个目录是用来辅助开发的,可以是一个,也可以有很多个,可以在任意的子目录下面。主要作用就是可以编译Unity编辑器模式下提供的脚本和接口,用于辅助研发,创建各种资源检查,生成工具,以及自定义Unity的工具栏,窗口栏等等。Editor目录下的所有脚本都不会被编译到正式发行包里,很多很多优秀的插件都是需要通过Unity提供的编辑器下的扩展接口来实现功能扩展的。

(2)Editor Default Resources
这个需要和Editor配合使用。一个扩展面板或者工具光秃秃的也不好看,配上一些美化资源之后会让你的插件或者工具格局更高。要注意的是,这个目录只能是唯一的,并且只能放在Assets的根目录下。

(3)Plugins
这个目录是存放代码之外的库文件的。比如引入的第三方代码,SDK接入的各种jar包,.a文件,.so文件.framwork文件等等,这些库文件会在Unity编译的时候链接到你的DLL里。

(4)Resources

这个和Editor一样,可以在Assets下的任何目录下,并且可以有任意多份。所有Resources目录下的文件都会直接打进一个特殊的Bundles中,并且在游戏启动时,会生成一个序列化映射表,并加载进内存里。

(5)Gizmos
这个目录其实比较简单,就是可以辅助你在Unity的Scene视窗里显示一些辅助标线,图标或者其它的标识,用来辅助开发定位资源。

 

(6)StreamingAssets
这个文件是Unity的一个重要文件。Unity发布程序或者游戏,资源随包出去的时候,只有2个地方,一个就是Resources目录,另外一个就是StreamingAssets。这个目录的资源,文件或者任何东西,都会原封不动的复制到最终的Apk或者iOS的包内。

除了上面这些特殊目录之外,如果是一个正常的工程,还会有很多其它导入的插件、或者自定义目录。这里有一篇我之前写过的文章,用于规划Unity的工程目录来适配多人的、不同职能的协同合作。

 Resources详解

AssetBundles的方式有很多缺点,比如:

  • 无法直观地看到包内的资源情况。
  • 异步加载,需要写比较繁琐的回调处理。
  • 调试的时候,无法通过Hierarchy直接定位到资源。
  • 使用之前需要花费时间进行打包,尤其是在开发的时候,调整资源频繁,如果忘记打包可能导致Bug。

  • Resources内的资源会增加应用程序的启动时间和构建时长。
  • Resources内的资源无法增量更新,这是现在手机游戏开发的致命点。

2、哪些情况我们可以使用Resources
Resources有它的致命性缺点,但是存在即合理。它还是有它的一些使用场景的,比如:

  • 某些资源是项目整个生命周期都必须要用的。
  • 有些很重要,但是却不怎么占内存的。
  • 不怎么需要变化,并且不需要进行平台差异化处理的。
  • 用于系统启动时候最小引导的。

你可能感兴趣的:(AssetBundle,unity,游戏引擎)