987名前は開発中のものです。2020/01/11(土) 03:28:33.54ID:MfNXfEnO>>990
コルーチンについて質問させてください。
void Start() {StartCoroutine(A());
}
void Update(){
Debug.Log("update");
}
IEnumerator A(){
Debug.Log("A start");
for (int i = 0; i < 10; i++)
{
Debug.Log("A:"+i);
yield return null;
}
}
とやって動かすと、ログが
A Start
A:0
start end
update
update
A:1
になるんですが、最初のUpdateのあとにコルーチンが実行されないのはどうしてですか?
990名前は開発中のものです。2020/01/11(土) 11:45:27.42ID:GoAReVTm
>>987
>最初のUpdateのあとにコルーチンが実行されないのは
最初のUpdateはスタート直後に動くんだけど、Updateの間隔は不定なので、最初のスタートのオーバーヘッドがUpdateを遅延させてしまい2回ログが出力されたのかと思う
これを修正するには
Update を FixedUpdate にし
yield return null を yield return new WaitForFixedUpdate() にする事で解決は出来る
UpdateとFixedUpdate の動作の違いによる処理の仕様なのかな、一言で言うと
【ゲームエンジン】Unityなんでも質問スレpart1
■ このスレッドは過去ログ倉庫に格納されています
153保存
2020/01/11(土) 13:24:53.19ID:GoAReVTm■ このスレッドは過去ログ倉庫に格納されています