一、导入插件
在window-package搜索 ADdressables导入即可。
二、设置模型资源
1、直接把预制体拖拽到初始默认的Group里
2、选中资源文件,在Inspector
窗口中勾选Addressable
,它也会自动添加到默认的Group
中
另外预制体的资源名字可以自定义,例如这一个就可以直接修改为 WaiXingJianCe
上面两种方式设置预制体都会进入到Local Group组里,也就是默认组
当然你也自己创建其他Group,我这里创建了一个放置远程加载资源的组命名为Remote Group,另一个是存放场景的组命名为SceneGroup。然后手动把对应的资源拖拽到组里。
三、设置AA Settings
如果热更就勾选 Build Remote Catalog
存储路径设为Remote
加载路径设为你服务器的路径

四、设置Profiles路径
主要设置RemoteLoadPath的路径,也就是你要远程加载的路径
五、设置远程加载包
你新建一个Group,就会生成对应的一个文件。刚才新建了一个Remoto Group,也就生成了一个名为Remoto Group的文件。我们可以通过修改文件来设置他的加载方式(本地或远程)。每个组都需要设置一下Build Path和Load Path。
Build Path:是组文件打包存放到的地址,选择RemotoBuildPath
Load Path:是加载组文件资源的地址,选择RemotoLoadPath
Compression:压缩方式
另外一个SceneGroup组对应的路径和设置同理。
六、打包Addressable资源
Play Mode Scripts:选择Use Existing Build
七、 把打包生成的远程资源包上传到服务器
本地资源打包到的路径:
项目文件名\Library\com.unity.addressables\StreamingAssetsCopy\aa\WebGL\WebGL
打包压缩的时候也会一块打包出来
远程资源打包到的路径:
项目文件名\ServerData\WebGL
这里选择的服务器是腾讯云服务器--->使用对象储存--->创建一个Bucket--->把文件全部拖拽进去。并设置好跨域,如下图所示
切记,不要给每个文件随便设置自定义头部,只需要添加一个Content-Type就行,不要添加Content-Encoding:gzip,如下图所示
上传以后,点击文件详情,此文件的路径地址,去掉地址后的该文件名所得的地址就是上面要设置的RemoteLoadPath,直接复制过去即可。
八、代码加载
通过prefabName加载资源 prefabName就是设置的名字,如刚才那个 WaiXingJianCe
public void CreateObj(string prefabName)
{
Addressables.LoadAssetAsync<GameObject>(prefabName).Completed += (handle) =>
{
if (handle.Status == AsyncOperationStatus.Succeeded)
{
GameObject prefab = handle.Result;
Instantiate(prefab);
}
};
}
通过AssetReference引用加载资源
public AssetReference prefabRef;
void Start()
{
spherePrefabRef.LoadAssetAsync<GameObject>().Completed += (handle) =>
{
GameObject prefabRef = handle.Result;
Instantiate(prefabRef);
};
}
远程加载场景
public void LoadScene(string sceneName)
{
StartCoroutine(DoLoadScene(sceneName));
}
IEnumerator DoLoadScene(string SceneName)
{
var handle = Addressables.LoadSceneAsync(SceneName);
if (handle.Status == AsyncOperationStatus.Failed)
{
Debug.LogError("场景加载异常: " + handle.OperationException.ToString());
yield break;
}
while (!handle.IsDone)
{
float progress = handle.PercentComplete;
slider.value = progress; //进度条
jindu.text = (progress * 100).ToString() + " %"; // 进度提示文字
yield return null;
}
jindu.text = "100%";
Debug.Log("场景加载完毕");
}
//释放资源
public void UnloadResources()
{
//Addressables.Release(Boxs); //Release释放不需要实例化资源
Addressables.ReleaseInstance(Boxs); //ReleaseInstance释放实例化资源
}
九、热更
点击Build里UPdate a Previous Build
选择对应文件下的平台名称的文件夹,点击Bin,覆盖掉
如果有改变的,那么远程文件储存地址(项目文件名\ServerData\WebGL)就会有更新,把更新的热更包也上传到服务器上即可。
自己使用aa插件的经历,保存下载,方便以后自己观看,有不对的地方谦虚的请教。