Unity资源管理(二)-Resources文件夹

Unity资源管理(二)-Resources文件夹

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

2.1 Resources系统的最佳实践

(不要使用它!)
强烈不建议使用Resources系统,原因如下:
●使用Resources文件夹将会使细粒度的内存管理变得更难
●对Resources文件夹的不恰当使用会导致应用程序构架和启动时间变长
●随着Resources文件夹数量的增加,在这些文件夹中管理Asset将会变得越来越难
●使用Resources系统会降低项目向不同平台提供定制内容的能立,并且导致项目无法进行增量内容更新
●AssetBundle变体是Unity用来在设备层面调整内容的首选工具。

2.2 合理地使用Resources系统

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

1.1Resources系统简单易用的特点使其非常适合用于快速开发原型。不过,当项目进入正式开发阶段时,应该停止使用Resources文件夹。
1.2Resources文件夹可以用于处理一些简单的内容:
●在项目的整个生命周期中都被使用的内容
●非内存密集型内容
●不太可能添加补丁或者不受平台和设备影响的内容
●用于最小化引导的内容

第二种情况包括用于持有预制体的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在打包时会根据不同的资源来源进行处理。其中,Unity自动打包资源会将在场景中直接使用到的资源自动打包到游戏中,这些资源会在场景加载时由Unity自动加载。这些资源只需放置在Unity工程目录的Assets文件夹下即可,程序无需关心它们的打包和加载,因此这些资源是静态加载的。而Resources资源是指在Unity工程的Assets目录下的Resources文件夹中的资源,不论是否被场景使用,都会被打包到游戏中,并可以通过Resources.Load方法进行动态加载。这种方式常用于开发过程中的资源加载,但缺点是资源直接打包到游戏包中,无法进行增量更新。至于AssetBundle资源,可以通过编辑器脚本将资源打包成多个独立的AssetBundle,与游戏包分离。可以使用WWW类来加载AssetBundle,这种方式非常灵活,可以用于分包发布或实现自动增量更新。因此,Unity在打包时会根据资源管理器中的资源来源进行处理,确保资源的正确打包和加载。\[1\] #### 引用[.reference_title] - *1* *2* [unity打包原理解析](https://blog.csdn.net/aooosss2012/article/details/73650088)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【游戏开发探究】Unity Addressables资源管理方式用起来太爽了,资源打包、加载、热更变得如此轻松...](https://blog.csdn.net/linxinfa/article/details/122390621)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值