用途:本技能面向在 Unity 客户端中连接 SpacetimeDB 的场景,提供 Unity 专属的集成模式;服务端模块开发与通用 C# SDK 用法需参考 spacetimedb-csharp 技能。
主要能力:给出 SpacetimeManager 单例模式管理连接生命周期;通过 DbConnection.Builder() 建立连接,在 OnConnect 回调中保存令牌并订阅表;用 FrameTick() 驱动网络消息处理;用行回调(OnInsert/OnUpdate/OnDelete)同步游戏对象;从 UI 调用 Reducers;读取客户端缓存(按主键 Find、Iter、索引 Filter、Count)。
必要用法:通过 Unity Package Manager 以 git URL 添加 SDK:https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk.git。生成绑定:spacetime generate --lang csharp --out-dir Assets/SpacetimeDB/module_bindings --module-path PATH_TO_MODULE,并将生成文件放入 Assets。常用命令还包括 spacetime start、spacetime publish <module-name> --module-path <backend-dir>、spacetime publish <module-name> --clear-database -y --module-path <backend-dir>、spacetime logs <module-name>。
关键限制:必须在 Update() 中每帧调用 conn?.FrameTick(),否则回调不触发、客户端看似冻结;所有 SDK 调用(FrameTick、conn.Db 访问、reducer 调用)必须在主线程执行,不可从后台线程访问 conn.Db;SpacetimeManager 需 DontDestroyOnLoad 以免切换场景断连;连接应在 Start() 或用户操作时发起,不可放在 Update();令牌通过 PlayerPrefs 保存,失效时服务器会在 OnConnect 回调下发新身份与令牌;IL2CPP/AOT 构建需确保绑定最新,使用程序集剥离时用 link.xml 保留 SpacetimeDB 类型。资料还列出若干不存在的 API(如 SpacetimeDBClient.instance.Connect、NetworkManager.RegisterReducer)及旧 1.0 写法(WithModuleName、ScheduleAt.Time),应改用 2.0 写法。