Unity 加载资源的几种方式

2023-12-27 13:02:40

1、Resources.Load?

Resources.Load 加载的资源必须放在??Resources 文件夹下。游戏打包时,Resources文件夹下文件会被全部压缩打包并进行加密,并且 Resources文件夹的目标将不存在,只能通过 Resources.Load 进行加载。

应用场景:

场景基本物体的加载

2、WWW(已弃用) 或 UnityWebRequest

WWW 或 UnityWebRequest 既可以加载本地的资源,也可以从服务端下载资源。

加载本地资源时,需要注意,由于打包后,工程目录会改变,所以一般把要通过该方式加载的资源放在 StreamingAssets 文件夹下。该文件夹打包后,目录可以通过 Application.streamingAssetsPath 获取,该文件夹下的资源打包时不会被压缩和加密。因此 该方式加载本地资源并不常用,或者把资源打成 AssetBundle 包,放在本地。

下载服务端资源时,一般也是服务端存放 AssetBundle 资源 或者 TextAsset 资源。

从服务端下载到的资源如果要持久保存在本地,可以使用 IO 的方式,写入到 Application.persistentDataPath 目录下

应用场景:

在场景加载完毕之后,其它非关键资源的加载,或者分批资源的加载。

例如《守望先锋》中,在游戏开始时只加载了场景模型 和 UI,音效、枪械模型等是通过在 服务端 下载的方式进行加载,可以减少游戏本体的大小。

也可以用于游戏的更新。

3、AssetBundle.LoadFromFile

用于加载本地的 AssetBundle。一般用于从之前在服务端下载保存到本地的 AssetBundle

应用场景:

更新资源的加载

4、关于 AssetBundle

在 Editor 模式下,在资源的视图中,给资源打上 AssetBundle 名称 和 标签

使用 BuildPipeline.BuildAssetBundles 可以将目录下的资源打包为 AssetBundle 包

使用 WWW 或 UnityWebRequest 或者 AssetBundl.LoadFromFile 或者 Resources.Load 加载到 AssetBundle 后。还需要通过 AssetDataBundle 对象调用 LoadAsset 方法,将 包 加载为具体的 资源类型对象。如果是 GameObject 对象,可以通过 Instantiate 在场景创建具体的 GameObject

使用 WWW 加载,可以通过 WWW对象的 assetBundle 字段,获取到加载的 AssetBundle

使用 UnityWebRequest,需要通过静态类 DownloadHandlerAssetBundle 的 GetContent 方法获取 AssetBundle,方法参数传入 UnityWebRequest 对象。

?喜欢就给个一键三连吧!我是爱编程的鱼,期待与你相遇

文章来源:https://blog.csdn.net/m0_69824302/article/details/135230412
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。