Unity3d 通过光子统一网络更快地发送RPC的方法
我正在使用Unity和PUN2创建2D自上而下的射击游戏。我的问题是,RPC调用占用了太多的时间。我的例子是,每当玩家被其他玩家的子弹击中时(OnTriggerEnter2D检测到),他就会向其他玩家发送RPC_消息,告诉他们他被击中了,这样他们就可以看到命中对他的影响(他的降低的HP条)。在我看来,点击和减少HP bar之间的时间太长了,大约是1秒。当玩家被多个玩家用多发子弹击中时,这会造成一些麻烦,这会降低游戏的动态性。有没有办法加快RPC函数调用的速度?Unity3d 通过光子统一网络更快地发送RPC的方法,unity3d,networking,2d,rpc,photon,Unity3d,Networking,2d,Rpc,Photon,我正在使用Unity和PUN2创建2D自上而下的射击游戏。我的问题是,RPC调用占用了太多的时间。我的例子是,每当玩家被其他玩家的子弹击中时(OnTriggerEnter2D检测到),他就会向其他玩家发送RPC_消息,告诉他们他被击中了,这样他们就可以看到命中对他的影响(他的降低的HP条)。在我看来,点击和减少HP bar之间的时间太长了,大约是1秒。当玩家被多个玩家用多发子弹击中时,这会造成一些麻烦,这会降低游戏的动态性。有没有办法加快RPC函数调用的速度? 我的想法是使用对象同步来同步hp值
我的想法是使用对象同步来同步hp值,或者在碰撞检测中尝试此方法,但我不确定这是否足够有效。您不必使用RPC发送命中消息。只需使用
OnPhotonSerializeView来同步运行状况即可。
:
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.IsWriting)
{
stream.SendNext(Health);
}
else
{
Health = (float)stream.ReceiveNext();
}
}
我举了一个关于的例子,您不必使用RPC发送命中消息。只需使用
OnPhotonSerializeView
同步运行状况即可:
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.IsWriting)
{
stream.SendNext(Health);
}
else
{
Health = (float)stream.ReceiveNext();
}
}
我举了一个例子