Unity网络--NetworkManager

2023-11-03

NetworkManager组件

可Add Component添加Network Manager组件,
在这里插入图片描述
或可在脚本中派生一个类继承自NetworkManager。

public class MyUnet : NetworkManager

勾选Dont Destory On Load–场景切换过程中不销毁。

场景管理

offline Scene–当网络停止时(服务器或主机停止了),由客户端断开,离线场景将被加载。使得游戏断开时自动回到菜单场景。
online Scene–当服务器或主机启动时,加载该场景。任何连接到服务器的客户端也会加载这个场景。这个场景的名称存储在networkSceneName属性中。

动态更改场景

通过调用方法NetworkManager.ServerChangeScene()。

预制体

大多数游戏都有一个预设体作为主角对象,在NetworkManager中留有Player Prefab来放置玩家预设体
在这里插入图片描述
玩家对象将自动网络实例化物体在每个用户的游戏中,可以互相看到对方。要注意的是预设体必须添加Network Identity组件。
在这里插入图片描述
除了玩家预设体以外,其他预设体例如子弹,技能等等。也可添加Network Manager组件中。添加到列表中的预设体会自动被注册。
在这里插入图片描述
其他想要动态产生的预设体也必须在ClientScene中注册,可以使用ClientScene.RegisterPrefab()函数。

HUD界面

在这里插入图片描述

自定义用户界面按钮函数

//创建主机
public void CreateHost()
{
  //创建端口号
  NetworkManager.singleton.networkPort=7777;
  //创建一个主机
  NetworkManager.singleton.StartHost();
}
//创建客户端
public void CreatClient()
{
  //创建端口号
  NetworkManager.singleton.networkPort=7777;
  //需要地址
  //创建一个临时变量--获取文本框中的值
  string temp_address=GameObject.Find("..").GetComponent<InputField>().text;
  NetworkManager.singleton.networkAddress=temp_address;
  NetworkManager.singleton.StartClient();
}

出生位置

控制玩家在哪里出生,可以使用NetworkStartPosition组件。
在这里插入图片描述

用户自定义

服务器/主机上调用的方法有:
//当有客户端连接时调用
public virtual void OnServerConnect(NetworkConnection conn);

//当有客户端断开时调用
public virtual void OnServerDisconnect(NetworkConnection conn)
{
  NetworkServer.DestroyPlayersForConnection(conn);
}

//当有客户端准备时调用
public virtual void OnServerReady(NetworkConnection conn)
{
  NetworkServer.SetClientReady(conn);
}

//当生成对象到客户端时调用
public virtual void OnServerAddPlayer(NetworkConnection conn,short playerControllerId)
{
  var player=(GameObject)GameObject.Instantiate(playerPrefab,playerSpawnPos,Quaternion.identity);
  NetworkServer.AddPlayerForConnection(conn,player,playerControllerId);   
}

//当玩家从客户端诋毁时调用
public virtual void OnServerRemovePlayer(NetworkConnection conn,short playerControllerId)
{
  PlayerController player;
  if(conn.GetPlayer(playerControllerId,out player))
  {
    if(player.NetworkIdentity !=null && player.NetworkIdentity.gameObject!=null)
    {
      NetworkServer.Destory(player.NetworkIdentity.gameObject);
    }
  }
}

//当服务器发生错误时调用
public virtual void OnServerError(NetworkConnection conn,int errorCode);

在客户端调用的方法:
//当连接到服务器时调用
public virtual void OnClientConnect(NetworkConnection conn)
{
  ClientScene.Ready(conn);
  ClientScene.AddPlayer(0);
}

//当断开服务器时调用
public virtual void OnClientDisconnect(NetworkConnection conn)
{
  StopClient();
}

//当网络问题时调用
public virtual void OnClientError(NetworkConnection conn,int errorCode);

//告诉服务器没准备好时调用
public virtual void OnClientNotReady(NetworkConnection conn);

Matchmaker会调用的方法:
//当有一个比赛创建
public virtual void OnMatchCreate(CreateMatchResponse matchInfo);

//当接受到比赛列表时调用
public virtual void OnMatchList(ListMatchResponse matchList);

//当加入比赛时调用
public virtual void OnMatchJoined(JoinMatchResponse matchInfo);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity网络--NetworkManager 的相关文章

  • Unity用Vuforia做AR实现脱卡效果

    有时在识别目标丢失后我们仍希望虚拟物体能够出现在摄像机前 或者到一个特定的位置 我们能对其进行操作 这就是脱卡功能 自带的脱卡功能应该是ExtendedTracking 允许模型在识别图丢失的时候还存在 位置不变 在丢失的时候的位置 这样也
  • UnityLuaMvvM Lua 带通知的Mode类

    实现数据更新UI自动刷新的核心代码 欢迎关注https gitee com xiongks UnityMVVM mode function modeType local obj obj modeType modeType obj filds
  • Unity3D之Rigidbody

    目录 常用的Rigidbody属性和方法 rigidbody AddForce rigidbody AddTorque rigidbody velocity rigidbody angularVelocity rigidbody Sleep
  • 游戏开发unity编辑器扩展知识系列:修改纹理资源的TextureType

    需要用TextureImporter导入资源 调用如下代码 TextureImporter importer TextureImporter TextureImporter GetAtPath path importer textureTy
  • Unity 资源加载卸载过程

    什么时候才是UnusedAssets 看一个例子 Object obj Resources Load MyPrefab GameObject instance Instantiate obj as GameObject Destroy in
  • Unity单元测试流程

    文章目录 环境 流程 1 创建一个存放 单元测试程序集 的目录 2 打开 Test Runner 窗口 3 选择单元测试模式 4 创建单元测试程序集 5 创建测试脚本 6 运行测试 环境 Unity 2020 3 3f1 流程 1 创建一个
  • UE5学习笔记(一)——界面功能梳理&第一天知识点记录

    学习UE5的第一步 是软件安装 默认是安装好的 由于安装没有太多技术含量 所以就没有专门做记录 这里有个注意点 虚幻引擎是整合在Epic games launcher中的 也就是说开发引擎内嵌在游戏平台上 打个比方 就是如果你要下unity
  • 蒙特卡洛积分、重要性采样、低差异序列

    渲染公式 渲染的目标在于计算周围环境的光线有多少从表面像素点反射到相机视口中 要计算总的反射光 每个入射方向的贡献 必须将他们在半球上相加 为入射光线 与法线 的夹角 为方便计算可以使用法线向量和入射向量 单位化 的乘积表示 对于基于图像的
  • unity网络资源导入

    1 找到需要导入的文件 这里导入fbx格式 2 打开unity界面 在Asset目录下创建文件夹FBX 将需要导入的fbx预制体或整个文件夹拖入创建的FBX文件夹下 3 选中需要的fbx预制体并拖至场景中 4 双击定位到当前物体 5 找到需
  • 1.17 从0开始学习Unity游戏开发--场景切换

    前面的所有文章我们都在一个固定的游戏场景内进行开发 在最开始介绍场景这个概念的时候就已经提及 这个场景可以是一张地图 或者是一个对战房间等等 所以显然这个场景可以有多个 并且可以从一个场景切换到另外一个场景 那么在Unity中如何进行场景切
  • UnityVR--组件3--Line Renderer--线性渲染

    目录 线性渲染组件简介 绘制线条Line Renderer组件介绍 绘制拖尾Trail Renderer组件介绍 应用1 使用Line Renderer绘制线段 应用1实现 使用系统工具或自定义工具绘制线段 应用2 Trail Render
  • Unity3d 插件 系列——DoTweenPro介绍(图文详细+案例)

    Unity3d 插件 系列 DoTweenPro介绍 图文详细 案例 前言 一 DoTweenPro简介 二 DoTweenPro安装 三 DoTweenPro主要组件 1 DoTweenAnimation 2 DoTweenPath 3
  • Unity中UI框架的使用1-添加面板、显示Loading页面

    其中BasePanel和Canvas都是挂在面板的预制物上的 1 导入我们的UI框架 本篇文章中有用的是两个UIPanelType NUIManager和NBasePanel 会放在文章最后供大家使用 2 先将我们做好的Panel设置成预制
  • VLC for unity 插件如何使用

    VLC for unity 插件如何使用 先去下载一个VLC播放器 安装完成后 然后导入插件链接https download csdn net my 这个插件我的另一个上传资源里有 或者到商店去下载 这个插件链接下载完是一个txt文档 里面
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B
  • Unity旋转以及万向锁问题

    我之前研读了一些关于unity旋转相关的博客 一直想抽个时间写个总结 但是由于实习太忙一直没有写 趁着今天请了假晚上有时间把这段时间一些学习心得写出来 Unity inspector面板中的Rotation 在unity中 想必大家最先接触
  • unity3d切换场景Application.LoadLevel(1)含义

    Application LoadLevel 1 场景ID
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • 游戏开发常见操作梳理之NPC任务系统

    多数游戏存在任务系统 接下来介绍通过NPC触发任务的游戏制作代码 using System Collections using System Collections Generic using UnityEngine
  • 游戏开发中常见系统梳理之背包系统的实现一

    游戏中几乎都存在大大小小的背包系统 接下来我将讲述背包系统具体是如何实现的 完整源码 以下是使用unity NGUI实现 使用txt配置的方法 后续更新UGUI Json实现的背包系统敬请期待 背包中的物品我们常常将其制作成预设体 通过改变

随机推荐

  • 软件测试知识点总结(五)——动态测试

    一 白盒测试 白盒 测试又称为结构测试或逻辑驱动测试是一种按照程序内部逻辑结构和编码结构设计测试数据并完成测试的一种测试方法 一般分为静态测试和动态测试 测试方法 l 语句覆盖 要求每一条语句至少执行一次 l 判定覆盖 要求每一条分支都要至
  • How To Create Token and Initial Coin Offering Contracts Using Truffle + Zeppelin Solidity

    Token contracts are hot Token crowd sales aka Initial Coin Offers ICO are hotter There have been a lot going in terms of
  • Linux内存回收入口

    概述 内存回收主要是有kswapd异步回收和direct reclaim同步回收两种入口 其中逻辑非常复杂 本文主要只概要描述不同回收场景下内核设计的主要思想 源码细节不同版本有不少区别 具体的分析后续会有专门的文章分析 页面回收常识 页面
  • 汇编复习

    http www ruanyifeng com blog 2018 01 assembly language primer html https www jianshu com p f7434bb2ce09
  • centos7.5 navicat连接mysql的报错:2003-Can't connect to MySQL server on 'x.x.x.x' (10038)解决方法的总结

    我在网上查询了N多Blog总结解决方法如下 1 可能是mysql数据库给远程连接mysql的账号 比如root 没有权限 那么先执行如下命令 GRANT ALL PRIVILEGES ON TO root IDENTIFIED BY T2w
  • (原创)开发使用Android studio所遇到的一些问题总结

    1 Android studio下载链接地址 无需翻墙 包含先行版和正式版 推荐使用正式版bug少 http www androiddevtools cn 2 第一次安装避免成功先不要急着打开应用 先取消打开 到安装目录下 bin idea
  • Java - Apache Mina 简单示例

    一 关于 Apache MINA 是一个网络应用程序框架 它对Java中的socket和NIO进行了有效和清晰的封装 方便开发人员开发TCP UDP程序 从而抛开在使用原始的socket时需要考虑的各种繁杂而又烦人问题 线程 性能 会话等
  • 计算机竞赛 深度学习 机器视觉 车位识别车道线检测 - python opencv

    0 前言 优质竞赛项目系列 今天要分享的是 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖 适合作为竞赛课题方向 学长非常推荐 学长这里给一个题目综合评分 每项满分5分 难度系数 3分 工作量 3分 创新点 4分 更多资料 项目分享
  • 很多人问中国网络安全行业怎么样?这篇文看完让你彻底了解中国网络安全行业的全景

    一 前言 经过近3个月的调研收集 安全牛2020年中国网络安全行业全景图 基于2019年度申报数据 正式发布 本次发布的全景图 共分为16类一级安全领域 实际收录产品15类 100类二级细分领域 实际收录88类 共涉及313家国产网络安全企
  • kafka生产端TCP连接管理

    目录 前言 Kafka生产者程序 Kafka生产者客户端如何创建TCP连接 Kafka生产者客户端如何关闭TCP连接 总结 参考资料 前言 在网络层协议中 TCP作用在第四层传输层 Http协议作用在第七层最上层应用层 一个完整的网络传输
  • 一看就懂的JMeter操作流程

    JMeter的使 流程 简介 JMeter是 款在国外 常流 和受欢迎的开源性能测试 具 像LoadRunner 样 它也提供了 个利 本地Proxy Server 代理服务器 来录制 成测试脚本的功能 但是这个功能并不好 安装 设置语 O
  • Windows10更新22H2安装卡在61%的解决办法

    Windows10更新22H2安装卡在61 的解决办法 Windows10经常收到构建和修补程序 但与此同时 用户在尝试安装它们时会遇到一些奇怪的问题 有时 该过程以错误代码结束 但是在此 更新被卡在某个百分比上 无论您尝试继续更新过程有多
  • 上海版“新基建”方案发布 首批重大项目投资额约2700亿

    大数据产业创新服务媒体 聚焦数据 改变商业 数据猿报道 在5月7日举行的上海市政府新闻发布会上 上海市推进新型基础设施建设行动方案 2020 2022年 正式发布 行动方案 立足数字产业化 产业数字化 跨界融合化 品牌高端化 提出了指导思想
  • Vue中v-model和v-bind:value的区别

    以input为例 一 Vue中v model和v bind value的区别 1 v model HTML div div
  • STM32开发实例 基于STM32单片机的计步器

    一 系统设计 由 STM32F103C8T6单片机最小系统 ADXL345 L CD1602 显示屏 通过ADXL345检测震动和移动并完成计数 累加的步数会传输到LCD1602上进行显示 可以直观的观察自己的步数 二 硬件设计 系统内的主
  • Linux-进程调度相关的系统调用简介

    前言 内核版本 2 6 26 Linux提供了一个系统调用族 用于管理与调度程序相关的参数 这些系统调用可以用来操作和处理进程优先级 调度策略及处理器绑定 并且这些系统调用都包涵在C库中 也可用man手册查看 与调度策略相关的系统调用 系统
  • HTML 动态背景

    效果截图 GIF PNG Html页 div class container div class anitOut div div
  • CentOS7.4安装OpenVPN

    系统环境 root vpn cat etc redhat release CentOS Linux release 7 4 1708 Core 一 准备工作 root vpn yum y install openssl devel open
  • 如何编写你的第一个内核模块并用make编译,用内核命令加载到内核中去

    一 如何编写你的第一个内核模块 包含的头文件 这两个头文件是必须要添加的 基本头文件 include
  • Unity网络--NetworkManager

    NetworkManager组件 可Add Component添加Network Manager组件 或可在脚本中派生一个类继承自NetworkManager public class MyUnet NetworkManager 勾选Don