首页 > Photon > 基础系列 > PhotonServer(五)Unity客户端玩家的创建同步
2017
11-16

PhotonServer(五)Unity客户端玩家的创建同步

下面的代码内容还是根据上一篇文章的代码做更改和添加内容

添加场景

新建场景,命名GameScene,添加在上一章登录成功后跳转至该场景

下面操作内容都是在GameScene场景开发

一、新建Player预设体,并Copy一份作为其它玩家预设体,把Player预设体拖入场景

二、修改Player的Tag为Player,并拖入场景中

三、在Player物体上新建Player.cs脚本,添加控制移动代码,并挂载OtherPlayer预设体

PhotonServer(五)Unity客户端玩家的创建同步 - 第1张  | u3d8技术分享

现在运行起来,本地Player是绿色的,可以通过方向来控制移动了

同步客户端准备

在客户端与服务器端同步创建玩家这个步骤里

客户端需要做三件事情:

1.当前客户端创建角色,发送告知服务器端

2.当前客户端接收服务器发送的其它在线客户端的玩家角色信息

3.其它客户端接收服务器发送的当前客户端的角色信息

服务器端需要做两件事情:

1.告诉当前客户端 其它在线客户端的信息,让当前客户端创建其它客户端玩家角色

2.告诉其它客户端 有新的客户端加入,需要创建新客户端玩家角色

在操作之前,我们先在客户端和服务器端同时添加事件枚举和与服务器发送的数据类型

新建文件EventDataPlayerData,并添加OperationCode类型(OperationCode枚举的Default类型在客户端和服务器端都调整到第一位,方便阅读)

同步客户端玩家角色(客户端)

一、在客户端添加SyncPlayerRequest脚本,用于客户端发送创建角色消息给服务器

二、在客户端添加SyncPlayerHandler脚本,用于接收服务器发送过来的其它客户端玩家角色信息

三、在客户端添加EventBaseEventMediatSyncPlayerEvent脚本,用于监听服务器端主动发来的新客户端加入的玩家角色信息

四、修改PhotonEngine脚本的OnEvent方法,分发Event消息

五、在Player类添加实例化其他客户端方法

六、在Player类添加发送客户端创建角色消息

七、在场景添加空物体,命名为Handler,并挂载SyncPlayerHandlerSyncPlayerEvent,用于监听服务器发来的客户端玩家信息

其中第六条是实现 “当前客户端创建角色,发送告知服务器端”

第一、二条实现 “当前客户端接收服务器发送的其它在线客户端的玩家角色信息”

第三、四条实现 “其它客户端接收服务器发送的当前客户端的角色信息”

PhotonServer(五)Unity客户端玩家的创建同步 - 第2张  | u3d8技术分享

SyncPlayerRequest

SyncPlayerHandler

EventBase

EventMediat

SyncPlayerEvent

PhotonEngine

Player

同步客户端玩家角色(服务器端)

在服务器端,同样需要添加EventDataPlayerData,并添加OperationCode类型这步操作。

为了保持一致,如果客户端和服务器公用的类、枚举类型等数据比较多,可以考虑发布成dll来共享,暂时我们省略此步骤

注:在服务器端这三个脚本没有加入Net命名空间,如果自己加入了,记得调用时引用命名空间~

这些准备工作操作完成后,我们就来做服务器段的消息处理

一、添加SyncPlayerHandler类,用来处理客户端发来的玩家角色创建请求

二、在MyGameServer类添加对SyncPlayerHandler的监听

三、在ClientPeer类添加username字段,记录玩家用户名

四、在LoginHandler脚本的OnLoginReceived方法给username赋值

五、在MyGameServer类里面创建一个集合,然后在每次客户端连接的进来后去实例这个客户端的ClientPeer,并保存起来

PhotonServer(五)Unity客户端玩家的创建同步 - 第3张  | u3d8技术分享

SyncPlayerHandler

MyGameServer

ClientPeer

LoginHandler

MyGameServer

ClientPeer

以上内容完成,就可以用Unity发布出来,用两个用户登录后 查看效果

PhotonServer(五)Unity客户端玩家的创建同步 - 第4张  | u3d8技术分享

最后编辑:
作者:网虫虫
网虫虫
分享是一种快乐; 分享是一种美德; 分享是一种幸福!

0 0 votes
Article Rating
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments