本地模拟服务器加载
1、创建一个Profiles,将Remote设为Editor Hosted
2、在Addressables Group窗口将Profile设为Local Test
3、将某个Asset Groups设为Remote加载
4、Build资源
5、打开本地模拟服务器
Addressables Hosting 窗口是 Addressable 提供的一个内置本地服务器工具,用于在开发阶段快速测试远程资源加载功能,无需搭建外部服务器环境。
Window=>Asset Management=>Addressables=>Hosting
勾选Enable启动服务器
6、编写加载资源代码进行测试
可以在Hosting窗口看到有加载记录
成功啦!!!
远程服务器加载
操作步骤
1、搭建服务器
参考该链接搭建IIS服务器
2、创建一个Profiles,将Remote设为Custom
需要自定义配置Remote.LoadPath,格式是IIS服务器的ip地址加端口号
3、在Addressables Group窗口将Profile设为Remote Test
3、将某个Asset Groups设为Remote加载
4、在切换Profile之后最好先Clear Build Cache
4、Build资源
5、将远程打包资源复制到服务器中
找到项目根目录的ServerData文件夹,将该资源拷贝到服务器上
6、补充:如果在网页中双击.bunle文件出现
需要对.bundle文件进行MIME类型配置,否则Addressable无法访问
7、编写加载资源代码进行测试
注意
1、Use Asset Bundle Cache启用时,下载的 Asset Bundle 会被缓存到本地存储。下次加载相同资源时可以直接从本地缓存读取,无需重新下载。在测试是否是从远程服务器加载时,可以取消勾选进行测试。
2、在切换从本地加载Profile切换到远程加载Profile时,发现资源加载还是加载旧的路。
需要在加载资源之前进行,Addressable初始化检查更新
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
public Image img;
private void Start()
{
CheckForUpdates();
}
public async Task CheckForUpdates()
{
// 初始化Addressables
await Addressables.InitializeAsync().Task;
// 检查catalog更新
var checkHandle = Addressables.CheckForCatalogUpdates(false);
var catalogs = await checkHandle.Task;
if(catalogs != null && catalogs.Count > 0)
{
Debug.Log($"发现{catalogs.Count}个更新");
// 更新catalog
var updateHandle = Addressables.UpdateCatalogs(catalogs);
var locators = await updateHandle.Task;
}
Addressables.LoadAssetAsync<Sprite>("Assets/Icons/icon_prop_2.png").Completed += (asset) =>
{
img.sprite = asset.Result;
};
}
}
3、如果有报下图中的错误,可以尝试勾选Project Setttings=>Player=>Other Settings=>Allow downloads over HTTP