Здравствующие. Столкнулся с такой проблемой:
Есть объекты - игроки. У каждого игрока в качестве чайлдов есть набор пушек. На каждой пушке висит 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 не происходит. В чем может быть беда ?