Как синхронизировать переменную через Photon PUN

Мне нужно синхронизировать переменную, чтобы все игроки имели одинаковое значение. Я пробовал с чем-то вроде этого

[PunRPC]
void Setting ()
{
I = somevalue;
//I Is my int
}

И я называю это следующим образом:

PhotonView PV = GetComponent<PhotonView>();
PV.RPC("Setting", RPCTargets.All);

Но значение int равно нулю. Что я делаю не так?


person Gerardo Martinez    schedule 22.11.2018    source источник
comment
Вы пытались вместо этого передать его как параметр?   -  person derHugo    schedule 22.11.2018
comment
@derHugo Вы имеете в виду поместить параметр int в Setting и написать I в качестве используемого параметра?   -  person Gerardo Martinez    schedule 22.11.2018
comment
Извините, я вообще не знаю, как работает Photon, но в UNet вы бы сделали что-то вроде [ClientRpc] public void RpcSetting(int value){ myInt = value} (и вызвали RpcSetting(myInt); на сервере), где myInt — это переменная, которую вы хотите установить для всех клиентов. Я предполагаю, что это как-то похоже на фотон.   -  person derHugo    schedule 22.11.2018


Ответы (1)


Вы должны передать параметр функции всем клиентам, которые могут получить этот параметр. Просто измените свой код на:

[PunRPC]
void Setting (int someValue)
{
I = somevalue;
}

void CallSetting()
{
PhotonView PV = GetComponent<PhotonView>();
PV.RPC("Setting", RPCTargets.All, someValue);
}

Вы можете передать PhotonMessageInfo дополнительно в функцию настройки, чтобы узнать больше информации о вызове настройки этого клиента.

[PunRPC]
void Setting (int someValue,  PhotonMessageInfo info)
{
}
person Trung Bui    schedule 24.11.2018