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に表示 })); }); }
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); }