Unity PUN RPC

本文介绍了RPC(远程过程调用)在分布式系统中的作用,特别是在Unity-PUN框架下的应用。重点讲解了如何在Unity中使用PUNRPC和PhotonView进行远程调用,包括关键代码示例和注意事项。

RPC(Remote Procedure Call,远程过程调用)是一种用于在分布式系统中进行通信和交互的编程模型。它允许一个进程(通常是客户端)通过网络调用另一个进程(通常是服务器)上的方法或函数,就像在本地调用一样,而无需了解底层网络通信的细节。

RPC 的基本原理是将远程调用抽象为本地调用,使开发人员可以透明地调用远程计算机上的方法,并获取返回结果。这使得分布式系统的开发更加方便,可以将不同的功能模块分布在不同的计算机上,通过远程调用实现它们之间的通信和交互。

在 RPC 中,调用方(客户端)发起一个远程调用请求,将参数传递给远程方法,并等待远程方法的执行结果。远程方法在接收到请求后,执行相应的操作,并将结果返回给调用方。整个过程对于调用方来说是透明的,就像调用本地方法一样。

RPC 可以使用不同的协议和传输机制来实现,例如使用 HTTP、TCP 或 UDP 进行网络通信。它可以在不同的编程语言和平台之间进行交互,从而实现跨语言和跨平台的通信。

使用 RPC 可以提供以下优势:

  1. 抽象网络通信:开发人员可以将远程调用看作是本地调用,无需处理底层的网络通信细节。

  2. 分布式系统集成:RPC 可以方便地实现不同计算机或服务之间的集成和通信,促进了分布式系统的开发和扩展。

  3. 模块化设计:通过将不同的功能模块分布在不同的计算机上,并通过 RPC 进行通信,可以实现模块化设计和开发。

本文是基于Unity-PUN的RPC实现(PUN连接已完成),这是官网对于RPC的使用手册。RPCs and RaiseEvent | Photon Engine

以下是RPC使用中的关键点,

①需要远程调用的函数需要加上[PUNRPC]的attribute,例如

[PunRPC]
void ChatMessage(string a, string b)
{
    Debug.Log(string.Format("ChatMessage {0} {1}", a, b));
}

②需要远程调用函数的物体上必须同时挂接PhotonView脚本,调用时需获取PhotonView组件(新版本已经不需要),并调用函数PhotonView.RPC。

PhotonView photonView = PhotonView.Get(this);
photonView.RPC("ChatMessage", RpcTarget.All, "jup", "and jup.");

③ 远程调用的函数可以有返回值,可以传参数,但在远程的函数不会有函数值返回(即使返回值不是void)。

特别注意:两端的物体可以不一致,在PhotonView组件中的ViewerID需一样。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值