[Unity实战]Mirror网络与Addressable场景管理

前言

很遗憾,Mirror包括UNET的场景管理不支持Addressables。我做手机游戏,需要实现服务器广播场景切换,但主程序没有场景,热更代码和资源都在AB包里。我已经在Google上搜索了一段时间,没有找到有用的解决方案。

Reddit上的某人建议使用Fishnet,它支持Addressables。但这在项目进行到一半的时候是不可能的。所以我自己动手开始改NetworkManager。后来考虑了一下,寻思抽出来做一个demo开源,真的希望能帮助/启发那些也在找解决办法苦苦挣扎的人。

https://github.com/Shepherd0619/MirrorAddressablesDemo

说实话,只要你知道Mirror如何管理场景,改造就不会很复杂。

我把所有的自定义脚本和2个演示场景(源自TanksDemo)放在了_Project文件夹下。

目前能发现的是原先拖拖乐的OnlineScene和OfflineScene我没做支持,但这个我感觉一般都不会用那个东西。

最终效果如图:

1. Host/Server:

2. 客户端侧: 

实现

如果你希望自己将Addressables实现到Mirror的场景管理中,你需要按照以下步骤进行操作,这也是我实现过程的概述:

1. Editor下右键空白处使用Mirror的模板创建自己的NetworkManager。(如果你已经有一个,请跳过此步骤。)

2. 将'loadingSceneAsync'的类型更改为'AsyncOperationHandle'。

public static new AsyncOperationHandle<SceneInstance> loadingSceneAsync;

3. 重写/覆盖场景管理代码块下的几乎所有函数,包括但不限于ServerChangeScene、OnClientSceneChanged、ClientChangeScene、OnClientSceneInternal和UpdateScene。

PS:我们主要用Addressable替换使用SceneManager的代码行。例如:

loadingSceneAsync = Addressables.LoadSceneAsync(newSceneName);

4. 需要注意的一点是'UpdateScene'函数调用的NetworkClient.AddPlayer。由于loadingSceneAsync现在是一个结构体,你不能将其设置为null,并且在加载完成后,需要一段时间让loadingSceneAsync.IsValid()变为false。因此,我将结构体设置为default,以防止多次调用FinishLoadScene。

5. 现在应该可以运行了,不要忘记将你的场景添加到Addressables Group中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/393407.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity VR项目3DUI:人物头部旁“说话框”,功能:1.永远朝向相机 2.打字效果 3.UI不会被模型遮挡 4.切换位置 5.文字自动根据内容扩充

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神不吝指教&#xff01; 文章目录 前言一、UI搭建1.创建基节点2.创建Canvas3.添加永远看向相机代码4.创建UI背景&#xff0c;设置相关操作1.锚点设置2.添加组件&#xff1a;Vertical Layout Group、Content Size Fitter…

上海冷链配送新篇章 华鼎冷链科技以卓越服务餐饮品牌

在快速发展的上海餐饮连锁行业中&#xff0c;冷链运输作为保障食品安全与品质的关键环节&#xff0c;正迎来前所未有的发展机遇与挑战。华鼎冷链科技作为该领域的佼佼者&#xff0c;正引领着上海乃至全国冷链运输行业的新风尚。 华鼎冷链科技的成功并非一蹴而就。首先&#xff…

视频融合技术

三维视频融合技术遵循数字孪生多源数据融合的原则&#xff0c;比视频窗口、矩阵更加直观高效&#xff0c;省去了人脑理解空间的时间&#xff0c;可有效提升数字孪生城市在物联感知操作、虚实融合交互等方面的能力&#xff0c;动静一体、虚实结合&#xff0c;让三维场景“动起来…

MATLAB基础应用精讲-【数模应用】配对样本Wilcoxon检验(附MATLAB、R语言和python代码实现)

目录 知识储备 常用的统计假设检验的方法 算法原理 什么是Wilcoxon符号秩检验? 何时使用Wilcoxon符号秩检验 适用条件 SPSS-符号秩检验 一统计理论 二实例分析 三拓展知识 SAS --配对样本Wilcoxon符号秩检验 SPSSAU 配对样本Wilcoxon检验案例 1、背景 2、理论 …

SQL注入sqli-labs-master关卡一

本文环境搭建使用的是小皮&#xff0c;靶机压缩包&#xff1a;通过百度网盘分享的文件&#xff1a;sqli-labs-php7-master.zip 链接&#xff1a;https://pan.baidu.com/s/1xBfsi2lyrA1QgUWycRsHeQ?pwdqwer 提取码&#xff1a;qwer 下载解压至phpstudy的WWW目录下即可。 第一…

无缝协作的艺术:Codigger 视频会议(Meeting)的用户体验

在当今数字化的时代&#xff0c;远程协作已经成为工作和学习中不可或缺的一部分。然而&#xff0c;远程协作也面临着诸多挑战&#xff0c;如沟通不畅、信息同步不及时、协作工具的复杂性等。而 Codigger 视频会议&#xff08;Meeting&#xff09;作为一款创新的工具&#xff0c…

计算机的错误计算(五十四)

摘要 回复网友关于正确计算计算机的错误计算&#xff08;五十一&#xff09;与&#xff08;五十二&#xff09;中所述案例时的 3点注意事项。 问&#xff1a;对于计算机的错误计算&#xff08;五十一&#xff09;中的案例 &#xff0c;由&#xff08;五十二&#xff09;知&a…

数据结构第九讲:二叉树

数据结构第九讲&#xff1a;二叉树 1.实现链式结构二叉树1.1二叉树的节点结构1.2创建二叉树节点1.3前中后序遍历1.3.1前序遍历1.3.2中序遍历1.3.3后序遍历1.3.4总结 1.4二叉树结点的个数1.4.1错误示范1.4.2实现方法 1.5二叉树叶子结点的个数1.6二叉树第k层结点的个数1.7二叉树的…

计算机语言-CSP初赛知识点整理

历年真题 [2020-CSP-J-第2题] 编译器的主要功能( ) A. 将源程序翻译成机器指令代码 B. 将源程序重新组合 C. 将低级语言翻译成高级语言 D. 将一种高级语言翻译成另一种高级语言 [2021-CSP-J-第1题] 以下不属于面向对象程序设计语言的是&#xff08;&#xff09;。 A. C B. Pyt…

CLOS架构

CLOS Networking CLOS Networking 是指使用 Clos 网络拓扑结构&#xff08;Clos Network Topology&#xff09;进行网络设计的一种方法。该方法是由贝尔实验室的工程师 Charles Clos 在1950年代提出的&#xff0c;以解决电路交换网络的可扩展性和性能问题。随着现代计算和网络…

P33-模拟实现字符串相关函数

模拟实现strcpy strcpy函数是C语言中的字符串拷贝函数&#xff0c;用于将一个字符串复制到另一个字符串中。 函数原型如下&#xff1a; char* strcpy(char* destination, const char* source);参数说明&#xff1a; destination&#xff1a;目标字符串的指针&#xff0c;用于存…

北大和鹏城实验室联合推出的图像视频统一多模态大模型Chat-UniVi(CVPR 2024)

Chat-UniVi: Unified Visual Representation Empowers Large Language Models with Image and Video Understanding 论文信息 paper&#xff1a;CVPR 2024 code&#xff1a;https://github.com/PKU-YuanGroup/Chat-UniVi 训练130亿大模型仅3天&#xff0c;北大提出Chat-UniVi…

Tomcat 漏洞

一.CVE-2017-12615 1.使用burp抓包 把get改成put jsp文件后加/ 添加完成后访问 木马 然后木马的网址 在哥斯拉测试并且添加 添加成功 然后我们就成功进去啦、 二.弱口令 点击后输入默认用户名、密码&#xff1a;tomcat/tomcat 登陆之后上传一个jsp文件 后缀改成war 然后访问我…

android compose设置圆角不起作用

进度条progress设置背景圆角不起作用&#xff1a; 源码&#xff1a; Composablefun CircularProgress(modifier: Modifier, vm: TabarCmpViewModel?) {if (vm?.showLoading?.value ! true) returnBox(modifier modifier.background(Color(0x99000000)).defaultMinSize(minW…

【深度学习】【语音TTS】OpenVoice v2,测评,中英文语料,Docker镜像,对比GPT-SoVITS、FishAudio、BertVITS2

https://github.com/myshell-ai/OpenVoice/blob/main/docs/USAGE.md 实际体验OpenVoice v2的TTS效果。 文章目录 环境启动 jupyter代码代码分析主要模块和功能测试一些别的中文和中英文混合总结优点缺点对比GPT-SoVITS、FishAudio、BertVITS2使用我的Docker镜像快速体验OpenVo…

4.7.深层循环神经网络

深层循环网络 ​ 就是更深了&#xff0c;因为之前的网络都只有一层隐藏层&#xff0c;弄多一点 ​ 我们将多层循环神经网络堆叠在一起&#xff0c;通过对几个简单层的组合&#xff0c;产生了一个灵活的机制。上图展示了一个具有 L L L个隐藏层的深度循环神经网络&#xff0c;每…

【C++】STL | vector 详解及重要函数的实现

目录 前言 总代码 vector类框架建立&#xff08;模板与成员变量&#xff09; 构造、析构、swap 与 赋值重载 构造 析构 swap 赋值重载 reserve 扩容&#xff08;重要&#xff01;&#xff01;&#xff09;、size、capacity operator[ ]重载 insert 插入 逻辑讲解 i…

Oracle认证1Z0-071线上考试注意事项

目录 一、前言二、回顾过往战绩第一次 裸考&#x1f412;第二次 背题库硬考&#xff01;&#x1f412;第三次 软件卡住&#xff0c;寄&#xff01;&#x1f648;第四次 汇总纠错&#xff0c;通过&#xff01;&#x1f31a; 三、考试流程四、考试注意事项1. 是否需要科学上网2. …

探索四川财谷通抖音小店:安全与信赖的购物新体验

在数字经济蓬勃发展的今天&#xff0c;抖音平台凭借其庞大的用户基础和强大的内容生态&#xff0c;逐渐成为了电商领域的一股不可忽视的力量。其中&#xff0c;四川财谷通抖音小店作为这一浪潮中的佼佼者&#xff0c;不仅以其丰富的商品种类和独特的品牌魅力吸引了众多消费者的…

Java多线程的单例设计模式 多种实现方法

目录 前言 饿汉式 懒汉式 Double_check volatile double_check Holder方式 枚举 前言 单例设计模式GOF23中设计模式中最常用的设计模式之一, 单例设计模式提供了多线程环境下的保证唯一实例性的解决方案, 虽然简单, 但是实现单例模式的方式多种多样, 因此需要从多个维度去…