Unity教程之-Unity5.1新的网络引擎UNET(八)UNET系统概括

 

继续上篇文章《Unity教程之-Unity5.1新的网络引擎UNET(六)UNET Multiplayer Lobby》,在Unity 的 网络系统,游戏有 一个服务器和多个客户端。当没有专用的服务器时,客户端之一扮演服务器的角色 — — 我们称之为此客户端“host”

UNET系统概括
host (主机)是一个服务器和 客户端在同一进程中。主机 将使用一种特殊的客户端被称为 LocalClient,而其他客户端是 RemoteClients。LocalClient 与(本地) 服务器通信 通过直接的函数调用和消息队列,因为它是同一进程中。它实际上与服务器共享一个 场景。RemoteClients 通过定期的网络连接与服务器进行通信。

网络系统的目标是 LocalClients 和 RemoteClients 的代码是相同的,所以开发者只需大部分时间想一种类型的客户端的。
Instantiate and Spawn

在Unity中,GameObject.Instantiate 创建新的Unity游戏对象。但与联网系统在一起, 对象必须也会“spawned” 要在网络上激活。这只能在服务器上,并且导致要在连接的客户端上创建对象。一旦对象被Spawning System生成,分布式的对象生命周期管理和状态同步。

Players, Local Players and Authority

在网络系统中,玩家对象都是特殊的。还有伴玩游戏,每个人的player 对象和 命令 都将路由 到该对象。一个人不能对另一个人的player对象调用命令 – 只有他们自己。所以是的“my” player 对象的概念。当添加一个player 和联系 把他们连接时,这个player对象就成为该玩家客户端上的“local player” 对象。那里是被设置为 true,并且回调在客户端上的对象调用的 OnStartLocalPlayer() 属性 isLocalPlayer。下图显示两个客户端和他们 local players.。

UNET系统概括
只是 “yours” 的player对象  将已设置了 isLocalPlayer 标志。这可以用于筛选  输入的处理,能够处理相机附件,或做任何其他客户端只应做为您的player的身边事。
除了 isLocalPlayer,player对象可以有 “local authority”.  这意味着其拥有者的客户端上的player对象是负责对象 — — 它有授权。最常用的是 控制运动,但也被使用其他的东西。NetworkTransform 组件明白这一点,并将从客户端发送移动,如果设置该选项。NetworkIdentity 有一个复选框用于设置 LocalPlayerAuthority。

对于非玩家对象如敌人,还有没有相关联的客户端,所以权威驻留在服务器上。

UNET系统概括

NetworkBehaviour 上的属性 “isAuthority” 可以用来告诉是否 对象具有授权。所以非玩家对象在服务器上,具有权威和player对象与 localPlayerAuthority 有授权在其拥有者的客户端上。

好了,本篇unity3d教程到此结束,下篇我们再会!