Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 通过光子统一网络更快地发送RPC的方法_Unity3d_Networking_2d_Rpc_Photon - Fatal编程技术网

Unity3d 通过光子统一网络更快地发送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值

我正在使用Unity和PUN2创建2D自上而下的射击游戏。我的问题是,RPC调用占用了太多的时间。我的例子是,每当玩家被其他玩家的子弹击中时(OnTriggerEnter2D检测到),他就会向其他玩家发送RPC_消息,告诉他们他被击中了,这样他们就可以看到命中对他的影响(他的降低的HP条)。在我看来,点击和减少HP bar之间的时间太长了,大约是1秒。当玩家被多个玩家用多发子弹击中时,这会造成一些麻烦,这会降低游戏的动态性。有没有办法加快RPC函数调用的速度?
我的想法是使用对象同步来同步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();
    }
}
我举了一个例子