回答編集履歴
4
別の手法
answer
CHANGED
@@ -62,4 +62,20 @@
|
|
62
62
|
一度購読した命令の「破棄」に関して、こちらが参考になるかもしれません…
|
63
63
|
https://qiita.com/yaegaki/items/bea845df0b011d515afb
|
64
64
|
|
65
|
-
UniRxの機能で一度命令した購読は、こちらの意図するタイミングで「破棄処理」も同時に入れると、意図せぬ場所での購読処理を防止できるかと。
|
65
|
+
UniRxの機能で一度命令した購読は、こちらの意図するタイミングで「破棄処理」も同時に入れると、意図せぬ場所での購読処理を防止できるかと。
|
66
|
+
|
67
|
+
------------------------------------------------------------
|
68
|
+
|
69
|
+
これはまた、違った別の解法というより、別アプローチになりますが
|
70
|
+
|
71
|
+
1.別Scene(例:Stage001.Scene,Stage002,Scene)に分ける(わかりやすい)
|
72
|
+
|
73
|
+
2.Stage事に別クラスを作る
|
74
|
+
例:public class Stage001 { /** Stage1に必要な処理や変数宣言* / }
|
75
|
+
public class Stage002 { /** Stage2に必要な処理*や変数宣言 / }
|
76
|
+
※)こちらはある程度プログラムの知識が必要
|
77
|
+
ここはプログラムの知識をそこまで求めなければ気にしなくていいですが
|
78
|
+
ステージ事の共通部分をStageBaseのような名前でベースクラスを作り
|
79
|
+
各々のステージのクラスにStageBaseを継承して、それを運用するほうが色々と捗ると思います
|
80
|
+
|
81
|
+
ステージのステート管理から見直すのも、一つの手ではあります。
|
3
破棄に関する説明追加
answer
CHANGED
@@ -56,4 +56,10 @@
|
|
56
56
|
|
57
57
|
は、「Stage1」を開始した時点で、秒読みを開始し、
|
58
58
|
あなたがIsPlayingでゲームの終了をいくら指示しようが、
|
59
|
-
彼らは『Stage1」を開始した時点』での秒読みを、愚直かつ素直に続けます。
|
59
|
+
彼らは『Stage1」を開始した時点』での秒読みを、愚直かつ素直に続けます。
|
60
|
+
|
61
|
+
------------------------------------------------------------
|
62
|
+
一度購読した命令の「破棄」に関して、こちらが参考になるかもしれません…
|
63
|
+
https://qiita.com/yaegaki/items/bea845df0b011d515afb
|
64
|
+
|
65
|
+
UniRxの機能で一度命令した購読は、こちらの意図するタイミングで「破棄処理」も同時に入れると、意図せぬ場所での購読処理を防止できるかと。
|
2
補足
answer
CHANGED
@@ -37,4 +37,23 @@
|
|
37
37
|
|
38
38
|
|
39
39
|
あと、蛇足ですが、これ、1面で30秒経過してヒントみたいな処理画はした後、
|
40
|
-
1面で苦戦なりして60秒経過すると、2回目の30秒経過でまた同じヒント流れると思います。
|
40
|
+
1面で苦戦なりして60秒経過すると、2回目の30秒経過でまた同じヒント流れると思います。
|
41
|
+
|
42
|
+
---------------------------------
|
43
|
+
すみません、また編集…というより
|
44
|
+
|
45
|
+
>クリアしたかどうかは他のプログラムが把握しており、IsPlayingフラグを使って、ゲーム中かそうでないかを判断させています。
|
46
|
+
|
47
|
+
このフラグは残念ながら彼らには意味を成していません。
|
48
|
+
|
49
|
+
IsPlayingであなたがゲームの終了をいくら指示しても、『「Stage1」を開始した時点』で秒読みを指示した彼ら
|
50
|
+
```C#
|
51
|
+
Observable.Timer(TimeSpan.FromSeconds(30)).Subscribe(_ => Event1());
|
52
|
+
Observable.Timer(TimeSpan.FromSeconds(60)).Subscribe(_ => Event2());
|
53
|
+
Observable.Timer(TimeSpan.FromSeconds(90)).Subscribe(_ => Event3());
|
54
|
+
Observable.Timer(TimeSpan.FromSeconds(120)).Subscribe(_ => Event4());
|
55
|
+
```
|
56
|
+
|
57
|
+
は、「Stage1」を開始した時点で、秒読みを開始し、
|
58
|
+
あなたがIsPlayingでゲームの終了をいくら指示しようが、
|
59
|
+
彼らは『Stage1」を開始した時点』での秒読みを、愚直かつ素直に続けます。
|
1
解釈に間違いがあったため修正
answer
CHANGED
@@ -21,22 +21,20 @@
|
|
21
21
|
|
22
22
|
解決策…は実装方法にも寄りますが
|
23
23
|
|
24
|
-
1.まず1面を始めた時点で
|
25
|
-
|
24
|
+
文書を読む限り、1面は30秒経過、2面は60秒でヒントのようなものがでると予想されます。
|
26
|
-
上記のみを購読させる
|
27
25
|
|
28
|
-
|
26
|
+
1面が発生したときに
|
29
|
-
|
27
|
+
Observable.Timer(TimeSpan.FromSeconds(30)).Subscribe(_ => Event1()); だけを登録
|
30
|
-
|
28
|
+
1面クリア時に
|
29
|
+
Observable.Timer(TimeSpan.FromSeconds(30)).Subscribe(_ => Event1());の登録を解除
|
31
30
|
|
32
|
-
|
31
|
+
2面が発生したときに
|
33
|
-
Observable.Timer(TimeSpan.FromSeconds(60)).Subscribe(_ => Event2());
|
32
|
+
Observable.Timer(TimeSpan.FromSeconds(60)).Subscribe(_ => Event2()); だけを登録
|
34
|
-
|
33
|
+
2面クリア時に
|
34
|
+
Observable.Timer(TimeSpan.FromSeconds(60)).Subscribe(_ => Event2());の登録を解除
|
35
35
|
|
36
|
-
|
36
|
+
のような処理を入れるとよいと思います。
|
37
37
|
|
38
38
|
|
39
|
-
|
39
|
+
あと、蛇足ですが、これ、1面で30秒経過してヒントみたいな処理画はした後、
|
40
|
-
|
40
|
+
1面で苦戦なりして60秒経過すると、2回目の30秒経過でまた同じヒント流れると思います。
|
41
|
-
|
42
|
-
ひとまず、ソースを見た限りの、発生してるであろう事象について…
|