AddressableのLoadAsyncをStart()内で待つと固まる
最近UnityでAddressableを使ったアセットのロードをすることが増えてきました。
ある時MonoBehaviourのStart()関数内でこのような関数を実行したとき、Unityが固まるようになりました。
void Start(){ m_handle = Addressables.LoadAssetsAsync<GameObject>(_labelReference, null); m_handle.Task.Wait(); }
原因
どうやら、Start()内でAddressables.LoadAssetsAsyncの完了をWait()関数で待とうとするといつまでたっても終わらずにフリーズしてしまうようです。
非同期でのWait()関数はデッドロックが発生しやすいらしく、調べてみると他にも色々な事例を見ることができます。
qiita.com
解決策?
解決策としては、Wait()をせずにコールバック関数などで制御するかでしょうか。
非同期はデッドロックが起こった場合の対処が難しいです…