【Unity / PlayMaker】複数空間を遷移できるポータルシーンの作成方法

この記事では、STYLY GALLERYで公開しているシーンに他のシーンから遷移させる方法を説明します。

シーン遷移を使えば、複数のシーンをまとめて紹介するためのポータルシーンを作ることができます。

完成イメージ

サンプルシーン

このサンプルシーンは複数シーンへつながるポータルシーンになっていて、シーン遷移を体験できます。

遷移先のシーンのサムネイルをクリックするとシーン遷移できます。

※遷移先のシーンには帰り道がないので、一度シーン遷移するとサンプルシーンへは戻れません。

事前準備

UnityのプラグインであるPlayMakerをあらかじめインストールしておきましょう。

はじめてPlayMakerを使用するひとは、あらかじめ以下の記事を一読することで、理解を深めることができます。

STYLY Pluginもインストールしておきましょう。

シーンのURL・GUIDを確認する

シーンを遷移させるためには、遷移先のシーンのGUIDが必要です。

遷移先のシーンをSTYLY GALLERYで開きます。

遷移先のシーンをSTYLY GALLERYで開く

遷移先のシーンをSTYLY GALLERYで開く

そのURLの「https://gallery.styly.cc/scene/」の後ろに続く文字列が遷移先のシーンのGUIDです。

「https://gallery.styly.cc/scene/」の後ろに続く文字列が遷移先のシーンのGUID

「https://gallery.styly.cc/scene/」の後ろに続く文字列が遷移先のシーンのGUID

GUIDは後で使うので、メモを取っておきましょう。

Actionの説明

今回シーン遷移に使うPlayMakerのActionは「Change Styly Scene」です。

このActionはSTYLY Pluginをインストールすることで、使用可能になります。

Change Styly Scene

Change Styly Sceneを使うことでシーンを遷移させられます。

Change Styly Sceneによるシーン遷移

Change Styly Sceneによるシーン遷移

以下の画像が、Change Styly Sceneの中身です。

Change Styly Scene

Change Styly Scene

「Scene Id」には、遷移先のシーンのGUIDを入力します。

「Error Event」には、Actionが正常に動作しなかった場合にどのEventへ遷移するか入力します。

※ここが設定されていないと、Actionが正常に動作しなかった場合、Actionが止まって次のActionを行えないので、必ず設定するようにしてください。

「Error String」のところに変数を指定すると、Actionが正常に動作しなかったときの原因を変数に保存します。

シーンを遷移させる方法

今回はシーンを遷移させる例として、クリックすると他のシーンに移動することができる立方体を作ります。

まずはGameObject → 3D Object → Cubeを選択します。

GameObject → 3D Object → Cubeを選択

GameObject → 3D Object → Cubeを選択

Cubeが選択された状態でInspectorウィンドウ内のAdd Componentをクリックします。

Add Componentをクリック

Add Componentをクリック

Add Componentウィンドウで「PlayMakerFSM」と「Event Trigger」を検索して、追加します。

「PlayMakerFSM」、「Event Trigger」を追加

「PlayMakerFSM」「Event Trigger」を追加

追加されたPlayMakerFSMコンポーネント内の[Edit]ボタンをクリックします。

[Edit]ボタンをクリック

[Edit]ボタンをクリック

開かれたPlayMakerウィンドウの右枠からEventタブを開き、Add Eventに「OpenScene」を入力してEnterキーを押します。

Add Eventに「OpenScene」を入力してEnterキーを押す

Add Eventに「OpenScene」を入力してEnterキーを押す

PlayMakerウィンドウの左枠内を右クリックして、Add Global Transition → OpenSceneを選択します。

Add Global Transition → OpenSceneを選択

Add Global Transition → OpenSceneを選択

ここで、分かりやすいようにSTARTの矢印の先のStateの名前を「Waiting」、OpenSceneの矢印の先のStateの名前を「Change STYLY Scene」に変更します。

PlayMakerウィンドウ右下の[Action Browser]ボタンをクリックして、Actionsウィンドウを開きます。

[Action Browser]ボタンをクリック

[Action Browser]ボタンをクリック

PlayMakerウィンドウでChange STYLY Sceneを選択した後に、Actionsウィンドウから「Change Styly Scene」を追加します。

Change Styly SceneのScene Idに遷移先のシーンのGUIDを入力します。

Change Styly SceneのError EventにNew Event…を選択して、新しいEvent「Error」を追加します。

設定後のState

設定後のState

[Click to Add Transition to State]をクリックします。

[Click to Add Transition to State]をクリック

[Click to Add Transition to State]をクリック

PlayMakerウィンドウ左枠内のChange STYLY Sceneを右クリックして、Add Transition → FINISHEDを選択します。

Add Transition → FINISHEDを選択

Add Transition → FINISHEDを選択

Change STYLY Sceneの下にあるFINISHEDからWaitingへドラッグ&ドロップします。

PlayMakerウィンドウ左枠内の空白を右クリックして、Add Stateを選択します。

追加したStateの名前を「ERROR」に変更します。

Change STYLY Sceneの下にあるErrorからERRORへドラッグ&ドロップします。

遷移先設定後

遷移先設定後

Cubeを選択して、Inspectorウィンドウ内のEvent Triggerの[Add New Event Type]をクリックして、PointerDownを選択します。

[Add New Event Type]をクリックして、PointerDownを選択

[Add New Event Type]をクリックして、PointerDownを選択

右下に表示されている[+]をクリックします。

[+]をクリック

[+]をクリック

None(Object)をCubeに変更して、No FunctionをPlayMakerFSM → SendEvent(string)に変更します。

No FunctionをPlayMakerFSM → SendEvent(string)に変更

No FunctionをPlayMakerFSM → SendEvent(string)に変更

空欄に「OpenScene」と入力します。

空欄に「OpenScene」と入力

空欄に「OpenScene」と入力

ここまででシーン遷移の基本的な部分は完成しました。

次に、もしシーン遷移中に何らかのエラーが発生した場合のための仕組みを作ります。

GameObject → 3D Object → Sphereを選択します。

GameObject → 3D Object → Sphereを選択

GameObject → 3D Object → Sphereを選択

分かりやすいように今作ったSphereの名前を「ErrorSphere」に変更します。

ErrorSphereを見えやすいところへ移動させます。

ErrorSphereを見えやすいところへ移動

ErrorSphereを見えやすいところへ移動

PlayMakerウィンドウでERRORを選択した後に、Actionsウィンドウから「Activate Game Object」を追加します。

Activate Game ObjectのGame ObjectにErrorSphereを選択します。

Game ObjectにErrorSphereを選択

Game ObjectにErrorSphereを選択

ErrorSphereのチェックボックスをオフにして、Inspectorウィンドウで非アクティブ化します。

ErrorSphereを非アクティブ化

ErrorSphereを非アクティブ化

GameObject → UI → Canvasを選択します。

作成したCanvasを右クリックしてUI → Textを選択します。

作ったTextの名前を「ErrorMessage」にします。

CanvasとErrorMessage追加後

CanvasとErrorMessage追加後

Canvasを選択して、Inspectorウィンドウ内のCanvasのRender ModeをScreen Space – Overlayに設定します。

Render ModeをScreen Space - Overlayに設定

Render ModeをScreen Space – Overlayに設定

ErrorMessageの位置とサイズを見えやすいように設定します。

ErrorMessageの位置とサイズを見えやすいように設定

ErrorMessageの位置とサイズを見えやすいように設定

Cubeを選択して、さらにPlayMakerウィンドウでChange STYLY Sceneを選択して、そのStateの中のChange Styly SceneのError StringにNew Variable…を選択して、新しい変数「ErrorString」を追加します。

Error Stringに新しい変数「ErrorString」を追加

Error Stringに新しい変数「ErrorString」を追加

PlayMakerウィンドウでERRORを選択して、Actionsウィンドウから「UI Text Set Text」と「Activate Game Object」を追加します。

UI Text Set TextのGame ObjectにErrorMessageを選択します。

UI Text Set TextのTextに変数ErrorStringを設定します。

Activate Game ObjectのGame ObjectにCanvasを選択します。

設定後のState

設定後のState

Canvasを選択して、Inspectorウィンドウで非アクティブ化します。

Canvasを非アクティブ化

Canvasを非アクティブ化

Cubeを選択し、PlayMakerウィンドウ左枠内のERRORを右クリックして、Add Transition → FINISHEDを選択します。

Add Transition → FINISHEDを選択

Add Transition → FINISHEDを選択

ErrorCheckの下にあるFINISHEDからWaitingへドラッグ&ドロップします。

FINISHEDからWaitingへドラッグ&ドロップ

FINISHEDからWaitingへドラッグ&ドロップ

以上で、シーン遷移中に何らかのエラーが発生した場合に、Cubeの上にErrorSphereがアクティブ化して、エラー内容を表示する仕組みができました。

エラーが発生した場合、次のようになります。

 

デバックにも役立つので、ぜひ活用してみてください。

元のシーンへの帰り道を作る

Change Styly Sceneでシーンを遷移した場合は、元のシーンへの帰り道を遷移先に用意しなければ帰ることができません。

元のシーンと遷移先のシーンで行き来したい場合は、上記のようなシーンを遷移させるオブジェクトを遷移先にも追加しましょう。

以上でシーンを遷移させる方法の解説は終わりです。

今回はシーンを遷移する機能をCubeに付けましたが、ほかにもさまざまなオブジェクトに付与することができます。

皆さんもぜひこれを使ってポータルシーンを作成してみてください。

STYLYにアップロードする方法

今回作成したものをSTYLYにアップロードしてみましょう。

STYLYアカウントを作成する

アカウント作成方法

STYLYにアップロードする方法

UnityからSTYLYにアップロードする方法

STYLYに関する質問、バグ報告、改善してほしい要望はSTYLY FORUMまで
https://jp.forum.styly.cc/support/discussions