コード例 #1
0
        private void Start()
        {
            // AsyncReactiveCommand<Unit>と同義
            var asyncReactiveCommand = new AsyncReactiveCommand();

            // ButtonとBind
            asyncReactiveCommand.BindTo(_button);

            // ボタンが押されたら3秒待つ
            asyncReactiveCommand.Subscribe(_ =>
            {
                return(Observable.Timer(TimeSpan.FromSeconds(3)).AsUnitObservable());
            });

            // ボタンが押されたらサーバと通信する
            asyncReactiveCommand.Subscribe(_ =>
            {
                return(FetchAsync("http://api.example.com/status")
                       .ToObservable()
                       .ForEachAsync(x =>
                {
                    _resultText.text = x;     // 結果をUIに表示
                }));
            });
        }
コード例 #2
0
        public void SetReference(IGeneratorDungeon generatorDungeon)
        {
            _generatorDungeon = generatorDungeon;

            IntoBattleButton.OnPointerClickAsObservable().Subscribe(_ => { _battleInit.StartBattle(); })
            .AddTo(_subscriptions);

            _generatorDungeon.Seed.SubscribeToText(SeedInputField).AddTo(_subscriptions);

            var setRandomSeedCommand = new AsyncReactiveCommand();

            setRandomSeedCommand.Subscribe(_ =>
            {
                _generatorDungeon.SetRandomSeed();
                return(Observable.Timer(TimeSpan.FromSeconds(1)).AsUnitObservable());
            }).AddTo(_subscriptions);
            setRandomSeedCommand.BindTo(RandomSeedButton).AddTo(_subscriptions);

            GenerateMapButton.OnPointerClickAsObservable().Subscribe(_ => { _generatorDungeon.BuildDungeon(); })
            .AddTo(_subscriptions);
        }