※
以前にも追加ロードに関する質問をしましたが、個別的な条件が細かく、 また、その時点からやや進展したので 追加ロードの全般的な質問として質問させてもらいました。
実現したいこと
UnityでRPG用の広いマップ(png)を段階的に繋がっていくように表示させたいと思っています。 現在、Scene1(スタート付近)を表示させた後にScene2を追加表示させることを試しています。
前提・発生している問題
PC上でScene1を開いた状態で、Gameビューにして再生ボタンを押すと、 2,3秒後にScene1に追加される形でScene2が表示されるのに、 ビルドしてスマホで試すと、数秒後にScene1とScene2が同時表示になってしまいます。 こう言う場合、どうすればいいか教えてください。 例えばScene1のMain Cameraの設定で、 カメラで写す範囲の枠(Field of view?)は、最終的に写す範囲全体(Scene1より広範囲)に設定してありますが、 こういうカメラの設定値が影響したりしているのかなど、 他に何かできることがあれば教えてください。 Scene1に入っているものは ・Main Camera ・初めのマップ(png) ・空のGameObject (以下に例示したスクリプトをこの空のGameObjectにつけています) Scene2に入っているもの ・後から表示させたいマップ(png)
該当のソースコード
C#
1using UnityEngine.SceneManagement; 2public class スクリプト名 : MonoBehaviour 3{ 4 void Start() 5 { 6 } 7 void OnEnable() 8 { 9 SceneManager.LoadSceneAsync("Scene2", LoadSceneMode.Additive); 10 } 11}
追記のコード allowSceneActivation
void Start() { StartCoroutine("LoadSceneAndWait"); } IEnumerator LoadSceneAndWait() { float start = Time.realtimeSinceStartup; AsyncOperation ope = SceneManager.LoadSceneAsync("Scene2", LoadSceneMode.Additive); ope.allowSceneActivation = false; while (Time.realtimeSinceStartup - start < 数字) { yield return null; } ope.allowSceneActivation = true; } } start < の数字(秒) は 5 や 15 で試しましたが結果は同じで、 Unity画面での再生では Scene1の画像が表示された状態で「Scene2 (is loading)」となった後にScene2が表示されるのですが、 スマホにビルドすると、起動して15秒ほどしてからScene1とScene2が同時表示になってしまいます。 裏でScene2をロードしている間、Scene1の表示に影響を与えないようなコードは何かないでしょうか? よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
Unityのバージョンは 2018.2.9f1 です。
Windows(or Mac)向けにビルドして実行しても同時表示になるということはないでしょうか?
返信ありがとうございます。Windows向けにビルドしてみたのですがエラーになってしまって試せませんでした。今回のこの追加ロードはごく単純なものだと思うのですが、スマホが数年前のものだと追加ロードに対応してないこともあるのでしょうか?だとすれば最新機種で試そうかと思います。
スクリプト的には同時表示にみえてもおかしくないスクリプトです。そもそもなのですが同時表示で問題があるのでしょうか?
今の同時表示のままだと、スマホでアプリを起動したときに同時表示までに20秒近くかかるので、段階的に読み込むようにしたいです。他のUnityを使ったRPGゲームでも広大なマップを追加ロードしてると思いますが、マップ画像をどのように配置し、どのようなコードを使っているのか、どこかにサンプルはないでしょうか?