IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity3d 使用统一可寻址资产系统(Addressables)实现服务器资源热更新和资源版本管理等功能(含源码) -> 正文阅读

[游戏开发]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

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:55:11  更:2022-07-17 16:55:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:31:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码