mcpField
S
spacetimedb-client-c-sharp

spacetimedb-client-c-sharp

github.com/danmossa開発2152 回インストール19 週間前に更新
リポジトリ

spacetimedb-client-c-sharp について

SpacetimeDB を使った C# および Unity クライアント実装のスキルで、バインディング生成、接続、サブスクリプション、実行時のルールを扱います。プロジェクト生成の API を使い、Unity のライフサイクルコードと生成コードを分離する方法を示します。

主な機能

  1. 01C# クライアントバインディングを生成
  2. 02接続とサブスクリプションを設定
  3. 03購読した行の読み取りとイベント処理
  4. 04Reducer の呼び出しとコールバック登録
  5. 05Unity の実行時・スレッド規則を順守

活用シーン

  1. 01SpacetimeDB の C# クライアントを構築
  2. 02Unity プロジェクトをデータベースに接続
  3. 03テーブル更新の読み取りと Reducer の呼び出し

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/danmossa/spacetimedb-skills --skill spacetimedb-client-c-sharp

インストール後、Claude Code で/spacetimedb-client-c-sharpを入力して読み込まれたか確認します。

同梱ファイルreferences/clients-c-sharp.md

詳細

C# および Unity クライアントの実装にこのスキルを使用します。

C# の基本パターン

C# バインディングを生成し、ユーザーのプロジェクトで生成された DbConnection、RemoteTables、RemoteReducers の名前を使用します。

spacetime generate --lang csharp --out-dir client/module_bindings --module-path spacetimedb
var conn = DbConnection.Builder()
    .WithUri(new Uri("ws://localhost:3000"))
    .WithDatabaseName("my-database")
    .OnConnect((conn, identity, token) =>
    {
        conn.SubscriptionBuilder().SubscribeToAllTables();
    })
    .OnConnectError((ctx, err) => Log.Error(err.ToString()))
    .OnDisconnect((ctx, err) => Log.Info("Disconnected"))
    .Build();

実行時のルール

  • メインループまたは Unity の更新処理から conn.FrameTick() を呼び出します。そうしないと、コールバックとキャッシュの更新が適用されません。
  • メインスレッドのコードが conn.Db を読み取っている間、バックグラウンドスレッドで FrameTick() を実行しないでください。
  • conn.Db.<Table>.Iter()、Count、および生成されたユニークハンドル/インデックスハンドルを通じて、購読中の行を読み取ります。
  • OnInsert、OnDelete、OnUpdate でテーブルイベントを登録します。OnUpdate には主キーが必要です。
  • conn.Reducers.<ReducerName>(...) でリデューサーを呼び出し、必要に応じて生成されたリデューサーイベントを登録します。
  • Unity のライフサイクルコードは MonoBehaviour またはサービスクラスに記述し、生成されたバインディングは編集しないでください。

リファレンスマップ

必要なもの開く
C# SDK APIreferences/clients-c-sharp.md

ガイダンス

  • 利用できる場合は、ユーザーのプロジェクトで生成された C# バインディング名を使用します。
  • プロジェクトですでに統合されている場合を除き、Unity のライフサイクルコードは生成されたバインディングコードと分離します。
  • Unity のチュートリアル全般に関する作業は spacetimedb-tutorials に振り分けます。

コメント