public void Start() { var players = _playerProvider.GetCurrentPlayers(); var notificators = GameObject.FindObjectsOfType <PlayerCountChanger>() .Select(x => x.GetComponent <IPlayerChangeNotificator>()); players.ForEach(CreatePlayer); notificators.Select(x => x.ChangePlayerCountAsObservable()) .Merge() .Subscribe(x => { if (x == 1) { _playerManager.AddPlayer(); } else { _playerManager.RemoveLastPlayer(); } }).AddTo(_disposable); _playerManager.AddPlayerAsObservable() .Subscribe(CreatePlayer) .AddTo(_disposable); _playerManager.RemovePlayerAsObservable() .Subscribe(RemovePlayer) .AddTo(_disposable); }