Unity之NetCode多人网络游戏联机对战教程(9)--NetworkAnimator组件
文章目录
- 前言
- NetworkAnimator
- Animator的Trigger属性
- 服务器权威模式(Server Authoritative Mode)
- 客户端权威模式 (Owner Authoritative Mode)
- 学习文档
前言
这个组件是NetCode常用的组件之一,NetworkAnimator
跟NetworkTransform
一样,用来同步信息,NetworkAnimator
是用来同步动画的。
NetworkAnimator
NetworkAnimator
组件为提供了如何在网络会话期间同步动画的基本示例。动画状态与加入现有网络会话的玩家同步,并与在动画状态更改之前已连接的任何客户端同步。
加入现有网络会话的玩家将与以下内容同步:
- 所有Animator的当前属性和状态。
- 除了Animator
trigger
属性。这些仅与已连接的客户端同步。
- 除了Animator
- 任何正在进行的过渡
- 已连接的玩家将与Animator的更改同步:
- 状态
- 过渡
- 属性
- NetworkAnimator仅同步自上一帧以来发生更改的属性值。
- 由于
trigger
类似于event
,当将Animator属性设置为true时,它将始终同步。
NetworkAnimator
可以以两种权威模式运行:
- 服务器权威(默认):服务器启动动画状态更改。
- 拥有者仍然可以调用
NetworkAnimator.SetTrigge
。
- 拥有者仍然可以调用
- 客户端权威:客户端所有者启动动画状态更改。
Animator的Trigger属性
Animator
的Trigger
属性类型基本上不过是一个布尔值,当设置为true时,在Animator
组件处理完触发器后将自动重置为false。通常,触发器用于启动Animator层状态之间的过渡。从这个意义上说,可以将Trigger
看作是信号"事件的开始"的一种方式。由于Trigger
属性具有这种独特的行为,因此要通过NetworkAnimator.SetTrigger
方法设置触发器值。
注意: 如果使用
Animator.SetTrigger
设置Trigger
属性,那么这不会与非所有者客户端同步。
服务器权威模式(Server Authoritative Mode)
NetworkAnimator
的默认设置是服务器权威模式(Server Authoritative Mode)
。在服务器权威模式下,任何在服务器端设置(触发器)或检测到的(层、状态或任何Animator属性的更改,不包括触发器)的动画状态更改都将与所有客户端同步。由于服务器发起对Animator状态更改的任何同步,与NetworkAnimator相关联的NetworkObject的所有者客户端可能会滞后大约完整的往返时间(RTT)。下面是一个时序图来展示这一点:
在上面的图表中,客户端可能会向服务器发送一个RPC,告诉服务器玩家正在执行某种可能改变玩家动画的操作(包括设置触发器)。在这种情况下,客户端向服务器发送一个RPC(一半RTT),服务器处理RPC,NetworkAnimator(服务器端)检测到相关的Animator状态更改,然后所有客户端(包括所有者客户端)都与更改同步。
- 服务器权威模型的优势:
- 如果运行一个普通的服务器(非主机),这个模型有助于减少所有客户端动画之间的同步延迟。
- 服务器权威模型的缺点:
- 主机将始终“稍微领先”于所有其他客户端,这可能对您的项目是一个问题或不是一个问题。
- 客户端所有者在执行动作(移动、拾取物品、导致Animator状态更改的任何操作)时会经历延迟。
客户端权威模式 (Owner Authoritative Mode)
通常,项目设计(或个人偏好)可能要求所有者立即更新到任何Animator状态更改。最典型的原因是为本地玩家提供即时的视觉(动画)反馈。要创建一个以所有者为权威的NetworkAnimator
,您需要创建一个从NetworkAnimator
派生的新类,重写NetworkAnimator.OnIsServerAuthoritative
方法,并在覆盖的OnIsServerAuthoritative
方法中返回false,就像下面提供的示例一样:
using UnityEngine;
using Unity.Netcode.Components;public class OwnerNetworkAnimator : NetworkAnimator
{protected override bool OnIsServerAuthoritative(){return false;}
}
这个写法就是跟之前的
ClientNetworkTransform
是一样的。
观察所有者为权威的NetworkAnimator的时序,在下面的图表中,您可以看到尽管所有者客户端获得了“即时的视觉动画响应”,但非所有者客户端最终落后于所有者客户端大约一个完整的往返时间(RTT),而主机将落后于所有者客户端的一半RTT。
在上面的图表中,显示了所有者客户端有一个Animator状态更改,被NetworkAnimator(OwnerNetworkAnimator)
检测到,它自动将服务器与更改的状态同步。服务器在本地应用了这些更改,然后将此状态更改广播给所有非所有者客户端。
- Owner authoritative mode优点:
- 所有者能够即时获得Animator状态更改的视觉反馈,为本地玩家提供更流畅的体验。
- Owner authoritative mode缺点:
- 非所有者客户端的动画大约滞后于所有者客户端一个完整的往返时间(RTT)。
- 主机的动画大约滞后于所有者客户端的动画半个往返时间(RTT)。
学习文档
https://docs-multiplayer.unity3d.com/netcode/current/components/networkanimator/
相关文章:
Unity之NetCode多人网络游戏联机对战教程(9)--NetworkAnimator组件
文章目录 前言NetworkAnimatorAnimator的Trigger属性服务器权威模式(Server Authoritative Mode)客户端权威模式 (Owner Authoritative Mode)学习文档 前言 这个组件是NetCode常用的组件之一,NetworkAnimator跟NetworkTransform一样…...
iceoryx之Roudi
目录...
.Net(C#)常用转换byte转uint32、byte转float等
1、byte转String Encoding.ASCII.GetString(byte[]); 2、base64string转byte byte[]Base64Decoder.Decoder.GetDecoded(string); 3、byte转UInt16 方法一 (UInt16)(bytes[0] * 256 bytes[1]) 方法二 (UInt16)((bytes[0] << 8) | bytes[1]); 方法三 字节序要对…...
windows快捷方式图标变成空白
今天突然有客户说应用程序快捷方式图标变成了空白,就研究了一下,网上找了一下很多都说是什么图标缓存有问题,试过之后发现并不能解决问题。 然后发现用户的文件上都一把黄色的小锁的标志,查了一下说是文件属性里面设置加密之后就会…...
【Linux系统编程十九】:(进程通信)--匿名管道/模拟实现进程池
【Linux系统编程十九】:匿名管道原理/模拟实现进程池 一.进程通信理解二.通信实现原理三.系统接口四.五大特性与四种情况五.应用场景--进程池 一.进程通信理解 什么是通信? 通信其实就是一个进程想把数据给另一个进程,但因为进程具有独立性…...
【全网首发】2023年NOIP真题
目录 前言 真题 结尾 前言 NOIP题目了解一下,后续有可能会出讲解,题目全部来自于洛谷 真题 第一题:词典 第二题:三值逻辑 第三题:双序列扩展 第四题: 天天爱打卡 结尾 大家可以把你的预期分数打在评论…...
【Linux网络】从原理到实操,感受PXE无人值守自动化高效批量网络安装系统
一、PXE网络批量装机的介绍 1、常见的三种系统安装方式 2、回顾系统安装的过程,了解系统安装的必要条件 3、什么是pxe 4、搭建pxe的原理 5、Linux的光盘镜像中的isolinux中的相关文件学习 二、关于实现PXE无人值守装机的四大文件与五个软件的对应关系详解 5个…...
Pandas+Matplotlib 数据分析
利用可视化探索图表 一、数据可视化与探索图 数据可视化是指用图形或表格的方式来呈现数据。图表能够清楚地呈现数据性质, 以及数据间或属性间的关系,可以轻易地让人看图释义。用户通过探索图(Exploratory Graph)可以了解数据的…...
k8s ingress高级用法一
前面的文章中,我们讲述了ingress的基础应用,接下来继续讲解ingress的一些高级用法 一、ingress限流 在实际的生产环境中,有时间我们需要对服务进行限流,避免单位时间内访问次数过多,常用的一些限流的参数如下&#x…...
C语言--从键盘输入10个数字放在数组中,并输出
用scanf读取数字的时候要注意,可以输入一个数字,按一下回车,输入一个数字,按一下回车,也可以一次性输入完10个数据。(中间可以用空格隔开,系统会自动识别) 输出一:每按下一个数字&am…...
SSL加密
小王学习录 今日摘录前言HTTP + SSL = HTTPSSSL加密1. 对称加密2. 非对称加密 + 对称加密3. 证书今日摘录 但愿四海无尘沙,有人卖酒仍卖花。 前言 SSL表示安全套接层,是一个用于保护计算机网络中数据传输安全的协议。SSL通过加密来防止第三方恶意截取并篡改数据。在实际应用…...
一个美观且功能丰富的 .NET 控制台应用程序开源库
推荐一个美观且功能丰富的 .NET 控制台应用程序开源库,从此告别黑漆漆的界面。 01 项目简介 Spectre.Console 是一个开源的 .NET 库,用于创建美观、功能丰富的控制台(命令行)应用程序。它提供了一组易于使用的 API,…...
DispatcherSynchronizationContext and Dispatcher
https://www.cnblogs.com/liangouyang/archive/2008/11/20/1337907.html SynchronizationContext提供一个自由线程的同步上下文,一个常用的用法是把UI线程的同步上下文保存起来,传给另一个线程,因为UI只能再UI线程中操作,在另外一…...
java类型属性set方法无法被赋值
前言 遇到一个基础的问题 方法设置属性值 失败 问题代码 有个内部类的User对象 分别使用 方式一和 方式二 设置User的属性值 发现方式一的属性并不能被设置成功 可以自行测试下 public class Test{public static void main(String[] args) {#方式一 User user new User();u…...
【2】SM2验签工具和RSA验签工具
0X01 前言 最近看了好多验签工具,感觉不是很好用,就自己造了个。 0x02 工具功能介绍 对SM2算法进行验签和RSA算分进行验签,签名值可以是base64,也可以是十六进制。 兼容各种输入。 0x03 工具使用 RSA 验签 SM2 验签 0x04 工具…...
Python (十一) 迭代器与生成器
迭代器 迭代器是访问集合元素的一种方式,可以记住遍历的位置的对象 迭代器有两个基本的方法:iter() 和 next() 字符串,列表或元组对象都可用于创建迭代器 字符串迭代 str1 Python str_iter iter(str1) print(next(str_iter)) print(next(st…...
通过maven命令手动上传jar私服Nexus
Nexus3在界面上传组件时报: Ext.JSON.decode(): Youre trying to decode an invalid JSON String: 查找了很多资料,都没有解决。有哪位大佬知道的评论告诉一下,万分感谢。 于是换成maven命令上传: mvn deploy:deploy-file -Dgr…...
记一次用jlink调试正常,不进入调试就不能运行的情况
一、概述 我开机会闪烁所有指示灯,但是重新上电时,指示灯并没有闪烁,就像"卡死"了一样。 使用jlink的swd接口进行调试,需要多点几次运行才能跳转到main函数里面。 调试模式第一次点击运行,暂停查看函数堆栈…...
搞科研、写论文,如何正确使用GPT?AIGC技术解析、提示词工程高级技巧、AI绘图、ChatGPT/GPT4应用
目录 专题一 OpenAI开发者大会最新技术发展及最新功能应用 专题二 AIGC技术解析 专题三 提示词工程高级技巧 专题四 ChatGPT/GPT4的实用案例 专题五 让ChatGPT/GPT4成为你的论文助手 专题六 让ChatGPT/GPT4成为你的编程助手 专题七 让ChatGPT/GPT4进行数据处理 专题八 …...
Java实现的插件化策略模式
Java实现的插件化策略模式 目录结构实现BaseDealAnno.java(注解)BasePluginEnum.java(枚举)BaseDealFactory.javaContextBaseDealListener.java(核心类)BaseDealHandler.java(接口)BaseAudioService.java(可扩展多个)验证目录结构 com.demo.mytest ├── strategy │ ├──…...
【jvm】MinorGC、MajorGC和FullGC
目录 一、说明二、年轻代GC(Minor GC)触发机制三、老年代GC (Major GC/Full GC)触发机制四、Full GC触发机制 一、说明 1.jvm调优的主要目的是GC的时间少一些,用户线程执行的时间多一些 2.主要侧重于MajorGC和FullGC,这两块的GC产生的暂停时间比MinorGC产…...
Redis:java和SpringBoot中使用Redis
目录 Jedis操作Redis6SpringBoot整合Redis Jedis操作Redis6 Jedis是java开发的操作redis的工具包。 引入maven依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.2.1</ve…...
Java的XWPFTemplate word生成列表
Java的XWPFTemplate工具类导出word.docx的使用_xwpftemplate 语法_youmdt的博客-CSDN博客 如果是表格的列表参考上面这篇文章即可,比较复杂的列表遍历暂时还没找到方法,只能手动创建表格了 上面是模板,非常简单,以为我们是要自己创…...
基于RFID的自动化仓储设备研发项目可行性研究报告
一、项目概况 基于RFID的自动化仓储设备研发项目,是深圳市飞鸟国际供应链股份有限公司在公司有色金属供应链一站式服务的基础上,针对有色金属供应链的仓储环节进行的研发。 多年来,公司一直坚持以“科技金融”为核心的未来发展战略…...
ajax异步传值以及后端接收参数的几种方式
异步传值 第一种呢,也是最简单的一种,通过get提交方式,将参数在链接中以问号的形式进行传递 // 前台传值方法 // 触发该方法调用ajaxfunction testAjax(yourData) {$.ajax({type: "get", // 以get方式发起请求url: "/yo…...
千年TGS服务器日志报错如何解决
大家在修改sdb文件,建议使用sdb修改器。注意:每个文件,每个逗号都很重要;只要其中哪部分少一个逗号或多一个逗号,都很容易发生错误。 一常见 TGS1000.LOG 错误类型,因不同的错误,错误中括号“&…...
读取Json BugFix
遇到的错误如下所示: 遇到的错误如下所示:File ~/miniconda3/lib/python3.9/json/decoder.py:353, in JSONDecoder.raw_decode(self, s, idx)344 """Decode a JSON document from s (a str beginning with345 a JSON document) and retu…...
【Gradle构件工具深度学习】
Gradle构件工具深度学习 1. 课程大纲1.1 Gradle入门1.2 与Idea整合1.3 Gradle进阶 2. 常见项目构建工具3. 安装gradle 1. 课程大纲 1.1 Gradle入门 基本介绍、常用指令、项目目录、项目应用 1.2 与Idea整合 Groovy语法、整合IDEA、搭建web工程、项目部署 1.3 Gradle进阶 生命周…...
Attention Transformer
来源老师课件,方便以后复习。 课参考链接: http://jalammar.github.io/illustrated-transformer/ 之前的知识链接: 【知识链接】WGAN Transformer Vit Swin-Transformer Swin-Unet Res-Vit TransUNet MAE Bra ADDA 打分函数: 多头…...
[最新榜单] 智能手机数据恢复的 10 款最佳应用
当手机上的数据消失时,这让您感到非常难过。 由于事故而突然丢失重要的聊天记忆、照片和其他您想保留的东西的悲伤。 如果它没有被淹没,您可以使用数据恢复应用程序修复它。 在本文中,我们将解释一些有用的数据恢复应用程序。 数据恢复应用…...
修改CentOS默认mail发件名称
修改CentOS默认的邮件发件名称 要修改CentOS默认的邮件发件名称,可以按照以下步骤进行操作: 打开终端或SSH连接到CentOS服务器。使用root或具有管理员权限的用户登录。编辑postfix配置文件。在终端中输入以下命令: vi /etc/postfix/main.cf…...
Lesson 03 C/C++内存管理
C:渴望力量吗,少年? 文章目录 一、C内存管理方式1. new/delete操作内置类型2. new和delete操作自定义类型 二、operator new与operator delete函数三、new和delete的实现原理1. 内置类型2. 自定义类型 四、内存泄漏1. 什么是内存泄漏2. 内存泄…...
【SA8295P 源码分析】127 - 摄像头 GMSL1、GMSL2 加串-解串器 常用寄存器配置整理(正在更新中......)
【SA8295P 源码分析】127 - 摄像头 GMSL1、GMSL2 加串-解串器 常用寄存器配置整理 一、MAX96712 解串器基础配置1.1 配置链路 GMSL 协议 及 传输速率1.1.1 配置GMSL1、GMSL2协议 及 配置使能 Link A/B/C/D [0x6]:GMSL2_A、LINK_EN_A1.1.2 配置GMSL2 传输速率 3 Gbps / 6 Gbps …...
Docker与Kubernetes结合的难题与技术解决方案
文章目录 1. **版本兼容性**技术解决方案 2. **网络通信**技术解决方案 3. **存储卷的管理**技术解决方案 4. **安全性**技术解决方案 5. **监控和日志**技术解决方案 6. **扩展性与自动化**技术解决方案 7. **多集群管理**技术解决方案 结语 🎈个人主页:…...
CVE-2021-42287CVE-2021-42278 域内提权
倘见玉皇先跪奏:他生永不落红尘 本文首发于先知社区,原创作者即是本人 前言 网络安全技术学习,承认⾃⼰的弱点不是丑事。只有对原理了然于⼼,才能突破更多的限制。拥有快速学习能力的白帽子,是不能有短板的…...
springcloud整合nacos实现服务注册
Nacos是一个开源的分布式系统服务和基础设施解决方案,用于实现动态服务发现、配置管理和服务治理。它可以帮助开发人员和运维团队更好地管理微服务架构中的服务实例、配置信息和服务调用。 Nacos提供了服务注册与发现、动态配置管理、服务路由和负载均衡等功能&…...
redis实现布隆过滤器
思路: 用于快速检查一个元素是否属于某个集合中。它可以快速判断一个元素是否在一个大型集合中,且判断速度很快且不占用太 多内存空间。原理是使用一组哈希函数,将元素【映射】成数组中的【索引位置】,就是将元素转成他在索引中的…...
山西电力市场日前价格预测【2023-11-19】
1.日前价格预测 预测说明: 如上图所示,预测明日(2023-11-19)山西电力市场全天平均日前电价为591.63元/MWh。其中,最高日前电价为1500.00元/MWh,预计出现在16:45~20:45。最低日前电价为268.57元/MWh&#x…...
深眸科技革新升级OCR技术,与AI视觉实现有效融合赋能各行业应用
OCR即光学字符识别,是通过扫描仪或工业相机等电子设备检查打印的字符,并通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。 目前,随着机器视觉和人工智能技术的进一步升级,OCR技术实…...
性能测试知多少---系统架构分析
之前有对性能需求进行过分析,那篇主要从项目业务、背景等角度如何抽丝剥茧的将项目的需求抽离出来。在我们进行需求的时候也需要对被测项目的架构有一定的认识,如果不了解被测系统的架构,那么在后期的性能分析与调优阶段将无从下手。 简单系…...
【观察】华为:数智世界“一触即达”,应对数智化转型“千变万化”
毫无疑问,数智化既是这个时代前进所趋,也是国家战略所指,更是所有企业未来发展进程中达成的高度共识。 但也要看到,由于大量新兴技术的出现,技术热点不停的轮转,加上市场环境的快速变化,让数智化…...
我的 2023 秋招总结,拿到了大厂offer
2023秋招小结 前言 & 介绍 作为2024年毕业的学生,在2023年也就是今年秋招。 现在秋招快结束了,人生可能没有几次秋招的机会(应该就一次,最多两次吧哈哈),也有一点感悟,所以小小总结一下。…...
力扣labuladong——一刷day36
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣230. 二叉搜索树中第K小的元素二、力扣538. 把二叉搜索树转换为累加树三、力扣1038. 从二叉搜索树到更大和树 前言 首先,BST 的特性大家应该…...
解锁编程潜能:探索亚马逊CodeWhisperer,打造编程世界的声音引导者
文章目录 前言一、什么是 Amazon CodeWhisperer?二、如何使用CodeWhisperer?安装CodeWhisperer插件配置CodeWhisperer生成注释和文档 总结 前言 随着CHATGPT的一声巨响,大语言模型已经成为了一个备受瞩目的创新应用。亚马逊云科技作为全球领…...
01_面向对象高级_static
Static static 的中文意思是"静态",它可以修饰成员变量、成员方法 1. Static 修饰成员变量 static 修饰的成员变量,也称之为"类变量"类变量它是属于类的,与类一起加载,在内存中只有一份,会被类…...
双写绕过 [极客大挑战 2019]BabySQL 1
打开题目 随便输入账号密码 根据报错信息可知这是单引号的字符型注入 那我们试试万能密码 1 or 11 页面报错 1 or 11 页面报错 而且根据报错内容显示是没有我们注入上去的or的 那我们就试试 1 order by 3 # 页面报错,根据报错显示页面过滤掉了or和by 那我们…...
uni.app 使用 mixins 技术统一注入小程序页面分享到好友,分享朋友圈功能
uni.app 使用 mixins 技术统一注入小程序页面分享到好友,分享朋友圈功能 1. 在utils文件夹下创建share.js2. 为所有页面挂载3.单独页面使用 1. 在utils文件夹下创建share.js export default{data(){return {// 默认全局分享内容mixinsShare:{title:首页, //分享标题path:/pag…...
贝叶斯AB测试
AB测试是用来评估变更效果的有效方法,但很多时候会运行大量AB测试,如果能够在测试中复用之前测试的结果,将有效提升AB测试的效率和有效性。原文: Bayesian AB Testing[1] 随机实验,又称AB测试,是行业中评估因果效应的既…...
信息检索与数据挖掘 | 【实验】检索评价指标MAP、MRR、NDCG
文章目录 📚实验内容📚知识梳理📚实验步骤🐇前情提要🐇MAP评价指标函数🐇MRR 评价指标函数🐇NDCG评价指标函数🐇调试结果 📚实验内容 实现以下指标评价,并对…...
读书笔记:彼得·德鲁克《认识管理》第24章 管理岗位的设计与内容
一、章节内容概述 管理岗位应该始终基于必要的任务,应该是一份实实在在的工作,为企业的整体目标做出可见的(如果不是可衡量的话)贡献,还应该具有尽可能广泛的权威和范围。管理者应该接受绩效目标而不是上级领导 的指导和控制。在设计管理岗位…...