У меня в игре есть 1 GameObject, который вызывает метод RPC. Этот игровой объект содержит сценарий C# (который содержит метод RPC) и компонент PhotonView с наблюдаемым сценарием или без него (должен быть одинаковым), а параметр ObserveOption равен Off.
У меня есть персонаж, которому нужно стрелять в куб. К этому кубу прикреплен ранее описанный скрипт и компонент.
RPC отправляется один раз (когда куб сталкивается со снарядом), но в моей сцене у меня есть много кубов, которые должны получить сообщение, потому что мне нужно уменьшить здоровье хит-куба. Проблема в том, что только один куб получает вызов RPC (RPC перехватывается первым экземпляром объекта в начале игры), но RPC должен быть получен всеми кубами (верно?) в моей сцене.
Кубики абсолютно одинаковые, но у них разные идентификаторы photonView (справедливо), чтобы мы могли проверить, является ли хит-куб, на который уменьшается здоровье, правильным.
Это значительная часть кода:
Код: Выделить всё
public static void reduceHealthRPC(float damage, int viewID)
{
photonView.RPC("reduceHealth", PhotonTargets.All, damage, viewID);
}
[RPC]
public void reduceHealth(float damage, int viewID)
{
if(this._viewID != viewID)
{
Debug.Log ("The view ID is not mine. My viewID is: " + _viewID + ", and the one which is coming form RPC is: " + viewID);
return;
}
currentHealth -= damage;
Debug.Log("My life is: " + currentHealth);
}
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/294 ... n-rpc-call