SuperAPI AI 工具集

unity

通用与其它

查看项目

更新于 10-15 19:50

技能介绍

用途:在 Unity 客户端中连接 SpacetimeDB,处理连接生命周期、订阅、行回调与断线重连。服务端模块开发另见 csharp-server 技能。

安装:通过 Unity Package Manager 的 git URL 添加 https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk.git(Window > Package Manager > + > Add package from git URL)。生成绑定:spacetime generate --lang csharp --out-dir Assets/SpacetimeDB/module_bindings --module-path PATH_TO_MODULE,生成文件放入 Assets 供 Unity 编译。

主要能力:用 SpacetimeManager 单例管理连接,通过 DbConnection.Builder() 配置 URI、数据库名、令牌与回调;在 OnConnected 中保存令牌并订阅表;用 OnInsert/OnDelete/OnUpdate 行回调同步 GameObject;从 UI 调用 Reducers;读取客户端缓存(Find、Iter、Filter、Count)。

必要用法:FrameTick() 必须在 Update() 每帧调用,否则回调不触发、客户端看似冻结;所有 SDK 调用(FrameTick、conn.Db、reducer)只能在主线程执行。用 DontDestroyOnLoad 防止切场景断连。自动重连用 .WithAutomaticReconnect(),重试采用指数退避与抖动,MinDelay 默认 1 秒、MaxDelay 默认 30 秒,可用 AutomaticReconnectOptions 调整,低于 500 毫秒和 1 秒下限会被提升并警告;Disconnect() 停止重试。初始连接失败不重试。

限制:令牌经 PlayerPrefs 保存并回传可保持同一身份,令牌不过期且丢失不可恢复,自签发身份仅适合开发,生产建议用 OIDC 提供商如 SpacetimeAuth。IL2CPP/AOT 下需确保绑定最新,使用程序集剥离时用 link.xml 保留 SpacetimeDB 类型。断线期间的调用立即失败,挂起的 reducer 可能返回 Status.UnknownResult 且不会重放。其余细节暂未提供。