Unity3d 使用统一可寻址资产系统(Addressables)实现服务器资源热更新和资源版本管理等功能(含源码)

前言

上一篇介绍了“Unity3d 使用统一可寻址资产系统(Addressables)入门学习保姆级教程(含工程)”,对Addressables有了一定了解,加上基础的操作能简单上手。本篇将更深入的了解Addressables的强大功能,了解它是如何在资源热更和资源版本管理方面提高开发者的工作效率。本篇内容基于上一篇的工程demo继续修改。

场景搭建

场景中我们复制了两个人形模型,将其高度设置高一点,并将颜色修改为蓝色。修改了UI的提示文字等:
在这里插入图片描述

远程资源生成

将搭建好的场景“RemoteSceneNode”节点拖成预设:

在这里插入图片描述

右键> Create New Group > Packed Assets 新建远程资源的组,命名为“Remote Test Group”:
在这里插入图片描述

并修改远程资源组的加载和打包的位置设置:

在这里插入图片描述

添加预设到Remote Test Group:
在这里插入图片描述

Build > New Build >Default Build Script 开始打包资源:
在这里插入图片描述

等待打包完成后,在“工程目录\ServerData\StandaloneWindows64\”目录下有打包生成的文件:
在这里插入图片描述

自此资源的准备工作准备完毕。

加载与卸载资源

    public void LoadRemoteSceneNodes()
    {
    
    
        if (remotescenenode == null) {
    
    
            Debug.Log("开始加载服务器远程场景!");
            Addressables.LoadAssetAsync<GameObject>("RemoteSceneNode").Completed += OnRemoteLoaded;
        }
    }

    void OnRemoteLoaded(AsyncOperationHandle<GameObject> obj)
    {
    
    
        if (obj.Result != null)
        {
    
    
            remotescenenode = Instantiate(obj.Result, Vector3.zero, Quaternion.identity);
            remotescenenode.transform.localPosition = new Vector3(6.2f, 3.8f, 0);
            remotescenenode.transform.SetParent(null);
            Debug.Log("服务器远程场景加载完成!");
        }
    }

    public void DelRemoteSceneNodes()
    {
    
    
        if (remotescenenode != null)
            Destroy(remotescenenode);
        remotescenenode = null;
        Debug.Log("服务器远程场景卸载完成!");
    }

按本地资源包的编码形式实现远程资源的加载和卸载功能,除了名称不一致,其余基本是一致的。

试运行

运行程序效果后发现加载正常:
在这里插入图片描述

按理来说资源服务器都未搭建不能正常运行才对,这里是因为运行脚本的模式为:
Use Asset Database,本机快速测试使用本模式,这里需要测试服务器,所以选择第三个选项:
在这里插入图片描述

选择Use Existing Build后运行就报错了:
在这里插入图片描述

以上显示就是正常了,就证明我们需要配置资源服务器了。

Hosting配置

资源服务器可以使用hfs,或者其它的,商用项目可能需要谨慎选择,这时候我们只是测试所以这里我们使用了Addressables Hosting组件实现服务器配置,Window > Asset Management > Addressables > Hosting:
在这里插入图片描述

或者在Addressables Groups窗口内 Tools > Hosting Services 进入。

设置好端口号,还有服务器名称:
在这里插入图片描述

接下来就是勾选Enable选项启用。

在Addressables Profiles 新建一个配置项,命名为LocalHost,将远程加载地址(RemoteLoadPath)修改一下:
在这里插入图片描述

运行查看效果:
在这里插入图片描述

发现除了正常的功能外,还有了自带的资源服务器日志。

资源的更新

Addressables 可以提供了快速的资源更新功能,在Addressables Groups窗口Build > Update a Previous Build 即可,不过在这之前我们还得进行有点设置不然,功能是不正常的。

在Addressables Groups窗口 Tools > Inspect System Settings进入设置界面:
在这里插入图片描述

在设置界面内勾选Build Remote Catalog, 并且设置Build Path 和 Load Path 分别是远程资源的打包地址和加载地址:
在这里插入图片描述

修改后需要重新打一次包,我们将资源的材质球从蓝色修改成橙色,并更新打包:

在这里插入图片描述

等待打包完成后,我们的“ServerData\StandaloneWindows64”目录下多出了一个文件:

在这里插入图片描述

我们在运行程序,能看到修改的更新已经在程序中体现了:
在这里插入图片描述

demo源码

https://download.csdn.net/download/qq_33789001/86025980

猜你喜欢

转载自blog.csdn.net/qq_33789001/article/details/125723315