【ハルシオンブログ】シーン移動の際に、次のシーンが重いとき。ローディング画面的なのをかましたくなりますよね?そのやり方。
こんにちは!坂内っす。
熱い!暑い!夏ですね!梅雨もあけました。
熱射病、日射病にお気をつけをば。
Unityでローディング画面とか作ってみましょう。
次のシーンに移動する際に、次シーンのロード(始めに色々ロードとかすると長いよね)が長くて、「タップしたのにシーン移動しないよー」って時に、簡単なロード画面を挟む方法。
①初期画面(StartSceneシーン)でボタンを押す
②シーン移動
③次画面(NextSceneシーン)で音楽データ(4曲)、画像データ(1枚)を読み込んでメモリにいれて、画面に表示する。
あ、そういえばソシャゲ「メギド72」の楽曲無料ダウンロードとかのイベントやってるんですね。
https://app.famitsu.com/20180702_1318019/
あ、メギドやったことないっすけどね。
ってことで、4曲遊びで落としてみたのを、読み込んでみます。

1ファイル1ファイルがでかいっすね。
あと1枚絵を置いてます。
コードはこんな感じ。
【StartScene.cs】(始めのシーンにつけてね)
【NextScene.cs】(ボタン押した後に開かれるシーンにつけてね)

こんな感じで、曲をアサインしているだけ。

実際に動かすと、こうなります。
実際にどれくらいボタンを押してから次シーンが開くまで時間がかかるか試してみましょう。
PCなのでそれなりに早いですが、スマホだとクリックした後の反応がない。
こんな時はローディング画面を使うといいですよね。
まぁ、他のサイトが書いてるので2番煎じになりますが。
①ローディング画面をシーン移動の前のシーン(StartScene)につけます。
ローディング画面にはプログレス用のSliderを付けてます。
また、ローディング画面ははじめActiveを外しておきます。

②StartScene.csをいじります。
こんな感じでやれば、ローディング画面ができます。
では実際に実行してみよう。
なんかあんまりロード長くないからかもだけど、一応それぽくなりました?
実機だとちゃんとローディング画面として機能してますよ!

ってことで、簡単にですが、ローディング画面の作り方でした!
ではあでゅ~ノシ
熱い!暑い!夏ですね!梅雨もあけました。
熱射病、日射病にお気をつけをば。
Unityでローディング画面とか作ってみましょう。
次のシーンに移動する際に、次シーンのロード(始めに色々ロードとかすると長いよね)が長くて、「タップしたのにシーン移動しないよー」って時に、簡単なロード画面を挟む方法。
①初期画面(StartSceneシーン)でボタンを押す
②シーン移動
③次画面(NextSceneシーン)で音楽データ(4曲)、画像データ(1枚)を読み込んでメモリにいれて、画面に表示する。
あ、そういえばソシャゲ「メギド72」の楽曲無料ダウンロードとかのイベントやってるんですね。
https://app.famitsu.com/20180702_1318019/
あ、メギドやったことないっすけどね。
ってことで、4曲遊びで落としてみたのを、読み込んでみます。

1ファイル1ファイルがでかいっすね。
あと1枚絵を置いてます。
コードはこんな感じ。
【StartScene.cs】(始めのシーンにつけてね)
using UnityEngine;
using UnityEngine.SceneManagement;
public class StartScene : MonoBehaviour {
public void OnClickNext() {
SceneManager.LoadScene("NextScene");
}
}
【NextScene.cs】(ボタン押した後に開かれるシーンにつけてね)
using UnityEngine;
using UnityEngine.UI;
public class NextScene : MonoBehaviour {
public AudioClip[] audios;
public Image imgTest;
public Sprite testSprite;
private void Start() {
imgTest.sprite = testSprite;
}
}

こんな感じで、曲をアサインしているだけ。

実際に動かすと、こうなります。
実際にどれくらいボタンを押してから次シーンが開くまで時間がかかるか試してみましょう。
PCなのでそれなりに早いですが、スマホだとクリックした後の反応がない。
こんな時はローディング画面を使うといいですよね。
まぁ、他のサイトが書いてるので2番煎じになりますが。
①ローディング画面をシーン移動の前のシーン(StartScene)につけます。
ローディング画面にはプログレス用のSliderを付けてます。
また、ローディング画面ははじめActiveを外しておきます。

②StartScene.csをいじります。
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class StartScene : MonoBehaviour {
private AsyncOperation async;
public GameObject loadingSetPref;
public Slider gage;
public void OnClickNext() {
loadingSetPref.SetActive(true);
StartCoroutine(LoadScene());
}
IEnumerator LoadScene() {
yield return new WaitForSeconds(0.1f);
async = SceneManager.LoadSceneAsync("NextScene");
async.allowSceneActivation = false;
while(async.progress < 0.9f) {
gage.value = async.progress;
yield return null;
}
gage.value = 1f;
yield return new WaitForSeconds(1f);
async.allowSceneActivation = true;
}
}
こんな感じでやれば、ローディング画面ができます。
では実際に実行してみよう。
なんかあんまりロード長くないからかもだけど、一応それぽくなりました?
実機だとちゃんとローディング画面として機能してますよ!

ってことで、簡単にですが、ローディング画面の作り方でした!
ではあでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】またコルーチンで嵌るの巻 オブジェクト非表示でも動かなくなるんすね。 | 【ハルシオンブログ】MenuItemの追加とショートカット »
コメント
| h o m e |