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 对象。
?喜欢就给个一键三连吧!我是爱编程的鱼,期待与你相遇