GKC(Game Kit Controller)には、プレイヤーの状態(所持アイテム、スキル、レベル、体力など)を維持したまま別のシーンに移動するための「Map Travel(マップ移動)」および「Level Manager」の仕組みが備わっています。
この仕組みは、GKCのセーブシステムと連動しており、シーン移動時に自動的に現在のプレイヤー状態を一時的に保存し、新しいシーンが読み込まれた直後にその状態を復元することで実現されています。
主なコンポーネントと仕組み
1. Level Manager Ingame
各シーンの特定の地点(入り口や出口など)に配置するコンポーネントです。
- アドレス方式: `Level Manager ID`(自分のID)と `Level Manager ID To Load`(移動先シーンのID)を設定することで、移動先シーン内の特定の地点にプレイヤーを出現させることができます。
- 状態の維持: シーン移動がトリガーされると、内部的に `saveGameSystem` が呼ばれ、プレイヤーの現在の全ステータス(インベントリ、武器、スキル、能力値など)を「自動ロード用スロット」に保存します。
- 自動保存: 新しいシーンに入った際、`gameManager` が保存された状態を検出し、プレイヤーを正しい位置に配置した上でデータを復元します。
2. Travel Station System
いわゆる「ファストトラベル」を実装するためのシステムです。
- UIメニュー: 発見済みのトラベルステーションをリスト表示し、選択した場所にシーンを跨いで移動できます。
- 連動: これも内部的には `Level Manager` の仕組みを利用しており、シーン移動と同時にデータの保存・復元を行います。
3. Save Game System
GKCのセーブシステムは、シーン移動時のデータ引き継ぎの根幹を担っています。
`inventoryManager`、`playerStatsSystem`、`playerSkillsSystem` などの各コンポーネントがセーブシステムに対応しているため、開発者が個別にデータの引き継ぎ処理を書く必要はありません。
実装・確認の手順
Scene1(シーン番号5)からScene2(シーン番号6)に移動する設定を行います。
シーン番号はUnityエディタメニューのファイル→ビルドプロファイルから確認、設定できます。
1. 移動元の設定: シーンに `Level Manager Ingame` オブジェクトを配置し、`Scene Number To Load` に移動先のビルドインデックス(ここでは6)を、`Level Manager ID To Load` に移動先での出現地点ID(ここでは0)を設定します。
2. 移動先の出現地点の設定: 移動先シーンにも `Level Manager Ingame` を配置し、その `Level Manager ID` を移動元で指定した数値(ここでは0)に合わせます。また、`Spawn Player Position Transform` にプレイヤーが出現する位置(Transform)を指定します。
3. トリガーの作成: `activateChangeOfLevel()` 関数をイベント(ボタン、コライダーの侵入など)から呼び出すことで移動が開始されます。
最終更新:2026年06月10日 22:44