私は、Samsung Gear VRを対象としたUnityアプリケーションを作成しています。データの大きな量(それはシーンをロードするには時間がかかりすぎる)と、バックグラウンドで新しいシーンを読み込む
- 初期シーン
- 2番目のシーン:私は現在、2つのシーンがあります。
最初のシーンから、バックグラウンドで2番目のシーンを読み込み、読み込まれた後に切り替えます。新しいシーンがバックグラウンドでロードされている間、ユーザーはVR環境の一部を見るために頭を動かすことができます。
私はSceneManager.LoadSceneAsync
を使用していますが、それは働いていない:
// ...
StartCoroutiune(loadScene());
// ...
IEnumerator loadScene(){
AsyncOperation async = SceneManager.LoadAsyncScene("Scene", LoadSceneMode.Single);
async.allowSceneActivation = false;
while(async.progress < 0.9f){
progressText.text = async.progress+"";
}
while(!async.isDone){
yield return null;
}
async.allowSceneActivation = true;
}
そのコードを使用すると、シーンが変わることはありません。
これを試しましたが、この場合は30秒後にシーンが正しく変更されます。SceneManager.LoadScene("name")
考えられるすべての問題をカバーしましたが、この場合、シーンが読み込まれないという問題は単純にasync.isDoneのためです。 'async.isDone'を削除する必要があります。あなたは 'yield return null'ステートメントについては正しいですが、これは浮動小数点の比較とは関係ありません。 – Programmer
Unityは0.9でシーンのロードを停止しますか?私はこれでは少し錆びていますが、浮動小数点精度のため実際には0.899999999になる可能性がありません。実際にはwhere句を決して満たさないでしょうか? –
@ ParadoxForgeはいですが、通常は浮動小数点にある程度のエラー修正があります。私は数が非常に低く(例えば0.1)、それがまったくトリガーされることを確認することによってデバッグします。 – Qix