質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

1076閲覧

【Unity】追加ロードが、PC上のGameビューではうまくいくのに、スマホにビルドすると同時表示になってしまいます。

dragontown

総合スコア16

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2018/11/11 07:32

編集2018/11/23 00:31

以前にも追加ロードに関する質問をしましたが、個別的な条件が細かく、 また、その時点からやや進展したので 追加ロードの全般的な質問として質問させてもらいました。

実現したいこと

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 です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MMashiro

2018/11/16 01:30

Windows(or Mac)向けにビルドして実行しても同時表示になるということはないでしょうか?
dragontown

2018/11/17 09:40

返信ありがとうございます。Windows向けにビルドしてみたのですがエラーになってしまって試せませんでした。今回のこの追加ロードはごく単純なものだと思うのですが、スマホが数年前のものだと追加ロードに対応してないこともあるのでしょうか?だとすれば最新機種で試そうかと思います。
MMashiro

2018/11/18 11:59

スクリプト的には同時表示にみえてもおかしくないスクリプトです。そもそもなのですが同時表示で問題があるのでしょうか?
dragontown

2018/11/18 12:54

今の同時表示のままだと、スマホでアプリを起動したときに同時表示までに20秒近くかかるので、段階的に読み込むようにしたいです。他のUnityを使ったRPGゲームでも広大なマップを追加ロードしてると思いますが、マップ画像をどのように配置し、どのようなコードを使っているのか、どこかにサンプルはないでしょうか?
guest

回答1

0

LoadSceneAsync は、裏でシーンを読み込み、読み込みが終わり次第表示するって関数です
なので、Scene2が0.01秒で読み込み終われば、同時表示に見えるでしょう

やりたいのが、Scene2が読み込み終わってもすぐに表示しない、ということなら
Scene2が読み込み終わってもアクティブにしないようにする必要があります。

その辺は以下のコードを参考にしてもらえればよいかと思います。
https://indie-du.com/entry/2016/09/11/141932

投稿2018/11/17 14:46

izmktr

総合スコア2856

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dragontown

2018/11/18 08:32

回答ありがとうございます Scene1に入ってるpng画像は4000×4000ピクセルで、 Scene2には4000×4000のなどのpngを何枚か並べてるので、 Scene2の読み込みには10秒以上かかります。 画像が大きすぎることが邪魔してるのかと思い、小さな画像で試しても同じでした。
dragontown

2018/11/23 00:32

教えていただいたコードを参考にして追加ロード用のスクリプトを作りScene1に貼って試してみました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問