Unity-Addressable工具的使用

一、导入插件

在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插件的经历,保存下载,方便以后自己观看,有不对的地方谦虚的请教。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值