2016-09-27 8 views
0

Я немного смущен вызовами PunRpc, я попробовал PhotonTarget.Others посмотреть, будет ли это делать здоровье; на другого клиента, но это не сработало.Как изменить другую клиентскую переменную в многопользовательском режиме Unity Photon?

На данный момент я хочу знать, как я могу заниматься здоровьем; на другого клиента, когда я нажимаю пробел.

Это то, что я пробовал: это команда:

photonView.RPC("healthReduction", PhotonTargets.Others, null); 

и это RPC

[PunRPC] 
void healthReduction() 
{ 
    health--; 
    Debug.Log("Health--"); 
} 

, но она по-прежнему не будет работать.

+0

у вас есть код вашего скрипта игрока? –

+0

Есть что-нибудь в вашем журнале? PUN выводит ошибки, если метод не существует, или параметры не совпадают. Вы не регистрируете вызов RPC. Вы уверены, что его вызвали? См. Демонстрации PUN для образцов использования RPC. – photonians

+0

Дело в том, что с вызовом RPC я не могу уменьшить здоровье ENEMYS, я могу только уменьшить свое здоровье. Поэтому, когда я вызываю PhotonTargets.Others, он будет выполнять код на MY player, но только другие могут видеть обновленное состояние моего плеера, и я не могу. Я хочу выполнить этот код на проигрывателе ENEMY, но теперь я считаю, что это невозможно с вызовами RPC, возможно только обновить свои собственные переменные, чтобы другие могли их видеть, но получить переменную врага и изменить невозможно. Я верю : /. –

ответ

0

Я решил эту проблему с помощью экземпляра и используя 2 различных названных сценариев, например, если я хочу, чтобы получить доступ PlayerManager1 скрипт из PlayerManager, я делаю это PlayerManager1.Instance.photonView.RPC("reduceMyHealth",PhotonTargets.All,null)

это будет вызывать reduceMyHealth() PunRpc в PlayerManager1.

и сделать это нужно добавить этот код в скрипт вы хотите получить доступ: static public PlayerManager1 Instance; и в начале() {} Instance = this;