質問編集履歴
10
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -64,7 +64,7 @@
|
|
64
64
|
|
65
65
|
|
66
66
|
|
67
|
-
|
67
|
+
bboydaisukeさんの回答を受けての追記:デリゲートでの記述
|
68
68
|
|
69
69
|
---
|
70
70
|
|
@@ -131,3 +131,21 @@
|
|
131
131
|
}
|
132
132
|
|
133
133
|
```
|
134
|
+
|
135
|
+
katsukoさんの回答を受けての結論
|
136
|
+
|
137
|
+
---
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
コルーチンはプログラムを任意の箇所で中断・再開するしくみという認識が正確に出来ていなかったようです。
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
`() => StartCoroutine( CorutineTest() )`は毎回初期位置に戻って呼び出されるので`Debug.Log`が呼ばれる。
|
146
|
+
|
147
|
+
`() => StartCoroutine( enumerator )`は初期位置に戻らないので`Debug.Log`が呼ばれない。
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
上記動作の違いがある為に差異が発生していました。
|
9
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -60,7 +60,7 @@
|
|
60
60
|
|
61
61
|
UnityAction型での関数呼び出しではこういった違いが無いのは確認しています。
|
62
62
|
|
63
|
-
`UnityAction`は`delegate`
|
63
|
+
`UnityAction`は`delegate`、`IEnumerator`は`interface`なのでこの辺りの違いから発生している事かと調べていますが詳しい記述がヒットしないので質問させて頂きました。
|
64
64
|
|
65
65
|
|
66
66
|
|
8
追記修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -64,13 +64,13 @@
|
|
64
64
|
|
65
65
|
|
66
66
|
|
67
|
-
追記:
|
67
|
+
解決後の追記:デリゲートでの記述
|
68
68
|
|
69
69
|
---
|
70
70
|
|
71
71
|
|
72
72
|
|
73
|
-
bboydaisukeさんが提示してくれたサイトを参考に**コルーチン用のデリゲート**を用意してそれに代入して呼び出すように変更すれば複数回呼び出せるようになりました。
|
73
|
+
bboydaisukeさんが提示してくれたサイトを参考に**コルーチン用のデリゲート**を用意してそれに代入して呼び出すように変更すれば問題無く複数回呼び出せるようになりました。
|
74
74
|
|
75
75
|
|
76
76
|
|
7
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -76,8 +76,6 @@
|
|
76
76
|
|
77
77
|
内部的処理の説明などまだ完璧では無いですが対処法は今後大丈夫そうです。
|
78
78
|
|
79
|
-
ありがとうございました。
|
80
|
-
|
81
79
|
|
82
80
|
|
83
81
|
```C#
|
6
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -112,9 +112,9 @@
|
|
112
112
|
|
113
113
|
|
114
114
|
|
115
|
-
button[ 0 ].onClick.AddListener( () => StartCoroutine( CorutineTest() ) );
|
115
|
+
button[ 0 ].onClick.AddListener( () => StartCoroutine( CorutineTest() ) ); // 何度も呼び出せる
|
116
116
|
|
117
|
-
button[ 1 ].onClick.AddListener( () => StartCoroutine( corutineDelegate () ) );
|
117
|
+
button[ 1 ].onClick.AddListener( () => StartCoroutine( corutineDelegate () ) ); // 何度も呼び出せる
|
118
118
|
|
119
119
|
}
|
120
120
|
|
5
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -74,7 +74,7 @@
|
|
74
74
|
|
75
75
|
|
76
76
|
|
77
|
-
内部的処理の
|
77
|
+
内部的処理の説明などまだ完璧では無いですが対処法は今後大丈夫そうです。
|
78
78
|
|
79
79
|
ありがとうございました。
|
80
80
|
|
4
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -64,7 +64,11 @@
|
|
64
64
|
|
65
65
|
|
66
66
|
|
67
|
-
|
67
|
+
追記:複数回呼び出せる記述
|
68
|
+
|
69
|
+
---
|
70
|
+
|
71
|
+
|
68
72
|
|
69
73
|
bboydaisukeさんが提示してくれたサイトを参考に**コルーチン用のデリゲート**を用意してそれに代入して呼び出すように変更すれば複数回呼び出せるようになりました。
|
70
74
|
|
3
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -61,3 +61,71 @@
|
|
61
61
|
UnityAction型での関数呼び出しではこういった違いが無いのは確認しています。
|
62
62
|
|
63
63
|
`UnityAction`は`delegate`で`IEnumerator`は`interface`なのでこの辺りの違いから発生している事かと調べていますが詳しい記述がヒットしないので質問させて頂きました。
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
**・追記**
|
68
|
+
|
69
|
+
bboydaisukeさんが提示してくれたサイトを参考に**コルーチン用のデリゲート**を用意してそれに代入して呼び出すように変更すれば複数回呼び出せるようになりました。
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
内部的処理の違いなどまだ完璧では無いですが対処法は今後大丈夫そうです。
|
74
|
+
|
75
|
+
ありがとうございました。
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
```C#
|
80
|
+
|
81
|
+
using UnityEngine;
|
82
|
+
|
83
|
+
using System.Collections;
|
84
|
+
|
85
|
+
using UnityEngine.UI;
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
public class TestCode : MonoBehaviour
|
90
|
+
|
91
|
+
{
|
92
|
+
|
93
|
+
[SerializeField]
|
94
|
+
|
95
|
+
Button[] button = null;
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
private delegate IEnumerator CoroutineDelegate();
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
private void Start()
|
104
|
+
|
105
|
+
{
|
106
|
+
|
107
|
+
CoroutineDelegate corutineDelegate = CorutineTest;
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
button[ 0 ].onClick.AddListener( () => StartCoroutine( CorutineTest() ) );
|
112
|
+
|
113
|
+
button[ 1 ].onClick.AddListener( () => StartCoroutine( corutineDelegate () ) );
|
114
|
+
|
115
|
+
}
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
IEnumerator CorutineTest()
|
120
|
+
|
121
|
+
{
|
122
|
+
|
123
|
+
Debug.Log( "A" );
|
124
|
+
|
125
|
+
yield return null;
|
126
|
+
|
127
|
+
}
|
128
|
+
|
129
|
+
}
|
130
|
+
|
131
|
+
```
|
2
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
-
下記の様にボタン二つを用意して「そのまま呼び出す」、「代入して呼び出す」を試しましたが後者の方は一回しか呼び出せません。
|
7
|
+
下記の様にボタン二つを用意して同じコルーチンを「そのまま呼び出す」、「代入して呼び出す」を試しましたが後者の方は一回しか呼び出せません。
|
8
8
|
|
9
9
|
|
10
10
|
|
1
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -60,4 +60,4 @@
|
|
60
60
|
|
61
61
|
UnityAction型での関数呼び出しではこういった違いが無いのは確認しています。
|
62
62
|
|
63
|
-
`UnityAction`は`delegate`で`IEnumerator`は`interface`なのでこの辺りの違いから発生している事かと調べていますが詳しい記述が
|
63
|
+
`UnityAction`は`delegate`で`IEnumerator`は`interface`なのでこの辺りの違いから発生している事かと調べていますが詳しい記述がヒットしないので質問させて頂きました。
|