Страница 1 из 1

Photon Cloud RPC изменение состояния объекта

СообщениеДобавлено: 11 июн 2017, 12:31
AntonIV
Здравствующие. Столкнулся с такой проблемой:

Есть объекты - игроки. У каждого игрока в качестве чайлдов есть набор пушек. На каждой пушке висит WeaponController, в котором содержится метод Fire. Вызов Fire производится в общем скрипте, отвечающим за стрельбу - ShootingController. А смена оружия обрабатывается в скрипте weapon switch

Вот примерный код:

Скрипт WeaponSwitch

private int currentWeapon;
public GameObject[] weapons;
public ShootinController sController;

if (button){

currentWeapon++;
photonView.RPC("Switch",PhotonTargets.ALL,currentWeapon);
}

[PunRPC]
public void Switch(int i){

sController.weaponController = weapons[i].GetComponent<WeaponController>();
}



Скрипт ShootingController:

public WeaponController weaponController;

if (button){

photonView.RPC("FireSync",PhotonTargets.ALL);
}

[PunRPC]
public void FireSync(){

weaponController.Fire();
}



Если исключить смену оружия, и в эдиторе вручную назначить weaponController, то все норм. Стрельба синхронизируется. Но если подключить это

[PunRPC]
public void Switch(int i){

sController.weaponController = weapons[i].GetComponent<WeaponController>();
}

то при вызове FireSync остальные игроки выдают ошибку о том, что weaponController в их ShootingController пуст. Т.е его назначение через RPC не происходит. В чем может быть беда ?

Re: Photon Cloud RPC изменение состояния объекта

СообщениеДобавлено: 11 июн 2017, 13:02
Woolf
тег [csharp] (кнопочка CS в редакторе сообщения)

Re: Photon Cloud RPC изменение состояния объекта

СообщениеДобавлено: 30 июн 2017, 20:36
юnity
Помоему в PhotonCloud привяязываются свойства к Transformy, а не к GameObjectам. Попробуй
Синтаксис:
Используется csharp

Скрипт WeaponSwitch

private int currentWeapon;
public Transform[] weapons;//так , может что получится
public ShootinController sController;

if (button){

currentWeapon++;
photonView.RPC("Switch",PhotonTargets.ALL,currentWeapon);
}

[PunRPC]
public void Switch(int i){

sController.weaponController = weapons[i].GetComponent<WeaponController>();
}