回答編集履歴

2

追記

2019/03/31 07:07

投稿

IShix
IShix

スコア1724

test CHANGED
@@ -81,3 +81,59 @@
81
81
  }
82
82
 
83
83
  ```
84
+
85
+
86
+
87
+ ### [追記] おまけ Coroutineを止めたい場合
88
+
89
+ 永遠に繰り返す場合、止めたいタイミングが出てきます。
90
+
91
+ その場合、```StopCoroutine```で止めるか、関数内で```yield break```すると止まります。
92
+
93
+
94
+
95
+ ```C#
96
+
97
+ Coroutine ActiveEffectCoroutine;
98
+
99
+
100
+
101
+ void Start()
102
+
103
+ {
104
+
105
+ //代入
106
+
107
+ ActiveEffectCoroutine = StartCoroutine(ActiveEffect());
108
+
109
+
110
+
111
+ //止めたい場合 StopCoroutineを呼ぶ
112
+
113
+ StopCoroutine(ActiveEffectCoroutine);
114
+
115
+
116
+
117
+ }
118
+
119
+
120
+
121
+ IEnumerator ActiveEffect()
122
+
123
+ {
124
+
125
+ //(省略)
126
+
127
+ while (true)
128
+
129
+ {
130
+
131
+ //止めたい場合
132
+
133
+ yield break;
134
+
135
+ }
136
+
137
+ }
138
+
139
+ ```

1

修正

2019/03/31 07:07

投稿

IShix
IShix

スコア1724

test CHANGED
@@ -1,5 +1,83 @@
1
- ```Startimage```に渡している```GameObject```に```StartEffectScript```をアタッチしてませんか?```Coroutine```は```SetActive(false)```すると止まってしまうので子要素に表示/非表示したいオブジェクトを設定するようにしてください。
1
+ 回答させていただきます。```Startimage```に渡している```GameObject```に```StartEffectScript.cs```をアタッチしてませんか?```Coroutine```は```SetActive(false)```すると止まってしまうので子要素に表示/非表示したいオブジェクトを設定するようにしてください。
2
2
 
3
3
 
4
4
 
5
5
  ![イメージ説明](246d42744c91111598cdb34d0dafb061.png)
6
+
7
+ GameObject <- StartEffectScript.csをアタッチ
8
+
9
+ L Obj <- 表示/非表示したいオブジェクト
10
+
11
+
12
+
13
+ ### 何度も繰り返し実行したい場合
14
+
15
+ 表示/非表示を何度も繰り返し実行したい場合は、```while```文を使うと良いです。引数を```true```にすると永遠に実行されます。
16
+
17
+
18
+
19
+ ```C#
20
+
21
+ using System.Collections;
22
+
23
+ using UnityEngine;
24
+
25
+
26
+
27
+ public class StartEffectScript : MonoBehaviour
28
+
29
+ {
30
+
31
+ public GameObject Startimage;
32
+
33
+
34
+
35
+ void Start()
36
+
37
+ {
38
+
39
+ //メソッド名を渡すのではなくメソッドを直接渡すと良いです。
40
+
41
+ StartCoroutine(ActiveEffect());
42
+
43
+ }
44
+
45
+
46
+
47
+ IEnumerator ActiveEffect()
48
+
49
+ {
50
+
51
+ //何度もnewを繰り返す場合はキャッシュすると微小ですが処理が軽くなります。
52
+
53
+ var EnableWaitTime = new WaitForSeconds(4.5f);
54
+
55
+ var DisableWaitTime = new WaitForSeconds(6.5f);
56
+
57
+
58
+
59
+ while (true)
60
+
61
+ {
62
+
63
+ Startimage.SetActive(false);
64
+
65
+
66
+
67
+ yield return EnableWaitTime;
68
+
69
+
70
+
71
+ Startimage.SetActive(true);
72
+
73
+
74
+
75
+ yield return DisableWaitTime;
76
+
77
+ }
78
+
79
+ }
80
+
81
+ }
82
+
83
+ ```