teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

文章内のコードにマークダウンを付加

2018/01/26 22:09

投稿

Bongo
Bongo

スコア10816

answer CHANGED
@@ -40,7 +40,7 @@
40
40
  改善案としては...
41
41
 
42
42
  案1:
43
- TakeWhileをやめて、time > 0でフィルタリングするだけにし、ストリームを止めないようにする。
43
+ `TakeWhile`をやめて、`time > 0`でフィルタリングするだけにし、ストリームを止めないようにする。
44
44
  ```C#
45
45
  // 省略
46
46
  void Awake()

1

Intervalのストリームに流れる値についての理解が誤っていたため修正

2018/01/26 22:09

投稿

Bongo
Bongo

スコア10816

answer CHANGED
@@ -99,8 +99,8 @@
99
99
 
100
100
  案3:
101
101
  案2をベースとしつつ、イベントストリームを`UpdateAsObservable`から1秒間隔の`Interval`に置き換える(参考: [UniRxのシンプルなサンプル その9(TimerとInterval 一定時間後に実行) - Qiita](https://qiita.com/Marimoiro/items/a72b60315c797c19a27c))。
102
- `time`は初期値`5.0f`のまま書き換えないようにし、ストリームに流れてくる経過時間が`time`未満の間テイクして`DiscountReadingTime`を実行する。
102
+ `time`は初期値`5.0f`のまま書き換えないようにし、ストリームに流れてくるプッシュ回数が`time`未満の間テイクして`DiscountReadingTime`を実行する。
103
- `DiscountReadingTime`は引数として経過時間を受け取れるようにし、残り時間に換算して`remainingTime`に表示する。
103
+ `DiscountReadingTime`は引数としてプッシュ回数を受け取れるようにし、残り時間に換算して`remainingTime`に表示する。
104
104
  案2と同様、ストリーム完了時に`EndReading`を実行する。
105
105
  ```C#
106
106
  public class PlayerControl : MonoBehaviour
@@ -120,14 +120,14 @@
120
120
 
121
121
  IsRead = true;
122
122
  Observable.Interval(TimeSpan.FromSeconds(1))
123
- .TakeWhile(t => t < time)
123
+ .TakeWhile(i => i < time)
124
124
  .Subscribe(DiscountReadingTime, EndReading);
125
125
  }
126
126
 
127
127
  // Readメソッドが呼ばれることでUnirxにより走るメソッド
128
- void DiscountReadingTime(long t)
128
+ void DiscountReadingTime(long eventIndex)
129
129
  {
130
- remainingTime.text = ((int)(time - (t + 1))).ToString();
130
+ remainingTime.text = ((int)(time - (eventIndex + 1))).ToString();
131
131
  }
132
132
 
133
133
  // Readメソッドから呼ばれるメソッド