回答編集履歴

4

記入漏れ すみません。。。

2017/09/19 11:45

投稿

IShix
IShix

スコア1724

test CHANGED
@@ -174,6 +174,8 @@
174
174
 
175
175
 
176
176
 
177
-
177
+ isPlayWin = false;
178
+
179
+ }
178
180
 
179
181
  ```

3

記入漏れ

2017/09/19 11:44

投稿

IShix
IShix

スコア1724

test CHANGED
@@ -61,6 +61,12 @@
61
61
  **実行中なら一度止めて再実行**
62
62
 
63
63
  ```C#
64
+
65
+ //変数を宣言
66
+
67
+ Coroutine PlayerWinCorutine;
68
+
69
+
64
70
 
65
71
  void Start()
66
72
 

2

追記

2017/09/19 11:43

投稿

IShix
IShix

スコア1724

test CHANGED
@@ -51,3 +51,123 @@
51
51
  色々できるのでこのページを見てみるとプログラムの幅が広がるかもしれません。
52
52
 
53
53
  [http://tsubakit1.hateblo.jp/entry/2015/04/06/060608](http://tsubakit1.hateblo.jp/entry/2015/04/06/060608)
54
+
55
+
56
+
57
+
58
+
59
+ ###[追記]連続で実行されるとやばいので一度だけ実行するようにする
60
+
61
+ **実行中なら一度止めて再実行**
62
+
63
+ ```C#
64
+
65
+ void Start()
66
+
67
+ {
68
+
69
+ //実行
70
+
71
+ PlayerWin();
72
+
73
+ }
74
+
75
+
76
+
77
+ void PlayerWin()
78
+
79
+ {
80
+
81
+ //実行中であればストップ
82
+
83
+ if(PlayerWinCorutine != null) StopCoroutine(PlayerWinCorutine);
84
+
85
+ //実行
86
+
87
+ PlayerWinCorutine = StartCoroutine(_PlayerWin());
88
+
89
+ }
90
+
91
+
92
+
93
+ IEnumerator _PlayerWin()
94
+
95
+ {
96
+
97
+ //3秒待機
98
+
99
+ yield return new WaitForSeconds(3f);
100
+
101
+
102
+
103
+ BgmManager.Instance.TimeToFade = 0.0f;
104
+
105
+ BgmManager.Instance.Play("勝利1");
106
+
107
+ UIControl.score += 5000;
108
+
109
+ }
110
+
111
+ ```
112
+
113
+
114
+
115
+ **実行中なら何もしない**
116
+
117
+
118
+
119
+ ```C#
120
+
121
+ //変数を宣言
122
+
123
+ bool isPlayWin;
124
+
125
+
126
+
127
+ void Start()
128
+
129
+ {
130
+
131
+ //実行
132
+
133
+ PlayerWin();
134
+
135
+ }
136
+
137
+
138
+
139
+ void PlayerWin()
140
+
141
+ {
142
+
143
+ //実行していなければ実行
144
+
145
+ if(!isPlayWin) StartCoroutine(_PlayerWin());
146
+
147
+ }
148
+
149
+
150
+
151
+ IEnumerator _PlayerWin()
152
+
153
+ {
154
+
155
+ isPlayWin = true;
156
+
157
+ //3秒待機
158
+
159
+ yield return new WaitForSeconds(3f);
160
+
161
+
162
+
163
+ BgmManager.Instance.TimeToFade = 0.0f;
164
+
165
+ BgmManager.Instance.Play("勝利1");
166
+
167
+ UIControl.score += 5000;
168
+
169
+
170
+
171
+
172
+
173
+ ```

1

追記

2017/09/19 11:42

投稿

IShix
IShix

スコア1724

test CHANGED
@@ -1,6 +1,4 @@
1
- 色々書き方があるかもしれませんが遅延させたい時はコルーチンを使うといと思います。
1
+ 色々書き方があるかもしれませんが遅延させたい時はいつもコルーチンを使っています。
2
-
3
-
4
2
 
5
3
 
6
4
 
@@ -37,3 +35,19 @@
37
35
  }
38
36
 
39
37
  ```
38
+
39
+
40
+
41
+ **使用上の注意**
42
+
43
+ gameObject.SetActive の値がfalseの時、Coroutineを実行しようとすると死にます。
44
+
45
+
46
+
47
+
48
+
49
+ ###UnityのCoroutine(コルーチン)でできる事のメモ
50
+
51
+ 色々できるのでこのページを見てみるとプログラムの幅が広がるかもしれません。
52
+
53
+ [http://tsubakit1.hateblo.jp/entry/2015/04/06/060608](http://tsubakit1.hateblo.jp/entry/2015/04/06/060608)