Как синхронизировать список 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;
            
            }
    }
    
    
} 

Ответы (0 шт):