Unity│シーン遷移と画面切り替えの実装方法│ノーコード

Unityでシーン遷移ができるようになると、画像を置いて、遷移範囲を決めて、遷移先を指定するだけでプロトタイピングができます。

この記事では、基本的なシーン遷移から、コードを書かずに画面切り替えする応用テクニックまで紹介します。

基本編:シーン遷移のやり方

まずは最もシンプルなシーン遷移の実装方法です。

シーンの作成

  1. GameObject → UI → Buttonでボタンを作成
  2. 「top」という名前でシーンを保存
  3. シーンを複製して「home」という名前で保存
  4. 見た目がわかりやすいようにボタンのテキストなどを変更しておく

シーンの登録

File → Build Settingsを開き、作成した2つのシーンをドラッグ&ドロップで登録します。

スクリプトの作成

topシーンで以下の作業を行います。

  1. Assets → Create → C# Scriptで「GameController」というスクリプトを作成
  2. 以下のコードを記述

csharp

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class GameController : MonoBehaviour
{
    public void toGameScene()
    {
        SceneManager.LoadScene("home");
    }
}

using UnityEngine.SceneManagement;を追加することで、SceneManagerクラスが使えるようになります。

  1. GameObject → Create Emptyで空のGameObject(GameController)を作成
  2. 作成したスクリプトをGameControllerにドラッグ&ドロップ

スクリプトの登録

  1. Buttonを選択し、On Click()の右下の「+」ボタンをクリック
  2. 「None」の部分にGameControllerをドラッグ&ドロップ
  3. 「No Function」→ GameController → toGameSceneを選択

再生ボタンを押してボタンをクリックすると、シーン遷移できます。

SceneManagerの便利な使い方

基本の遷移

csharp

SceneManager.LoadScene("シーン名");

シーンのアンロード

csharp

SceneManager.UnloadSceneAsync(1);

ビルド番号での遷移

Build Settingsに登録されている番号で遷移することもできます。

csharp

// 番号1のシーンに遷移
SceneManager.LoadScene(1);

// 現在のシーンを残したまま追加読み込み
SceneManager.LoadScene(1, LoadSceneMode.Additive);

次のシーンに進む場合は、現在のシーン番号に+1するだけでも対応できます。

参考リポジトリhttps://github.com/sanukin39/SceneManagerTest

応用編:コードを書かずに画面遷移する方法

Mecanimを使えば、コードなしでUI画面の切り替えアニメーションが作れます。

UIパーツの作成

  1. GameObject → UI → Buttonでボタンを作成
  2. GameObject → UI → Imageで背景を作成
  3. ボタンと背景の親にGameObjectを作成
  4. さらにその親に「View1」という名前のGameObjectを作成
  5. View1を複製して「View2」にする

アニメーションの作成

  1. View1のRect Transform → Anchorsを MIN(0, 0) MAX(2, 1)に変更(右側に画面1つ分拡張)
  2. View1の子のGameObjectのAnchorsを MIN(0.5, 0) MAX(1, 1)に変更
  3. Animationウィンドウで子のGameObjectを選択し、「Create」でアニメーション作成(ToView)
  4. Add PropertyからAnchor MaxとAnchor Minを追加
  5. キーフレームを設定:Min(0→0.5)、Max(0.5→1)
  6. 待機状態のアニメーションも作成(View1用、View2用)
  7. アニメーションのLoop Timeのチェックを外す

Mecanimでの遷移設定

  1. Animatorウィンドウを開く
  2. 右クリック → Create State → Emptyでステートを3つ作成
  3. ステートを繋ぐ:View1 → ToView2 → View2 → ToView1 → View1
  4. ToView1、ToView2のMotionにアニメーションを設定(ToView1はSpeedを-1に)
  5. View1、View2に待機アニメーションを設定
  6. ParametersタブでTriggerを2つ作成(View1、View2)
  7. 各TransitionのConditionsにTriggerを設定

ボタンとアニメーションの紐付け

  1. ボタンを選択し、On Click()の「+」をクリック
  2. AnimatorがついているGameObjectを追加
  3. Animator → SetTrigger(String)を選択し、Trigger名を入力
  4. もう一方のボタンにも同様に設定

これでボタンを押すとアニメーション付きで画面が切り替わります。

画面遷移実装のコツ

方法特徴向いている用途
SceneManager.LoadSceneシンプル、別シーンに完全切り替えステージ切り替え、ゲームオーバー画面
LoadSceneMode.Additive複数シーンを同時に読み込めるUI重ね表示、ポーズ画面
Mecanim + uGUIコード不要、アニメーション自由度高い同一シーン内の画面切り替え

まとめ

  • 基本のシーン遷移はSceneManager.LoadSceneを使う
  • using UnityEngine.SceneManagement;を忘れずに追加
  • Application.LoadLevelは非推奨(Unity 5.3以降)
  • コードを書かずに画面遷移したいならMecanimとuGUIの組み合わせが便利
  • UIの命名を統一し、機能別にアニメーターを分けると管理しやすい

参考:http://qiita.com/ShiroKuro/items/c028d29229fc135bac01

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