Unity资源加载


相关博客:
https://blog.youkuaiyun.com/xinzhilinger/article/details/115408934
https://blog.youkuaiyun.com/u013628121/article/details/80373273

资源加载

Unity游戏引擎 加载Asset中资源的方式:Resources/AssetBundle/Addressables,

Resources

将需要加载到场景中的资源放在Asset目录下的Resources文件中,通过Unity提供的API加载资源。
创建命名为Resources的文件夹,将需要加载的资源放置于该文件夹下

Load:通过路径加载资源
LoadAll:加载该Resources下的所有资源
LoadAsync:异步加载资源,通过协程实现
UnloadAsset:卸载加载的资源
FindObjectsOfTypeAll:返回某一种类型的所有资源
UnloadUnusedAssets:卸载在内存分钟未使用的资源

Resources这种动态加载方式是只读的,在游戏打包后,无法对文件夹的内容进行修改
Resources.Load路径写法:不要加后缀名、Resources

AssetBundle

热更新。
通过AB包 进行音频资源的更新;
通过Lua语言 进行C#脚本的更新。

LoadAsset:从捆绑包中加载名为 name 的资源。
LoadFromFile:从磁盘上的文件同步加载 AssetBundle。
UnloadAllAssetBundles:卸载当前已加载的所有 AssetBundle。

Addressables

https://blog.youkuaiyun.com/linxinfa/article/details/122390621
Addressables的打包方式其实也是AssetBundle格式,只是在此基础上做了一层封装,方便进行管理(比如打包、加载、依赖等)。

内存管理:https://www.jianshu.com/p/99347f4b4967

### Unity 中的资源加载机制 在 Unity 中,资源加载过程主要包括五个阶段:资源定位、资源读取、资源解析、资源实例化以及资源卸载[^1]。 #### 资源定位 Unity 需要先确定所需资源的位置。这些资源通常位于项目的 `Assets` 文件夹内或是被打包成 AssetBundle 存储于本地或其他服务器上。对于内置资源管理器来说,只需提供相对路径即可完成定位;而对于 AssetBundle,则需指定确切 URL 或者文件名来获取特定 bundle。 #### 资源读取 一旦找到了目标资源的确切位置,下一步就是实际去读取该资源的数据。如果资源存在于硬盘驱动器中,则直接从磁盘读取;如果是通过网络分发的 AssetBundle,则还需要执行下载操作并可能对其进行解压处理。此过程中可能会遇到 I/O 性能瓶颈,因此建议优化访问模式以提高效率。 #### 资源解析 读入后的原始字节流需要被解释为具体的对象类型(比如材质球、模型网格)。这个转换工作由引擎内部自动完成,开发者无需关心具体细节。不过值得注意的是,在某些情况下手动控制序列化进程能够带来更好的灵活性和性能表现。 #### 资源实例化 经过上述几个步骤之后得到的对象只是处于未激活状态下的模板形式。为了能够在运行时环境中正常使用它们,必须调用相应 API 创建其活动副本。例如: ```csharp // 加载一个纹理资源 Texture2D texture; texture = Resources.Load<Texture2D>("Textures/MyTexture"); // 加载一个网格资源 Mesh mesh; mesh = Resources.Load<Mesh>("Models/MyMesh"); ``` 这段代码展示了如何利用 `Resources.Load<T>()` 方法快速简便地取得所需的图形资产,并将其赋值给变量以便后续使用。 #### 资源卸载 最后一步也是非常重要的一环——适时清理不再使用的资源有助于维持较低水平的应用程序占用率。可以通过 UnloadUnusedAssets 函数触发一次全局范围内的垃圾回收动作,从而清除那些已经失去引用关系的对象所占据的空间。 --- 除了掌握基本概念外,遵循一些最佳实践原则同样重要。减少 GameObject 数量及其上的组件数目可以有效降低渲染负担;预先计算复杂逻辑并将结果缓存起来供重复查询可节省大量 CPU 时间;合理规划依赖项规模避免不必要的传输成本等等都是值得考虑的方向[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值