unity3d Photon客户端 工作流程

对于一个多人游戏的生命周期如下:

  • 连接到服务器

  • 调用RPC

  • 接受数据

  • 断开连接


相当简单。假设你使用C#和[url=]Lite Application[/url],让我们看下每一步的过程。

连接到服务器

在这一步,你实际上只需做connect的工作。步骤如下:

  • 在一个类中实现IPhotonPeerListener的接口

  • 用您的服务器的地址作为参数创建一个LitePeer实例

  • 在你游戏的loop中,大约每0.1秒调用一次Service()

  • 调用connect()建立连接。Application Name应与PhotonServer.config中的名称相匹配。

  • 当连接建立以后,成功或失败的消息通过PeerStatusCallback()方法传递给你。

  • 返回的状态是StatusCode.Connect


Peer的实例提供了一些与Photon通讯的方法。它没有独立的线程,通过调用Service()来实现更新,以此来保持连接处于活动状态。

在默认情况下,我们假设Photon都是在运行"Lite" Application。

调用RPC

建立连接后,客户端可以随时调用Lite Application中的方法。作为"remote procedure call"的可用方法被称为Operations。

Operation调用都是异步的,不会阻塞你的游戏运行。他们内部是用队列来实现, 你可以通过调用SendOutgoingCommands来发送消息。收到的数据将会有一个短暂的延迟。

  • 调用OpJoin时,传入房间的名字来加入游戏

  • 等待回调:OperationResult with opCode: LiteOpCode.Join

  • 调用OpRaiseEvent发送Hahstable的数据内容。在房间里的其他玩家将接收到该事件。


在Lite Application例子中,当加入房间后,服务端会发出events通知客户端。您可以使用其他applications和实现自己的operations。

接受数据

在前面的步骤,你已经收到了operation的返回结果。为了区别其他传入的消息,称它为events。Lite将会转发你的event给房间中的其他人。

  • 调用IPhotonPeerListener.EventAction接受events。"evCode"与你在OpRaiseEvent中用的相匹配。


客户端库将在内部队列中接收数据包,通过调用PhotonPeer.Service()来调用EventAction(),从而让你的游戏决定何时使用它们。

断开连接

如果客户端需要退出,最好调用disconnect()。如果不调用,timeout将会断开客户端的连接。

  • 关闭连接:调用Disconnect()

  • 在PeerStatusCallback with statusCode: StatusCode.Disconnect,检测"disconnect"的返回值

  • 现在,客户端可以不再调用Service()


http://cl314413.blog.163.com/blog/static/1905079762012102094246768/?suggestedreading&wumii

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值