LoginSignup
16
16

More than 5 years have passed since last update.

Scene Managerの使い方[有料Asset]

Last updated at Posted at 2012-12-23

Unityでシーンを遷移するときってヽ(゚∀゚)ノ パッと切り替わってしまって美しくないと思ったことありませんか?
中には自前でフェードのスクリプトを作っている方もいると思いますが、そんな時間がない!とかめんどくさがり屋の僕のような方にお得なアセットです。

本家URL

http://docs.ancientlightstudios.com/display/SCEMA/Scene+Manager
ページ内の動画でこんなことができるよ!というのが確認できます。
ちなみにAsset Storeで買った時点では$35でした。

使い方

インポートする

インポートする
まずはAsset Storeからプロジェクトにインポートします。

シーンをいっぱい作る

シーンをいっぱいつくる
こんな構成で作ってみます

  • タイトル画面
  • ステージ1
  • ステージ2
  • ステージ3
  • ステージ4
  • ステージ5

設定ファイルを作る

Configurationディレクトリ
Scene Managerの設定ファイルは設置場所が決まっています。
「Resources」ディレクトリを作成し、その中に任意の名前でもう一つディレクトリを作成します。
今回は「Configuration」という名前で作ります。

Create
作成したディレクトリ内で「右クリック→Create」を表示させ「Scene Configuration」を選択すると、

設定ファイル
設定ファイルができました!

シーンを登録する

Inspector
設定ファイルのInspectorをみるとこんなかんじです。
プロジェクト内のシーンファイルが全て見えるようになっています。
サンプルのシーンが邪魔です。

ボタンの説明をすると

  • 「level」→ゲームでごりごり動くシーン
  • 「screen」→タイトル画面や結果画面などあんまり動かないシーン
  • 「ignore」→選択したシーンをゲームから外す
  • 「First Screen」→最初の画面
  • 「After last Level」→最後のレベルの後に遷移する画面

詳しくはこちら

これを
シーン設定
こんな感じに設定します。
設定したら「Activate」ボタンを押して設定を反映させます。

その後、おもむろに「File→Build Setting」を見てみると・・
BuildSetting
なんと今設定したシーンがちゃんと登録されているではありませんか!ステキ!抱いて!

ラッパーをつくる

公式リファレンスによると、ラッパーを作れとのこと。
Assetに含んでおいてくれればいいのに。

GameEnvironment.cs
using System;
using UnityEngine;
public class GameEnvironment {

 private static GameEnvironment instance;
 private SMSceneManager sceneManager;

 public static GameEnvironment Instance {
   get {
     if (instance == null) {
       instance = new GameEnvironment();
     }
     return instance;
   }
 }

 public SMSceneManager SceneManager {
   get {
     return sceneManager;
   }
 }

 private GameEnvironment() {
   sceneManager = new SMSceneManager(SMSceneConfigurationLoader.LoadActiveConfiguration("{任意のディレクトリ名}"));
   sceneManager.LevelProgress = new SMLevelProgress(); 
 } 
}

これを作っておくとどこからでもstaticで呼べます。
任意のディレクトリ名は先程Resourcesの下に作ったディレクトリ名を入れます。
今回の場合「Configuration」です。
ちなみにリファレンスにあるサンプルはtypoしてました。

シーンを遷移させる

今回は
タイトル→1→2→3→4→5→タイトル→1→2→・・・
このように遷移させたいと思います。

まずタイトルシーンから最初のレベルに遷移したいので

Title.cs
GameEnvironment.Instance.SceneManager.LoadFirstLevel();

ステージシーンでは次のステージに遷移したいので

Stage.cs
GameEnvironment.Instance.SceneManager.LoadNextLevel();

これらをそれぞれシーン内のオブジェクトにくっつけます。

そしてできたサンプルが→こちら

少しイジってフェード以外の効果を出してみました。
しかしこの効果Mobileでは動かなかった・・

とはいえシーン管理はとてもしやすそうでいい感じです。
これからのアップデートに期待です。

16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16