目次

  • 概要
  • UNITEからUnityシーンを呼び出す
  • UnityシーンからUNITEにアクセスする
  • シーンのアンロードについて
  • アセットについて
  • サンプル

 

概要

Unityで作成したシーンとUNITEの行き来ができるようになります。

本機能を使う事で、UNITEの制約に縛られない全く別の表現が可能となります。

本機能を使うには、事前にUnity側でシーンを作成する必要があります。

動作確認できるサンプルを用意しましたので、動くもので確認したい際はご確認ください。

 

UNITEからUnityシーンを呼び出す

[シーン制御] > [Unityシーンを呼び出す]イベントから使用することができます。

bb2d3c67_0378_46f8_9476_7ef644bf6d0f_8d41aa18aa

 

「Unityシーンを呼び出す」イベントコマンドの設定項目は次のとおりです。

888a2873_6d8a_4d6d_8850_8e4e7c994af4_e902fa0cc6

 

① 呼び出すUnityシーンを選択します。

Build Settingsウィンドウを開きます

mceclip0_36_21d14e9f0b

 

あらかじめ作成しておいたUnityシーンをBuild Settingsの「ビルドに含まれるシーン」に追加しておく必要があります。

60d39830_17e5_4e97_9012_7b1c9f86e395_2_6c5f2b466b

そうすることで、イベントコマンドでシーンの選択が可能になります。

76524562_6b52_41cb_b12b_0f3b832e7b48_3dcb65a72e

 

② マップシーンをアンロードするかを選択します

シーンのアンロードにはそれぞれメリット/デメリットが存在します。

1_drawio_4f75ea7220

 

③ 受け渡す変数を指定します

ここで指定する変数は、その値をUniteシーン側で参照できます。

また、UNITEに戻るときにUnityシーンの結果としての値がその変数に格納されます。

※「(なし)」を指定した場合は、参照すると0となり、結果の値は格納されません

※変数はint型として参照・格納されます

 

UnityシーンからUNITEにアクセスする

4c7b33b6_043c_4a55_b20b_195573e9fa9b_2_d2a35be390

 

① 名前空間を指定します。

using RPGMaker.Codebase.Runtime.Event.Screen;

② 「変数」の値を取得します。

CallUnitySceneProcessor.GetVariableValue()

 

③ 戻り値を指定してUNITEシーンに戻ります。

CallUnitySceneProcessor.ReturnToUnite(num)

Unityシーンがアンロードされ、戻り値(num)が変数に格納され、UNITEに戻ります。

 

シーンのアンロードについて

CallUnitySceneProcessor.ReturnToUnite()が呼び出されると、

ロードされている全てのシーンのアンロードが行われます(DontDestroyOnLoadとSceneMapは除く)

破棄されたくないGameObjectは、Object.DontDestroyOnLoad()を使って、DontDestroyOnLoadに移すようにしてください。

それらのGameObjectは、可能な限り、SetActive(false)にして非activeにすることをお願いします。

例えばAudioListnerが複数存在するなど、競合の問題を起こす可能性を減らすためです。

Unityシーンが呼び出されたら、非activeにしたGameObjectはactiveに戻すようにしてください。

 

アセットについて

Unityシーンの実行時に参照するアセットは、UNITEが管理しているアセット、ビルドに含まれるシーンが参照しているアセット、Resources, StreamingAssets配下のアセットのいずれかに含まれている必要があります。

UNITEで行っているAddressableAssetの管理は、UNITEのアセットが対象なので、UnityシーンがAddressableAssetを参照している場合は、追加対応が必要となります。

 

サンプル

以下に本機能のサンプルを紹介します。

UnityシーンとUnityシーンを呼び出すイベントが設置されています。

※インポートを行う際は新規作成した空のプロジェクトでお試しください

 

インポート方法は以下になります。

  1. ダウンロードする
  2. サンプルパッケージをインポートする
  3. BuildSettingを行う
  4. テストプレイを行う

 

1.ダウンロードします

こちら(https://cdn.tkool.jp/updata/unite/UnityScene_Sample.unitypackage)よりサンプルデータをダウンロードします。

ダウンロードデータはunitypackage形式となっています。

 

2.サンプルパッケージをインポートする

UNITEを開き、[アセット]>[パッケージをインポート]>[カスタムパッケージ...]を選択します。

mceclip2_25_16a3a41b1e

 

ダウンロードしたunitypackageファイルを選択すると以下のポップアップ画面が表示されます。

[インポート]ボタンを押下します。

mceclip1_28_fb1ec08ea1

 

しばらくすると「Unityシーン呼び出しテスト」というマップが追加されます。

(マップが追加されない時は再起動をしてください)

 

3.BuildSettingを行う

[RPG Maker]>[レイアウト]>[RPG Maker + Unity Editor]を選択します。

mceclip12_6_67d53c524b

 

Assets\UnityScene_Sample\UnityScene\TestScene.unityをダブルクリックして、シーンを開きます。

mceclip13_10_23e2e60975

 

UNITEのウィンドウに戻り「実行ファイルをビルド」アイコンを選択します。

mceclip5_18_2983521022

 

[シーンを追加]ボタンを押下します。

ビルドに含まれるシーンに「UnityScene_Sample/UnityScene/TestScene」が追加されれば成功です。

mceclip6_13_0ea144848a

 

マップに戻り、プレイヤーの初期位置を設定します。

mceclip9_9_e2fc36251f

 

テストプレイを実行し、クリスタルのイベントにアクションを行います。

mceclip11_7_786f5ef486

 

以下のシーンが表示されればUnityシーンへの遷移成功です。

5秒経つとUNITEに戻ります。

mceclip10_6_19495987ff