public void Init() { var mainMenuViewInstance = Instantiate(mainMenuView.gameObject).GetComponent <MenuView>(); disposables = new CompositeDisposable(); mainMenuViewInstance.playButton.OnClickAsObservable().Subscribe(_ => { SceneManager.LoadScene("GameScene"); disposables.Dispose(); } ).AddTo(disposables); choisedLevelInd.AsObservable().Subscribe(x => { mainMenuViewInstance.preview.sprite = levels[x].GetBehavior().preview; mainMenuViewInstance.levelStateText.text = levels[x].GetModel().state.ToString(); }).AddTo(disposables); Observable.EveryUpdate().Where(_ => (levels.Count > choisedLevelInd.Value + 1) && (Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow))).Subscribe(_ => { choisedLevelInd.Value++; }).AddTo(disposables); Observable.EveryUpdate().Where(_ => (choisedLevelInd.Value - 1 > -1) && (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow))).Subscribe(_ => { choisedLevelInd.Value--; }).AddTo(disposables); }
/// <summary> /// Функция, возвращающая подписанные "цели" для отображения. /// Каждый дочерний класс может имплементировать по своему усмотрению(в зависимости от поставленных целей, конечно же). /// Базовая цель определена как "Пролететь ... ед. пути" /// </summary> /// <returns>Список ГеймОбъектов-целей</returns> public virtual List <GameObject> GetApplyingableObjectives(GameObject objectivePrefab) { List <GameObject> objects = new List <GameObject>(); var item = Instantiate(objectivePrefab) as GameObject; way.AsObservable().Subscribe(x => item.GetComponentInChildren <Text>().text = "Пройдено " + x + " из " + needToGo).AddTo(gameObject); level_m.isPassed = way.AsObservable().Select(x => x >= needToGo).ToReactiveProperty(); level_m.isPassed.Where(x => x == true).Subscribe(_ => { level_m.state = LevelState.Passed; isEnabled = false; SceneManager.LoadScene("MainScene"); }); objects.Add(item); return(objects); }