版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络开发基础
第1页11.1多人联网——MultiplayerNetworking
多人联网的工作比较琐碎、复杂,世界各地各种各样的计算机上不同的工程实例之间的同步与通信会出现许多问题。在Unity内置的多人联网功能(MultiplayerNetworking)与高级应用程序接口(HighLevelAPI,HLAPI)的帮助下,创建多人在线工程会变得更容易。
11.1.1NetworkManager网络管理器网络管理器是一个多人游戏的核心部件,管理着多人游戏的各个方面。它的功能包括游戏状态管理、派生管理、场景管理、调试信息、自定义化等功能,如图11-1所示。对于高级用户,可以从NetworkManager中产生一个类来定制化这个组件。NetworkManager网络管理器中的常用方法如表11-1所列。
图11-1网络管理器设置界面第2页
11.1.1NetworkManager网络管理器
方法名方法含义方法名方法含义GetStartPosition
在场景中找到游戏对象的起始位置
IsClientConnEcted
检查NetworkManager是否有客户端并已连接到服务器OnClientConnect连接到服务器时在客户端调用OnClientDisconnect从服务器断开连接是调用客户端OnClientError在发生网络错误时调用客户端OnClientNotReady当服务器告诉客户端不在准备好时,调用客户端OnClientSceneChanged当场景已加载完成时,当场景加载由服务器启动是,调用客户端OnStartClient在客户端启动时调用的回调方法OnStarthost当主机启动时调用的回调方法OnStartServer当客户端启动时调用的回调方法0nStopClient当客户端停止时调用的回调方法OnStophost当主机停止时调用的回调方法OnStopServer当客户端停止时调用的回调方法表11-1 网络管理器的部分成员方法第3页11.1.1NetworkManager网络管理器游戏状态管理网络多人游戏可以以三种模式运行——作为客户端、作为专用服务器、或者作为同时作为客户端和服务器的“主机”。无论游戏开始于客户端、服务器还是主机,都要设置使用网络地址和网络端口,如图11-2所示在客户端模式下,游戏尝试连接到指定的地址和端口。在服务器或主机模式下,游戏监听指定端口上的传入连接。如果您使用的是网络管理器HUD,它会根据播放器选择的选项自动告诉网络管理器从哪个模式开始。网络管理器HUD将在下文介绍。图11-2网络管理器设置地址和端口第4页11.1.1NetworkManager网络管理器2.派生管理使用网络管理器来管理来自预制件的网络游戏对象的子对象(网络实例化)。大多数游戏都有一个代表玩家的预置,所以网络管理器有一个玩家预置槽。用播放器预置这个插槽。有一个玩家预置集时,玩家GameObject会自动从游戏中的每个用户产生。这适用于托管服务器上的本地播放器和远程客户端上的远程播放器。必须将网络身份组件附加到播放器预置。一旦分配了一个玩家预置,即可以开始游戏作为一个主机,并看到玩家游戏对象产生子对象。停止游戏破坏球员GameObject。如果构建并运行游戏的另一个副本,并将其作为客户机连接到本地主机,则网络管理器将显示另一个玩家GameObject。当停止那个客户端时,它就破坏了玩家的游戏对象。第5页11.1.1NetworkManager网络管理器3.场景管理大多数游戏都有不止一个场景。至少,除了实际玩游戏的场景之外,通常还有标题屏幕或开始菜单场景。网络管理器被设计成以适用于多人游戏的方式自动管理场景状态和场景转换的功能。当服务器或主机启动时,加载在线场景,连接到该服务器的任何客户端都被指示也加载该场景。此场景的名称存储在网络场景名称属性中。当网络停止时,通过停止服务器或主机或客户端断开连接,加载离线场景。这使得游戏可以在从多人游戏中断开时自动返回到菜单场景。当网络场景管理处于活动状态时,任何对游戏状态管理函数(如NetworkManager.Starthost()或NetworkManager.StopClient())的调用都会导致场景更改。通过设置场景并调用这些方法,开发人员可以控制多人游戏的流程。需要注意的是场景更改会导致前一个场景中的所有生成出的游戏对象被销毁。第6页11.1.1NetworkManager网络管理器4.起始位置若要控制在何处生成玩家游戏对象,可以使用NetworkStartPosition组件。要使用这些,请将NetworkStartPosition组件附加到场景中的游戏对象上,并将游戏对象定位到理想的起始位置。也可以在场景中添加任意多个起始位置。NetworkManager会检测到场景中的所有开始位置,当它生成每个玩家游戏对象实例时,NetworkManager便会使用其中一个实例的位置和方向。5.调试管理Unity提供在运行时获取有关游戏的信息的工具。这个信息对于测试多人游戏是极为重要的的。当游戏运行在编辑器中的播放模式时,网络管理器在运行时显示有关网络状态的附加信息。这包括:网络连接、活动游戏对象在具有网络标识组件的服务器上、具有网络标识组件的客户端上的活动游戏对象、客户端对等体。第7页
11.1.2NetworkManagerHUD
11.1.2NetworkManagerHUD网络管理器HUD是一个快速启动工具来帮助开始建立多人游戏直线距离,而不必首先建立游戏创作/连接/连接的用户界面。它可以直接跳转至游戏编程,这就意味着可以在随后的开发计划建立自己的这些控件的版本。下面的是网络管理器HUD组件的界面,如图11-3所示。图11-3网络管理器HUD设置界面第8页
11.1.2NetworkManagerHUD
方法名说明ShowRuntimeGUI勾选这个选项来显示网络管理器HUD界面在运行时。这使您可以显示或隐藏其快速调试GUIHorizontalOffset设置水平像素HUD的偏移,从屏幕的左边缘测量。GUIVerticalOffset设置垂直像素HUD的偏移,从屏幕的顶部边缘测量。表11-2 网络管理器HUD的属性及功能网络管理器HUD有两种基本模式:LAN(局域网)模式和红娘模式。这些模式匹配两种常见类型的多人游戏。LAN模式是用于创建或加入托管的局域网上的游戏(即,连接到同一网络的多个计算机),和红娘模式是用于创建,查找和通过网络连接的游戏第9页
11.1.3NetworkIdentity网络身份标识
11.1.3NetworkIdentity网络身份标识NetworkIdenity是多人联网系统的高级API。它挂载到游戏对象上成为该对象在多人网络中的唯一标识。NetworkIdenity标识使联网系统能更快的找到游戏对象,方便其实例化此对象。玩家游戏对象必须拥有一个NetworkInstanceId组件才能挂载NetworkManager上。下面是NetworkIdenity组件的界面,如图11-4所示。图11-4NetworkIdenity组件界面第10页
11.1.3NetworkIdentity网络身份标识
方法名说明ServerOnly
勾选此复选框确保只在服务器上产生游戏对象而不是在客户端上。
LocalPlayerAuthority勾选此复选框,将此游戏对象的控制权限授予拥有它的客户端。表11-3 NetworkIdenity的属性及功能挂载有NetworkIdenity组件的游戏对象在运行时能看到一个预览窗口,这个预览窗口显示了例如场景ID、资源ID等网络跟踪信息来方便开发人员调试,如图11-5所示。预览窗口中的部分属性信息含义如表11-4所列。第11页
11.1.4NetworkTransform联网变换组件
11.1.4NetworkTransform联网变换组件如果想通过网络对物体的运动、旋转等操作进行同步,就要用到NetworkTransform组件了。需要注意的是,NetworkTransform组件只能同步被生产成出来的游戏对象。NetworkTransform组件的界面如图11-6所示,界面中的属性含义如表11-5所列。图11-5NetworkTransform界面第12页
11.1.4NetworkTransform联网变换组件
属性含义属性含义NetworkSendRate设置网络每秒的更新速率TransformSyncMode选择该对象的同步方式SyncNone不进行同步SyncTransform根据Transform组件进行同步SyncRigidbody2D根据Rigidbody2D组件同步SyncRigidbody3D根据Rigidbody3D组件同步SyncCharacterController根据角色控制器同步MovementThreshold设置对象在不更新同步下可以移动的距离SnapThreshold设置阈值,更新移动超过阈值时对象将不再平稳运动InterpolateMovementFactor使用它来启用和控制内插同步运动RotationAxis定义哪个旋转轴或哪个轴应该同步SyncAngularVelocity勾选此复选框以同步附加刚体部件的角速度。表11-4 NetworkTransform的部分属性及含义第13页
11.1.5NetworkBehavior类
11.1.5NetworkBehavior类MultiplayerNetworking系统中,所有包含网络功能的脚本都需要继承一个基类,那就是NetworkBehavior类。NetworkBehavior是一个MonoBehaviour类,所以需要使用联网功能时应该继承这个类而不是MonoBehaviour。它允许开发人员调用网络操作,接收各种回调,并从服务器到客户端自动同步状态。挂载继承NetworkBehaviour类的脚本需要游戏对象上的NetworkIdty组件。在一个游戏对象上可以有多个继承NetworkBehaviour类的脚本。第14页
11.1.6多人高层API及架构
11.1.6多人高层API及架构统一的多人高层API(HLAPI)是一种用于构建多人能力的统一游戏系统。它是建立在较低的水平之上传输实时通信层,并处理了许多所必需的多人游戏的共同任务。而在传输层支持任何类型的网络拓扑结构中,HLAPI是一个服务器系统权威;虽然它允许参与者之一是客户端,并在同一时间内服务器,因此不需要专用服务器进程。与协同工作的互联网服务,这允许多人游戏中播放通过互联网与开发商很少的工作。HLAPI是在一个新的命名空间内构建成Unity的一组新的网络命令:UniTyeEngulink。它的重点是易用性和迭代开发,并提供对多人游戏有用的服务,例如:消息处理程序、通用高性能串行化、分布式对象管理、状态同步、网络类的服务器、客户端、连接等。第15页
11.2UnityNetwork开发案例
11.2.1场景搭建(1)首先创建一个工程项目,并命名为“BNUNetwork”。将资源包的资源目录下第11章的“BNUNetwork”工程文件下的“Model”导入进项目文件夹下,然后将预制件“terrain”拖曳进场景中,并调整位置和大小。(2)单击GameObject→CreateEmpty创建一个空的GameObject对象,将其重命名为“NetworkManager”。并为“NetworkManager”添加“NetworkManager”组件和NetworkManagerHUD”组件,如图11-8所示。(3)然后单击Assets→Model→CharacterWarrior→Prefab,,将“CharacterWarrior”预制件拖入到场景中。点击“AddComponent”为其添加“NetworkIdentity”“NetworkTransform”以及角色碰撞器“CharacterController”三种组件,如图11-9所示。(4)在“Assets”下创建一个叫“player”的预制件,然后把“CharacterWarrior”预制件拖曳到新创建的预制件中,并将原来拖入场景中的“CharacterWarrior”删除。(5)导入“Easytouch”插件,并添加虚拟摇杆按钮。按步骤HedgehogTeam→EasyTouch→Extensions→Addingjoysticks向游戏对象目录中添加虚拟摇杆按钮。第16页
11.2UnityNetwork开发案例
图11-8图11-9第17页
11.2UnityNetwork开发案例
11.2.2脚本开发(1)新建一个名为“Script”的文件夹,然后在该文件夹中新建一个
C#脚本,并命名为“PlayerMove”。然后双击脚本,开始代
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉安职业技术学院《工程材料实验》2023-2024学年第一学期期末试卷
- 调解协议书范本范文
- 渔光互补光伏电站项目35kV送电线路施工塔架安装施工工艺流程
- 吉安幼儿师范高等专科学校《财务会计分岗核算实验》2023-2024学年第一学期期末试卷
- 惠州卫生职业技术学院《课堂设计与评价》2023-2024学年第一学期期末试卷
- 惠州经济职业技术学院《工程测量》2023-2024学年第一学期期末试卷
- 惠州城市职业学院《数据挖掘综合课程设计》2023-2024学年第一学期期末试卷
- 农村青年创业养殖方案
- 建筑行业施工员实操培训方案
- 工期延误补救措施
- 让生命之花绽放光彩——“生命教育”主题班会ppt
- 并网光伏电站调试报告
- 预计体育课运动生理负荷脉搏曲线图
- 夹套反应釜-课程设计
- (完整版)复工检查表
- 基于PLC在污水处理厂中的控制系统设计
- 南京双京KBZ200400馈电开关说明书
- 管道流量分配规律设计性实验
- 护理工作量统计表
- 第01章量子力学基础
- 五金材料进货清单表
评论
0/150
提交评论