久しぶりに書くので,リハビリがてらプチ記事を書きますー
Unityでの非同期処理は色々方法がありますが,中でもThreadはよく使う方法だと思います。
以下は”Threadでループ処理する”…よくある例です。
Thread thread; Start(){ thread = new Thread(); thread = new Thread(new ThreadStart(ThreadMethod)); thread.Start(); } void ThreadMethod(){ while(true){ Debug.Log("Called Cnt"); } } void OnApplicationQuit(){ if(thread!=null){ thread.Abort(); } }
ですが,この内容で実行すると1回目は実行されども2回目に再生した時Editorがフリーズすると思います。
そこで1つ手を加え以下のようにします。
Thread thread; bool isFinished = false; Start(){ thread = new Thread(); thread = new Thread(new ThreadStart(ThreadMethod)); thread.Start(); } void ThreadMethod(){ while(true){ if(isFinished){ break; } Debug.Log("Called Cnt"); } } void OnApplicationQuit(){ if(thread!=null){ isFinished = true; thread.Abort(); } }
フラグを追加し,アプリケーション終了時にループ処理をbreakして抜けています。
おそらくこれでEditorが固まるという問題は回避できると思います。良きUnityライフを!