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

回答編集履歴

4

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

2017/09/19 11:45

投稿

IShix
IShix

スコア1729

answer CHANGED
@@ -86,5 +86,6 @@
86
86
  BgmManager.Instance.Play("勝利1");
87
87
  UIControl.score += 5000;
88
88
 
89
-
89
+ isPlayWin = false;
90
+ }
90
91
  ```

3

記入漏れ

2017/09/19 11:44

投稿

IShix
IShix

スコア1729

answer CHANGED
@@ -30,6 +30,9 @@
30
30
  ###[追記]連続で実行されるとやばいので一度だけ実行するようにする
31
31
  **実行中なら一度止めて再実行**
32
32
  ```C#
33
+ //変数を宣言
34
+ Coroutine PlayerWinCorutine;
35
+
33
36
  void Start()
34
37
  {
35
38
  //実行

2

追記

2017/09/19 11:43

投稿

IShix
IShix

スコア1729

answer CHANGED
@@ -24,4 +24,64 @@
24
24
 
25
25
  ###UnityのCoroutine(コルーチン)でできる事のメモ
26
26
  色々できるのでこのページを見てみるとプログラムの幅が広がるかもしれません。
27
- [http://tsubakit1.hateblo.jp/entry/2015/04/06/060608](http://tsubakit1.hateblo.jp/entry/2015/04/06/060608)
27
+ [http://tsubakit1.hateblo.jp/entry/2015/04/06/060608](http://tsubakit1.hateblo.jp/entry/2015/04/06/060608)
28
+
29
+
30
+ ###[追記]連続で実行されるとやばいので一度だけ実行するようにする
31
+ **実行中なら一度止めて再実行**
32
+ ```C#
33
+ void Start()
34
+ {
35
+ //実行
36
+ PlayerWin();
37
+ }
38
+
39
+ void PlayerWin()
40
+ {
41
+ //実行中であればストップ
42
+ if(PlayerWinCorutine != null) StopCoroutine(PlayerWinCorutine);
43
+ //実行
44
+ PlayerWinCorutine = StartCoroutine(_PlayerWin());
45
+ }
46
+
47
+ IEnumerator _PlayerWin()
48
+ {
49
+ //3秒待機
50
+ yield return new WaitForSeconds(3f);
51
+
52
+ BgmManager.Instance.TimeToFade = 0.0f;
53
+ BgmManager.Instance.Play("勝利1");
54
+ UIControl.score += 5000;
55
+ }
56
+ ```
57
+
58
+ **実行中なら何もしない**
59
+
60
+ ```C#
61
+ //変数を宣言
62
+ bool isPlayWin;
63
+
64
+ void Start()
65
+ {
66
+ //実行
67
+ PlayerWin();
68
+ }
69
+
70
+ void PlayerWin()
71
+ {
72
+ //実行していなければ実行
73
+ if(!isPlayWin) StartCoroutine(_PlayerWin());
74
+ }
75
+
76
+ IEnumerator _PlayerWin()
77
+ {
78
+ isPlayWin = true;
79
+ //3秒待機
80
+ yield return new WaitForSeconds(3f);
81
+
82
+ BgmManager.Instance.TimeToFade = 0.0f;
83
+ BgmManager.Instance.Play("勝利1");
84
+ UIControl.score += 5000;
85
+
86
+
87
+ ```

1

追記

2017/09/19 11:42

投稿

IShix
IShix

スコア1729

answer CHANGED
@@ -1,6 +1,5 @@
1
- 色々書き方があるかもしれませんが遅延させたい時はコルーチンを使うといと思います。
1
+ 色々書き方があるかもしれませんが遅延させたい時はいつもコルーチンを使っています。
2
2
 
3
-
4
3
  ```C#
5
4
  void Start()
6
5
  {
@@ -17,4 +16,12 @@
17
16
  BgmManager.Instance.Play("勝利1");
18
17
  UIControl.score += 5000;
19
18
  }
20
- ```
19
+ ```
20
+
21
+ **使用上の注意**
22
+ gameObject.SetActive の値がfalseの時、Coroutineを実行しようとすると死にます。
23
+
24
+
25
+ ###UnityのCoroutine(コルーチン)でできる事のメモ
26
+ 色々できるのでこのページを見てみるとプログラムの幅が広がるかもしれません。
27
+ [http://tsubakit1.hateblo.jp/entry/2015/04/06/060608](http://tsubakit1.hateblo.jp/entry/2015/04/06/060608)