Сценарий следующий: при подключении N игроков к серверу, первый игрок рассылает RPC чтобы все остальные игроки обратились к серверу. после ответа сервера активируем панель покупки с товарами которые прислал сервер.
Синтаксис:
Используется csharp
void OnPhotonPlayerConnected(PhotonPlayer newPlayer)
{
if (PhotonNetwork.playerList.Length == 2)
{ if(photonView.viewID == 3)
photonView.RPC("ActivateBuyPanel",PhotonTargets.All);
}
}
[PunRPC]
void ActivateBuyPanel()
{
var parameter = new Dictionary<byte, object>();
PhotonNetwork.networkingPeer.SendOperation(100, parameter, SendOptions.SendReliable);
}
{
if (PhotonNetwork.playerList.Length == 2)
{ if(photonView.viewID == 3)
photonView.RPC("ActivateBuyPanel",PhotonTargets.All);
}
}
[PunRPC]
void ActivateBuyPanel()
{
var parameter = new Dictionary<byte, object>();
PhotonNetwork.networkingPeer.SendOperation(100, parameter, SendOptions.SendReliable);
}
Столкнулся с проблемой в NetworkingPeer в OnOperationResponse с обработкой ответа.
Синтаксис:
Используется csharp
case (byte) 100:
if (operationResponse.ReturnCode == 0)
{
var buyPanel = PhotonView.Find(4);
buyPanel.transform.gameObject.SetActive(true);
}
if (operationResponse.ReturnCode == 0)
{
var buyPanel = PhotonView.Find(4);
buyPanel.transform.gameObject.SetActive(true);
}
Если панель выключена то photonview.find(4) возвращает null.
И в общем по структуре я не уверен что всё делаю правильно. Коряво как-то вызывается всё. Не должно же быть так чтоб один человек вызывал у всех панельку. Подскажите в общем?