Как синхронизировать список List у двух игроков? Photon, Unity
Создаю пошаговую игру на двоих с использованием Photon. Очередность ходов определяется с помощью списка List (UnitBase) _units, где UnitBase - скрипт любого юнита( среди юнитов имеются игроки, и враги управляемые компьютером) так же есть скрипт PlayerController - класс наследник от UnitBase. В методе скрипта PlayerController void Start() игрок добавляет себя в этот список. Однако при запуске игры и подключении игроков каждый игрок добавляет сначала себя в список, а потом уже второго из за чего очерёдность ходов у них не синхронизируется. Класс TurnManager - определяет очёредность ходов и хранит списки юнитов.
Я новичок в Unity поэтому очень требуется помощь)
private void Start(){
gameObject.name = view.Owner.ActorNumber.ToString(); // PlayerController
turnManager._players.Add(this);
turnManager._units.Add(this);
}
public class TurnManager : MonoBehaviourPunCallbacks
{
[SerializeField] public List<UnitBase> _units;
[SerializeField] public List<PlayerController> _players;
[SerializeField] public List<UnitBase> _enemies;
public int indexOfMovementUnit = 0;
public TextMeshProUGUI hodText;
public PhotonView view;
private void Awake() {
_units[indexOfMovementUnit].canItMoving = true;
}
private void Start(){
view = gameObject.GetComponent<PhotonView>();
}
public void AddPlayer(PlayerController player){
_players.Add(player);
_units.Add(player);
}
public void Update(){
if (!(PhotonNetwork.CurrentRoom.PlayerCount == 2)){
return;
}
if (_enemies.Count <= 0){
Debug.Log("ПОБЕДА ЗА ИГРОКАМИ");
return;
}
if (!(_enemies.Count <= 0) && (_players.Count <= 0))
return;
hodText.text = indexOfMovementUnit.ToString() + " " + _units[indexOfMovementUnit].name;
if(_units[indexOfMovementUnit].canItMoving==false){
Debug.Log("Ход игрока <" + _units[indexOfMovementUnit].name +"> окончен");
if (indexOfMovementUnit == _units.Count - 1){
indexOfMovementUnit = 0;
Debug.Log("Ход игрока <" + _units[indexOfMovementUnit].name + ">.");
}
else{
indexOfMovementUnit++;
Debug.Log("Ход игрока <" + _units[indexOfMovementUnit].name + ">.");
}
_units[indexOfMovementUnit].canItMoving = true;
}
}
}