SceneLayerEditorの操作方法 - Katsuya100/SceneLayer-Trial GitHub Wiki
SceneLayerプロジェクトの作成
SceneLayerを使うためには、まずエディタ上でセットアップを行います。
このセットアップではSceneLayerプロジェクトと呼ばれるプロジェクトディレクトリを作成します。
手順
- Assets以下の好きな場所にフォルダを作成。フォルダ名は自由につける。 (例:
SceneLayerProjectなど。)

- 作成したフォルダを
右クリック > Create > SceneLayer > Projectを選択

このフォルダがSceneLayerのプロジェクトフォルダになります。
ランタイム準備
ランタイムで、SceneLayerを使うためのセットアップを行います。
このセットアップでは初回起動シーンにコントローラーを配置します。
手順
- 初回起動シーンを作成する。(例:
GameSample.unity) - Hierarchy上で
右クリック > Create Empty - 作成したGameObjectをクリック
- Inspector上で
Add Component > Scene Layer Controllerを選択。

- Entryプロパティに
[SceneLayerプロジェクトフォルダ]/Runtime/Entryをドラッグ&ドロップ。

- シーンを保存する。
SceneLayerEditorの使い方
SceneLayerのシーン遷移を組むためにはSceneLayerEditorを使用します。
ここでは、SceneLayerEditorの機能を一覧して解説していきます。
開き方
[SceneLayerプロジェクトフォルダ]/Editor/SceneLayerProjectを選択。

- Inspectorから
Open Scene Layer Editorを選択。

SceneLayerEditorが開く。

エディタ上の右クリックメニュー

| 機能名 | 説明 |
|---|---|
| Add Layer | Layerを追加する。詳しくはLayerを参照。 |
| Paste Layer | コピーしたLayerを複製して貼り付ける。コピー方法はLayerの右クリックメニューを参照。 |
| Focus Running Layer | Playモード用の機能。実行中のLayerにフォーカスする。 |
| Open Entry Scene | 現在編集中のSceneLayerが関連づいているシーンを開く。関連付けるにはランタイム準備の手順を行う。 |
Layer
Layer とは、一画面の単位のことを指します。
一画面内のゲームシステムや、オブジェクト管理を主な役割としています。
また、Layerをカスタムすればゲームコードの実装が可能になります。
Layerの作成
SceneLayerEditorの何も配置されていない場所で右クリック > Add Layerを選択。

- ノードが生成される。

このノードがLayerです。
Layerを作成すると、実体となるScriptableObjectがProject上に作成されます。
Layerの右クリックメニュー

| 機能名 | 説明 |
|---|---|
| Copy Layer | Layerをコピーする。エディタ上の右クリックメニューのPaste Layerを使って複製する。 |
| Remove Layer | Layerを削除する。 |
| Create Transition | Transitionを作成する。詳しくはTransitionを参照。 |
| Set Entry | 最初に実行するLayerとして設定する。 |
Layerの編集

LayerをクリックするとProject上の実体が選択され、Inspector上に編集画面が表示されます。
| パラメーター | 説明 |
|---|---|
| Active | Layerの有効状態。チェックを外すと無効なLayerになる。 |
| Beheviour Type | Layerの型を指定する。カスタムしたスクリプトを指定できる。(Behaviourをカスタムするを参照。) |
| Name | Layerの名前を指定する |
| Preview Layer | Layerをプレビューする。製品版専用機能。(Layerのプレビュー(製品版のみ)を参照。) |
| + | Loaderを追加する。画面上にオブジェクトを表示するにはLoaderを使う。(Loaderの作成を参照。) |
子Layerの作成
Layerをダブルクリックすると子Layerの作成が行われます。
SceneLayerEditorの上部のバーから親レイヤーの編集画面に戻れます。

Transition
Transitionとは画面遷移を指します。
TransitionによってLayerとLayerをつなぐと、Layer間を遷移できるようになります。
この機能によって、Hierarchyのオブジェクトを変更できます。
Transitionの作成
SceneLayerEditor上にあるLayer上で右クリック > Create Transitionを選択。

- 他の
Layerを選択 Layer間が矢印で結ばれる。

この矢印をTransitionと呼びます。
Transitionの右クリックメニュー

| 機能名 | 説明 |
|---|---|
| Disconnect Transition | Transitionの接続を解除する。 |
Transitionの編集

TransitionをクリックするとProject上の実体が選択され、Inspector上に編集画面が表示されます。
| パラメーター | 説明 |
|---|---|
| Active | Transitionの有効状態。チェックを外すと無効なTransitionになる。 |
| Beheviour Type | Transitionの型を指定する。カスタムしたスクリプトを指定できる。(Behaviourをカスタムするを参照。) |
| Out/In Mapping | Transitionを介してLayer間のデータ転送を設定できる。(Layer間データ転送を参照。) |
| + | 同じ遷移元/遷移先を持つTransitionを作成する。 |
| - | Transitionを削除する。 |
TriggerなどのプリセットされたTransitionについてはプリセットされたBehaviourを参照してください。
AnyからTransitionをつなぐと

AnyからTransitionをつなぐと、すべてのLayerから遷移できるようになります。
ただしTransitionBehaviourのScriptableObjectは1つしか生成されません。
そのため、どのLayerから遷移しても、必ず同じTransitionを使用します。
Loader
LoaderとはアセットをLoadする機能を指します。
Load Instantiate Destroy Unloadを担当します。
Loaderの作成
SceneLayerEditor上にあるLayerを選択。- Inspector上の
+ボタンを選択

- Inspector上に項目が増える。
ここで増えた項目をLoaderと呼びます。
Loaderを作成すると、実体となるScriptableObjectがProject上に作成されます。
Loaderの右クリックメニュー

| 機能名 | 説明 |
|---|---|
| Move Up | Loaderを上に移動する。 |
| Move Most Up | Loaderを一番上に移動する。 |
| Move Down | Loaderを下に移動する。 |
| Move Most Down | Loaderを一番下に移動する。 |
| Duplicate | Loaderを複製する。 |
Loaderの編集

| パラメーター | 説明 |
|---|---|
| Beheviour Type | Loaderの型を指定する。カスタムしたスクリプトを指定できる。(Behaviourをカスタムするを参照。) |
| Name | Loaderの名前を設定する。 |
| Advanced Options | より高レベルな機能。 |
SceneLoaderなどのプリセットされたLoaderについてはプリセットされたBehaviourを参照してください。
Advanced Options

| パラメーター | 説明 |
|---|---|
| Receive Field | Instantiateしたオブジェクトを渡す変数を指定できる。(LoaderのインスタンスイベントをLayerで受け取るを参照。) |
| On Instantiated | Instantiateしたオブジェクトを渡す関数を指定できる。(LoaderのインスタンスイベントをLayerで受け取るを参照。) |
| On Destroyed | Destroyした通知を渡す変数を指定できる。(LoaderのインスタンスイベントをLayerで受け取るを参照。) |
| Load From | どのLayerでLoadを実行するかを指定できる。指定されていないLayerに遷移した場合、Unloadされる。(プリロードを参照) |
| Load.Start | Loadを開始するタイミングをシーケンスイベントで指定する。(Loaderの処理の開始、待機のタイミングを指定するを参照。) |
| Load.Wait For Complete | Loadを待機するタイミングをシーケンスイベントで指定する。(Loaderの処理の開始、待機のタイミングを指定するを参照。) |
| Instantiate.Start | Instantiateを開始するタイミングをシーケンスイベントで指定する。(Loaderの処理の開始、待機のタイミングを指定するを参照。) |
| Instantiate.Wait For Complete | Instantiateを待機するタイミングをシーケンスイベントで指定する。(Loaderの処理の開始、待機のタイミングを指定するを参照。) |
| Destroy.Start | Destroyを開始するタイミングをシーケンスイベントで指定する。(Loaderの処理の開始、待機のタイミングを指定するを参照。) |
| Destroy.Wait For Complete | Destroyを待機するタイミングをシーケンスイベントで指定する。(Loaderの処理の開始、待機のタイミングを指定するを参照。) |
| Unload.Start | Unloadを開始するタイミングをシーケンスイベントで指定する。(Loaderの処理の開始、待機のタイミングを指定するを参照。) |
| Unload.Wait For Complete | Unloadを待機するタイミングをシーケンスイベントで指定する。(Loaderの処理の開始、待機のタイミングを指定するを参照。) |
| Dependence Loader | 複数のLoaderがあるときに利用可能。依存しているLoaderを指定できる。依存を指定すると、依存先が完了するまでLoaderを待機させる。 |