PhotonTargets конкретному клиенту

PhotonTargets конкретному клиенту

Сообщение nikotin 26 июн 2018, 21:57

Здравствуйте.В доке написано что с помощью RPC можно зарегистрировать метод (делегат) и через него отправлять всем остальным нужные сообщения (https://doc.photonengine.com/en-us/pun/ ... raiseevent ), но как отправить сообщение конкретному клиенту как то умалчивается
Синтаксис:
Используется csharp
[PunRPC]
void ChatMessage(string a, string b, PhotonMessageInfo info)
{
    // the photonView.RPC() call is the same as without the info parameter.
    // the info.sender is the player who called the RPC.
    Debug.Log(string.Format("Info: {0} {1} {2}", info.sender, info.photonView, info.timestamp));
}
PhotonView photonView = PhotonView.Get(this);
photonView.RPC("ChatMessage", PhotonTargets.All, "jup", "and jup!");//всем отправляем ,а нужно или отправителю обратно чтоб узнать пинг
или кому ни будь конкретно

Подскажите пожалуйста, можно ли через photonView.RPC отправить конкретному клиенту по его ID ,если нет то какой метод это может?
И как принято в photon вычислять пинг для данного клиента?
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44

Re: PhotonTargets конкретному клиенту

Сообщение seaman 26 июн 2018, 22:37

Просто отправляйте id того кому нужно и в методе проверяйте совпадает ли локальный с отправленным.
локальный PhotonNetwork.player.Id
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: PhotonTargets конкретному клиенту

Сообщение nikotin 28 июн 2018, 08:55

seaman писал(а):Просто отправляйте id того кому нужно и в методе проверяйте совпадает ли локальный с отправленным.
локальный PhotonNetwork.player.Id

Спасибо, но тогда все равно всем будет отправлено сообщение - лишний трафик (зачем посылать всем когда нужно послать одному), и пинг конкретного клиента с облаком фотона не вычислить. Вроде как можно создавать группы клиентов, которым данное сообщение посылается
Синтаксис:
Используется csharp
 PhotonNetwork.SetSendingEnabled((byte)25,true);

Но при попытке инициэйтить объект не с группой 0, а с иным значением byte
Синтаксис:
Используется csharp
PhotonNetwork.Instantiate(this.prefab.name, new Vector3(0f, 5f, 0f), Quaternion.identity, 25/*0*/);

объект вообще не создается (не понятно, зачем вообще тогда нужен последний параметр). Не удается разобраться.
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44

Re: PhotonTargets конкретному клиенту

Сообщение nikotin 30 июн 2018, 09:47

все понял -это с помощью групп можно сделать - нужно включить PhotonNetwork.SetInterestGroups https://doc.photonengine.com/en-us/pun/ ... restgroups . Но получить от облака себе обратно сообщение с помощью PPC почему то нельзя -даже если поставить PhotonTargets.AllViaServer
Синтаксис:
Используется csharp
photonView.RPC("myGetPing", PhotonTargets.AllViaServer, PhotonNetwork.time);

все равно отправляется всем остальным (если у них photonView.group=0), а себе почему то нет, хотя в комменте про PhotonTargets.AllViaServer написано что всем отправляет включая отправителя -но он не чего не получает.
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44

Re: PhotonTargets конкретному клиенту

Сообщение nikotin 30 июн 2018, 10:06

Чет я намудрил с группами походу - PhotonTargets.AllViaServer работает.
nikotin
UNец
 
Сообщения: 41
Зарегистрирован: 01 окт 2017, 15:44


Вернуться в Photon

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1