unity resources文件夹作用

摘要:
本篇文章讨论了Unity中的Resources系统。通过Resources系统,开发者可以将Asset资源放在一个或多个名为Resources的文件夹中,并且在运行时利用ResourcesAPI来加载或卸载这些Asset中的Object。1Resources系统的最佳实践不要使用它!不过,当项目进入正式开发阶段时,应该停止使用Resources文件夹。因此,索引加载时间随Resources文件夹内Object数量而增长的速度高于线性增长。

本篇文章讨论了Unity中的Resources系统。通过Resources系统,开发者可以将Asset资源放在一个或多个名为Resources的文件夹中,并且在运行时利用ResourcesAPI来加载或卸载这些Asset中的Object。

1 Resources系统的最佳实践

不要使用它!

强烈不建议使用Resources系统,原因如下:

1.1使用Resources文件夹将会使细粒度的内存管理变得更难

对Resources文件夹的不恰当使用会导致应用程序构架和启动时间变长

1.2随着Resources文件夹数量的增加,在这些文件夹中管理Asset将会变得越来越难使用Resources系统会降低项目向不同平台提供定制内容的能立,并且导致项目无法进行增量内容更新

AssetBundle变体是Unity用来在设备层面调整内容的首选工具

2 合理地使用Resources系统

在下面两种特殊情况中,Resources系统会很有用,而且不会影响开发体验:

2.1Resources系统简单易用的特点使其非常适合用于快速开发原型。不过,当项目进入正式开发阶段时,应该停止使用Resources文件夹。

2.2Resources文件夹可以用于处理一些简单的内容:

2.2.1在项目的整个生命周期中都被使用的内容

2.2.2非内存密集型内容(解释:内存里并不保存,每次使用都去Load,动态加载方式)

2.2.3不太可能添加补丁或者不受平台和设备影响的内容

2.2.4用于最小化引导的内容

第二种情况包括用于持有预制体的MonoBehaviour单例、包含第三方配置数据的ScriptableObject容器等。

2.3 Resources的序列化

当项目被构建时,所有名为Resources的文件夹中的所有Asset和Object都会合并到同一个序列化文件中。这个序列化文件中还含有元数据(Metadata)和索引(Indexing)信息,类似于AssetBundle。正如AssetBundle文档中所描述的那样,这个索引中包含了一个用于将给定Object名称转换为恰当的File GUID和Local ID的序列化查找树,同时它也用于定位在序列化文件中偏移了指定字节数的Object。

在大多数平台上,用于查找的数据结构是平衡查找树,其时间复杂度为O(nlog(n))。因此,索引加载时间随Resources文件夹内Object数量而增长的速度高于线性增长。

加载Resources文件这一操作无法跳过,它会在应用程序启动显示不可交互的启动画面(Splash Screen)时执行。在一台低端设备上,初始化一个包含10000个资源文件的Resources系统要花费几秒的时间,然而在Resources文件夹中的这些Object很多都不会在应用程序的第一个Scene中使用到,完全没有必要加载。

本帖抄自:Unity资源管理(二)-Resources文件夹_Arvin的博客-CSDN博客

自己额外领悟内容:

1.资源文件不要放到Resources文件,而放到AB里;

2.Resources文件打在应用包里,会增加包体大小和加载速度,影响用户下载速度和点击打开应用后的加载时间。

3.不支持热更新,因为打在应用包里了,想热更新还得放到AssetBundle里

免责声明:文章转载自《unity resources文件夹作用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PAL/NTSC 制电视广播技术有关知识--FPGA函数(三)闭包函数与装饰器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IOS AudioServicesPlaySystemSound 后台锁屏播放

AudioServicesPlaySystemSound  想在锁屏后台播放报警提示音。 添加了UIBackgroundModes,audio,官方审核不通过! IOS的闹钟是怎么实现的,锁屏不能播放声音?原来是用了notification方法。 http://zhangmingwei.iteye.com/blog/1831378 notification...

Unlocker(强力删除文件工具) 1.9.2 汉化绿色版

软件名称: Unlocker(强力删除文件工具) 1.9.2 汉化绿色版软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 58KB图片预览:软件简介:Unlocker是一个强力删除文件或文件夹的工具,可以删除任何文件,即使文件被占用、锁定,也照删不误,同类的工具中,综合易用性、功能...

WPF入门-使用C#创建简单应用

本文,你将熟悉在使用VS2019开发应用程序时可使用的许多工具、对话框和设计器。将创建一个“Hello World”应用程序、UI设计器、添加代码并调试错误。 先决条件: 安装Visual Studio 2019(16.3或者更高版本)。本文环境是16.8 一、创建项目   1、打开VS2019,   2、在‘开始’窗口,选择‘创建新项目’:      3...

速看,APP测试之ADB最全指南!

大家好,我是coco小锦鲤我又来了 我又带着希望和爱来了 ​今天介绍ADB环境搭建及常用的ADB命令 ADB全称Android Debug Bridge, 是android sdk里的一个工具,目的是起到调试桥的作用,用这个工具可以直接操作管理android模拟器或者真实的andriod设备(手机),是客户端测试常用的辅助工具。 借助adb工具,我们可以管...

【FLASH教程】Adobe Flash CS4 官方中下载及安装

http://yaorao.16789.net/index.asp?ActionX=ReadArt&NewsID=2021330 Adobe Flash CS4 官方中文版的下载及安装说明          一、下载:[Adobe Flash CS4官方简体中文版]       软件大小:1.26G    软件安装要求:内存 1G     电驴或...

Linux 安装 Oracle 客户端、 sqlldr 和 sqluldr2

  前阵子 hive 接口机故障导致重装了系统,原先所有的配置信息焕然一新,主机系统装好后,发现和 数据库的连接失败了,也无法通过 sqluldr sqluldr2 和 Oracle 进行文件交互了,今天的任务就是 把这个环境整好,辛苦一天也算是完成任务,作为新手,记录一下,方便以后使用; 1、安装 Oracle 客户端 首先:查询 Oracle 版本:...