Unity シーンの切り替えのチェックポイント【できないときはコレ】

当ページのリンクには広告が含まれています。
Unity シーン切り替え

「シーンの切り替えがうまくいかない・・・」

「シーンの切り替えはできるようになったけど、ぱぱっと切り替わっちゃって味気ない・・・」

なんてことはありませんか?

少し前のわたしのことです・・・。

たくちん

ゲームの形としては完成したけど・・・
クリア画面やゲームオーバー画面も作りたい。

タイトル画面に戻るだけでは面白みがないよね。

ということで今回はシーンを切り替える方法について深掘りします。

わたしはこんな人です
顔 イラスト

たくちん

  • 未経験でも他業種でも「できる」ゲームの作り方を発信中
  • 2歳の娘に挑戦する父ちゃんの背中をみて育ってほしい
  • 娘と一緒に遊べるゲームを!と制作開始→苦労はあったが完成

新しいゲームも作ったよ!(えっへん)

iPhoneアプリとしてリリースもできました!

ひらがなーず~ひらがなあどべんちゃあ~

ひらがなーず~ひらがなあどべんちゃあ~

無料 posted withアプリーチ

シーンの切り替え方法のスクリプトを解説します。
やってみたけどうまくいかないんだよ・・・という方はこちらをチェック

せっかく始めたゲーム開発・・・。

挫折してしまうのはもったいない!

たくちん

朝起きたら、ゲーム開発に関する知識詰め込まれてないかな・・・なんて。

アンケートで分かった「稼ぐこと」ができた学習方法をまとめました。

\ゲーム開発ができる「引き出し」が無限に!/

たくちん

ゲーム開発ができる世界へワープしませんか?

目次

シーンの切り替え方法

  • シーンを作成
  • シーンを遷移するスクリプト
  • オリジナルゲームに当てはめる

シーンの作成

プロジェクトにNew Sceneができれば成功です。

続いてシーンを登録していきましょう。

同じ背景を使いたい場合はコピーするのが便利です。

背景の挿入ってなんだっけ?という方はこちらから。

同じ背景をコピーするための方法

どの部分をコピーすれば良いの?

画像とサイズに関わる部分をコピーすればOK。

つまり画像を選択するSprite Rendererとサイズを調整できるTransformですね。

コピーの仕方は画像にて解説します。

コンポーネントをコピーして貼り付けることで、簡単に同じ背景にすることができます。

たくちん

赤枠の部分をクリックすると詳細を確認できます。

シーンを遷移(移動)するスプリクト

特定のタグが付いたオブジェクトに触れたときシーンが変更されるスクリプト。

if (collision.CompareTag("boom"))
        {
            GameObject targetObject = GameObject.Find("GameManeger");
            targetObject.GetComponent<Scene>().ChangeScene();
            Destroy(collision.gameObject);
        }

if (collision.CompareTag(“boom”)) もし触れたもののタグが(boom)だったら・・・

GameObject targetObject = GameObject.Find(“GameManeger”); ゲームオブジェクトからGameManegerを探してtargetObjectへ代入。

targetObject.GetComponent<Scene>().ChangeScene();targetObjectのScene(スクリプト)からChangeScene()関数を読み込む。

Destroy(collision.gameObject);触れたものは削除してね。

これをプレイヤー(猫ちゃん)にアタッチすると爆弾に当たった際にChangeScene()関数が読み込まれます。

たくちん

一文ずつにすると理解が深まりますね。
もうちょっとです!

using UnityEngine.SceneManagement;

public class Scene : MonoBehaviour
{
    public void ChangeScene()
    {
        StartCoroutine(DelayedSceneChange());
    }

using UnityEngine.SceneManagement; シーンを変更する場合はusing〜が必要。

public void ChangeScene() さきほどのChangeScene()関数の中身ですね。

StartCoroutine(DelayedSceneChange()); コルーチンを使ってシーンを切り替わるまでの秒数をコントロールする関数を呼んでいます。

public float waitTime = 2f;

IEnumerator DelayedSceneChange()
{
    yield return new WaitForSeconds(waitTime);
    SceneManager.LoadScene("GAMEOVERscene");
}

yield return new WaitForSeconds(waitTime); コルーチンを使って2f(2秒)遅延をもたせます。

SceneManager.LoadScene(“GAMEOVERscene”);GAMEOVERsceneを読み込んでシーンが切り替わります。

たくちん

お疲れ様でした!
サクッと切り替わってしまって味気ない・・・
コルーチン詳細についての記事はこちらです。

オリジナルゲームに当てはめると・・・

private void OnTriggerExit2D(Collider2D collision)
{
  if (collision.CompareTag("cat food gold"))
  {
      Destroy(collision.gameObject);
      can += 1;
      Scoretext.text = "Score:" + can + "/" + maxcan;
  }

  if (can >= 10)
  {
      SceneManager.LoadScene("clearscene");
  }

スコアの管理をテキストで表示して10ポイント溜まったらシーンが変わるスプリクトです。

スコアを使ってシーン遷移(移動)

10個目を獲得した瞬間、シーンが切り替わりってますね。

またまた猫ちゃんが・・・!(我が家の猫様の写真が出るようにしました。)

シーンが切り替えがうまくいかないときのチェック

  • シーンの登録
  • スクリプトのシーン名確認
たくちん

かなり苦戦しました・・・
解説します。

シーンの登録

新しいシーンを作成しても登録しなければ呼ばれません。

ファイル→ビルド設定をクリックして作ったシーンが登録されているかチェック。

登録したいシーンを開いて「シーン追加」をクリックして、追加されていることを確認。

登録していないとこんなエラーがでます。

たくちん

登録がされている場合は
シーン名が間違っている可能性が・・・。

スクリプトのシーン名確認

シーン名は任意で決められるから、スクリプトに書くとき間違えやすい。

たくちん

まさかぁ・・・
と思いましたがわたし間違えてました。。

””の中がシーン名になるよう確認してみてくださいね〜。

\ゲーム開発ができる「引き出し」が無限に!/

たくちん

ゲーム開発ができる世界へワープしませんか?

まとめ シーン切り替えのチェックポイント

シーンの切り替え方法をオリジナルゲームを使って解説しました。

これからやってみる方はスクリプトの1文ずつを読み解きながら進めると理解が深まるかと。

もし、うまくいかない場合は・・・

  • シーンの登録
  • スクリプトのシーン名確認

まさかぁ・・・と思ってもこの2つはやりがちなので確認してみてくださいね。

ちゃんと動いてくれると「できる」実感があって嬉しいものです。

たくちん

シーンの切り替えがうまくいきますように。
個人ゲーム開発頑張っていきましょー!

ゲームの作り方総集編!

11ステップであなたもゲームが作れる。喜んでもらえる。

未経験からでも、分かる!が積み上がりゲームを完成できる。

詳細はこちらから。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ゲーム開発をしている人が挫折せず「楽しく続けられること」

知識ゼロからUnityを使ってゲームを完成させることができました。
ゲームの作り方を無料で公開!
ご不明点はお問い合わせまで♪

コメント

コメントする

CAPTCHA


目次