0x00 介绍NetWorkManager
网络管理器,用来控制多人游戏项目的状态,包括游戏状态管理、生成管理、场景管理,匹配以及允许访问调试信息。可以参考下(网上参考)面两张图片:
第一个案例是官方案例
- 基础实现篇(1-2)
- 拓展细化篇 (3)
第二个案例是一个简易的聊天室(4)
最近项目测试用到的,记录一下 ,通过两个案例让大家充分了解unet,希望对大家有所帮助。最终效果如图所示(因测试需求需创建新玩家时修改不同标签等数据,所以图中是代码生成玩家,稍后都会写到):
0x00 简介
-
首先说一下Network Manager HUD组件(即连接方式的UI选择框):
- LAN Host:选择后就相当于主机,并且也代表第一个玩家,等待别的玩家连接。
- LAN Client: 客户端,输入要连接的服务器连接即可。
- LAN Server Only:仅当做服务器,等待其他玩家连接。
-
[Command] 表示客户端向服务端发送的命令,在服务端执行
-
[SyncVar]用于标识序列化变量,实现变量同步
-
[SyncEvent]用于标识序列化事件,实现事件同步
-
[Client]表示只能在客户端调用
-
[ClientCallback]表示客户端执行的回调
-
[ClientRpc]表示服务端向客户端发送的命令,在客户端执行
0x01 创建NetWorkManager
- 首先创建一个GameObject。(自己命名如:_NetWorKManager)
- 添加NetworkManager和NetworkManagerHUD这两个组件。
如下所示:
因需求我是自己创建一个脚本,然后继承的NetWorkManager,稍后会仔细说道。
0X02 创建玩家
- 首先在Hierarchy面板新建一个胶囊体Capsule(样式自定义即可)重命名为:Player
- 给玩家添加NetWorkIdentity组件,并且将Local Player Anthority勾选。
- 如需同步和自定义玩家位置需挂NetWorkTransform组件(细化里面详细讲解)如图所示:
- 最后把玩家拖制为预制体,然后把预制体拖到NetwoekManager下的Spawn Info 的 PlayerPrefab中,将Hierrarchy中的Player删除即可。
- 给玩家添加脚本,自定义命名即可(例子为:PlayerController)首先来制作玩家的移动。(即wasd移动,直接上代码)