回答編集履歴
2
追記
answer
CHANGED
@@ -39,4 +39,32 @@
|
|
39
39
|
}
|
40
40
|
}
|
41
41
|
}
|
42
|
+
```
|
43
|
+
|
44
|
+
### [追記] おまけ Coroutineを止めたい場合
|
45
|
+
永遠に繰り返す場合、止めたいタイミングが出てきます。
|
46
|
+
その場合、```StopCoroutine```で止めるか、関数内で```yield break```すると止まります。
|
47
|
+
|
48
|
+
```C#
|
49
|
+
Coroutine ActiveEffectCoroutine;
|
50
|
+
|
51
|
+
void Start()
|
52
|
+
{
|
53
|
+
//代入
|
54
|
+
ActiveEffectCoroutine = StartCoroutine(ActiveEffect());
|
55
|
+
|
56
|
+
//止めたい場合 StopCoroutineを呼ぶ
|
57
|
+
StopCoroutine(ActiveEffectCoroutine);
|
58
|
+
|
59
|
+
}
|
60
|
+
|
61
|
+
IEnumerator ActiveEffect()
|
62
|
+
{
|
63
|
+
//(省略)
|
64
|
+
while (true)
|
65
|
+
{
|
66
|
+
//止めたい場合
|
67
|
+
yield break;
|
68
|
+
}
|
69
|
+
}
|
42
70
|
```
|
1
修正
answer
CHANGED
@@ -1,3 +1,42 @@
|
|
1
|
-
```Startimage```に渡している```GameObject```に```StartEffectScript```をアタッチしてませんか?```Coroutine```は```SetActive(false)```すると止まってしまうので子要素に表示/非表示したいオブジェクトを設定するようにしてください。
|
1
|
+
回答させていただきます。```Startimage```に渡している```GameObject```に```StartEffectScript.cs```をアタッチしてませんか?```Coroutine```は```SetActive(false)```すると止まってしまうので子要素に表示/非表示したいオブジェクトを設定するようにしてください。
|
2
2
|
|
3
|
-

|
3
|
+

|
4
|
+
GameObject <- StartEffectScript.csをアタッチ
|
5
|
+
L Obj <- 表示/非表示したいオブジェクト
|
6
|
+
|
7
|
+
### 何度も繰り返し実行したい場合
|
8
|
+
表示/非表示を何度も繰り返し実行したい場合は、```while```文を使うと良いです。引数を```true```にすると永遠に実行されます。
|
9
|
+
|
10
|
+
```C#
|
11
|
+
using System.Collections;
|
12
|
+
using UnityEngine;
|
13
|
+
|
14
|
+
public class StartEffectScript : MonoBehaviour
|
15
|
+
{
|
16
|
+
public GameObject Startimage;
|
17
|
+
|
18
|
+
void Start()
|
19
|
+
{
|
20
|
+
//メソッド名を渡すのではなくメソッドを直接渡すと良いです。
|
21
|
+
StartCoroutine(ActiveEffect());
|
22
|
+
}
|
23
|
+
|
24
|
+
IEnumerator ActiveEffect()
|
25
|
+
{
|
26
|
+
//何度もnewを繰り返す場合はキャッシュすると微小ですが処理が軽くなります。
|
27
|
+
var EnableWaitTime = new WaitForSeconds(4.5f);
|
28
|
+
var DisableWaitTime = new WaitForSeconds(6.5f);
|
29
|
+
|
30
|
+
while (true)
|
31
|
+
{
|
32
|
+
Startimage.SetActive(false);
|
33
|
+
|
34
|
+
yield return EnableWaitTime;
|
35
|
+
|
36
|
+
Startimage.SetActive(true);
|
37
|
+
|
38
|
+
yield return DisableWaitTime;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
}
|
42
|
+
```
|