当前位置: 首页 > news >正文

Unity之NetCode多人网络游戏联机对战教程(3)--NetworkObject组件讲解

文章目录

    • NetworkObject
      • Always Replicate As Root
      • Synchronization Transform
      • Active Scene Synchronization
      • Scene Migration Synchronization
      • Spawn With Observers
      • Dont Destroy With Owner
      • Auto Object Parent Sync
    • 后话


NetworkObject

为了复制任何Netcode感知属性或发送/接收RPCs,一个GameObject必须具有一个NetworkObject组件和至少一个NetworkBehaviour组件。任何与Netcode相关的组件,如NetworkTransform或具有一个或多个NetworkVariables或RPCs的NetworkBehaviour,都需要在相同的相对GameObject上(或在相关GameObject的父GameObject上)有一个NetworkObject组件。

当生成一个NetworkObject时,NetworkObject.GlobalObjectIdHash的值最初标识与客户端实例化的网络预制体资源相关联的对象,用于创建客户端本地的克隆。在本地实例化后,每个NetworkObject都分配一个NetworkObjectId,用于在网络中关联NetworkObject。例如,一个对等方可以说:“将此RPC发送到具有NetworkObjectId 103的对象”,每个人都知道它指的是哪个对象。当为NetworkObject分配一个唯一的NetworkObjectId时,它就在客户端上生成。

Always Replicate As Root

如果设置为true,该对象将始终在客户端作为根对象进行复制,而其父对象将被忽略。

Synchronization Transform

有时候,您可能希望使用NetworkObject来处理不需要同步transform的情况。您可能有一个在场景中放置的NetworkObject,纯粹用于管理游戏状态(或类似的用途),并且在生成时同步transform不是初始客户端同步的成本。要防止NetworkObject在生成时初始同步transform,请取消选中"Synchronize Transform"属性。默认情况下,此属性已启用(选中)。

Active Scene Synchronization

当实例化一个GameObject时,它会在当前活动的场景中被实例化。然而,有时您可能会发现希望更改当前活动的场景,并希望特定的NetworkObject实例自动迁移到新分配的活动场景。虽然您可以保持一个NetworkObject实例的列表或表,并编写代码/逻辑来将它们迁移到新分配的活动场景,但这可能会耗费时间,并根据项目的大小和复杂性变得复杂。处理这个问题的替代方法(也是推荐的方法)是通过启用/检查每个要自动迁移到任何新分配场景的NetworkObject的"Active Scene Synchronization"属性来处理。默认情况下,此属性处于禁用/未选中状态。

Scene Migration Synchronization

NetworkObject.ActiveSceneSynchronization类似,此属性将自动同步通过主机或服务器端的SceneManager.MoveGameObjectToScene迁移到场景中的客户端端NetworkObject实例。如果您希望将NetworkObject实例迁移到不是当前活动场景的特定场景中,这将非常有用。

Spawn With Observers

当设置为false时,NetworkObject将在初始时不会具有任何Observers(除了Server)。

Dont Destroy With Owner

是否销毁此对象,如果其所有者被销毁。如果设置为true,该对象的所有权将移交给服务器。

Auto Object Parent Sync

是否启用自动的NetworkObject父对象同步。


后话

官方文档教程:

  • https://docs-multiplayer.unity3d.com/netcode/current/basics/networkobject/

  • https://docs.unity3d.com/Packages/com.unity.netcode.gameobjects@1.6/api/Unity.Netcode.NetworkObject.html

http://www.lryc.cn/news/176502.html

相关文章:

  • 正点原子lwIP学习笔记——Socket接口UDP实验
  • 连接组学中的机器学习:从表征学习到模型拟合
  • 数据结构-----二叉树的创建和遍历
  • 【算法题】1333. 餐厅过滤器
  • linux脚本笔记
  • 目标检测YOLO实战应用案例100讲-面向路边停车场景的目标检测(中)
  • [论文笔记]Prefix Tuning
  • electron快速入门
  • C语言的stdio.h的介绍
  • 使用香橙派 在Linux环境中安装并学习Python
  • 如何开发物联网 APP?
  • 配置pytorchGPU虚拟环境-python3.7
  • Logic Pro X10.7.9(mac乐曲制作软件)
  • 第一部分:HTML5
  • Linux 基础入门
  • 【数据结构】插入排序:直接插入排序、折半插入排序、希尔排序的学习知识总结
  • Magic Battery for Mac:让你的设备电量管理变得轻松简单
  • nodejs+vue大学食堂订餐系统elementui
  • nat综合实验
  • 【iOS逆向与安全】好用的一套 TCP 类
  • Ubuntu Kafka开机自启动服务
  • c#实现单例模式的两种方法(饿汉式、懒汉式)
  • Git与Repo:开源开发的得力工具组合
  • centos7 添加网卡设置动态ip,修改网卡为任意名称
  • 计算机竞赛 深度学习人脸表情识别算法 - opencv python 机器视觉
  • nvm安装后node或npm不是内部或外部命令
  • Kafka数据可靠性保证
  • 基于R的linkET包qcorrplot可视化Mantel test相关性网络热图分析correlation heatmap
  • IOTDB的TsFile底层设计
  • MATLAB算法实战应用案例精讲-【人工智能】边缘计算(补充篇)