Unity Quick Start
このページでは最小の Core 接続を扱います。Multiplayer は Playing 開始後、
RoomNode の reliable / unreliable lane でゲームデータを同期します。
Core は現在の Unity runtime platform を Desktop、Mobile の順に判定し、
一致した runtime を 1 つだけ作成します。attach 失敗で platform は切り替わらず、
利用者による選択も不要です。Multiplayer は platform や初期化 mode を持ちません。Runtime は Core から
descriptor を取得するか、呼び出し元から明示的に受け取ります。
RoomChanged と Runtime のルームライフサイクル API は Game data plane の
接続入口ではありません。
cn.indiegp.sdk.unityを導入済み- Unity
2022.3 LTS - Windows 10 以上
- IGP 運用から割り当てられた
appId - Desktop 機能を確認する場合、対応する IGP デスクトップクライアントに ログイン済み
1. 最小初期化スクリプトを追加する
Section titled “1. 最小初期化スクリプトを追加する”Assets/Scripts/IGPQuickstartDriver.cs を作成します。
using IGP.UnitySDK;using UnityEngine;
public sealed class IGPQuickstartDriver : MonoBehaviour{ [SerializeField] private IGPRuntimeManager runtime;
private async void Start() { runtime ??= FindObjectOfType<IGPRuntimeManager>(); if (runtime == null || !await runtime.InitializeAsync()) { Debug.LogError("IGP Core initialization failed."); return; }
Debug.Log($"IGP Core ready. Desktop attached={runtime.IsDesktopSessionAttached}"); }
[ContextMenu("IGP/Unlock Quickstart Achievement")] private async void UnlockAchievement() { var result = await IGPSDK.UnlockAchievementAsync(runtime, "first_session"); Debug.Log($"Unlock success={result.success}, duplicated={result.duplicated}"); }}2. シーンを設定する
Section titled “2. シーンを設定する”IGPBootstrapなどの常駐オブジェクトを作成します。IGPRuntimeManagerとIGPQuickstartDriverを追加します。- 生成された
IGPConfigにappIdを設定します。 - 有効な
IGPRuntimeManagerは 1 つだけにします。
コンポーネントを置くだけでは SDK は起動しません。ゲームの起動処理から
InitializeAsync() を明示的に呼び出してください。
3. 確認する
Section titled “3. 確認する”Play mode で次を確認します。
InitializeAsync()が成功する。- Desktop 機能を使う場合、
IsDesktopSessionAttached == trueになる。 - 必要に応じて実績コマンドを実行し、結果を確認する。
Core の初期化成功は、RoomNode データプレーン接続を意味しません。現在の
Host の descriptor 経路がない場合、Multiplayer は warning を記録し、
IsRuntimeCreated == false のままです。IsRuntimeCreated、IsRealtimeReady、
Game メッセージ送受信で検証し、RoomChanged を受け入れ条件にしないでください。
セーブルートディレクトリ
Section titled “セーブルートディレクトリ”InitializeAsync() 完了後、ゲームは runtime.RuntimeInfo.SaveRootPath から現在の
ゲームインスタンスのセーブルートを取得し、そのディレクトリ配下にゲーム独自の
セーブファイルを整理、作成、読み書きできます。
var saveRootPath = runtime.RuntimeInfo.SaveRootPath;この値は Host が提供します。利用可能なディレクトリがない場合、プロパティは空文字列
になるため、別のローカル保存先を使うかどうかはゲーム側で決めてください。SDK はこの
ディレクトリを作成、変更、削除、管理せず、返されたパスの正規化も行いません。
SaveRootPath はコマンドライン引数ではなく、--game-params は任意のゲーム起動文字列を
渡すためだけに使用します。