Способ более быстрой отправки RPC по сети с помощью Photon Unity Networking - PullRequest
0 голосов
/ 13 февраля 2019

Я создаю 2D шутер сверху вниз, используя Unity и PUN2.Моя проблема в том, что вызовы RPC занимают слишком много времени.Мой пример: всякий раз, когда игрок получает удар от пули других игроков (обнаруживается OnTriggerEnter2D), он отправляет RPC_message другим игрокам, которых он получил, чтобы они могли видеть эффект попадания на него (его уменьшенную полосу HP).На мой взгляд, время между попаданием и уменьшением полосы HP слишком велико, оно составляет около 1 секунды.Это вызывает некоторые проблемы, в то время как игрок получает удар от нескольких игроков несколькими пулями, что делает игру менее динамичной.Есть ли способ ускорить вызов функции RPC?Моя идея состояла в том, чтобы синхронизировать значения hp с помощью Object Synchronization или попробовать это при обнаружении столкновений, но я не уверен, что это будет достаточно эффективно.

1 Ответ

0 голосов
/ 13 февраля 2019

Вы не должны отправлять сообщение о попадании с помощью RPC. Просто синхронизируйте Health с помощью OnPhotonSerializeView:

public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
    if (stream.IsWriting)
    {
        stream.SendNext(Health);
    }
    else
    {
        Health = (float)stream.ReceiveNext();
    }
}

Я сделал пример о Фотоне для начинающих в моем github

...