限制
Cloud Code 模块对您可以处理的数据量有限制。
Cloud Code API
- Cloud Code Client API 服务将每个玩家限制为每分钟 12,000 个请求。
- Cloud Code Admin API 服务将每个服务帐户限制为每分钟 120 个请求。
- Admin API 的速率限制值较小,因此不要按玩家调用 Admin API。
Cloud Code C# 模块
- 包含模块的 .ccm 文件的大小不能超过 10 MB。
- 项目中所有 .ccm 文件的总大小不能超过 128 Mb。
- 执行模块时响应正文(模块的输出)的总大小不能超过 2 MiB。
- 项目中所有环境的模块数量不能超过 20 个。
- 模块函数的执行时间不能超过 15 秒。如果函数超过此时间限制,则进程将被终止。
- 一个模块最多可以有 10 个标签,每个标签键和标签值允许的最大字符数为 128。
- 如果一个模块在过去 15 分钟内没有收到任何流量,可能遇到了冷启动延迟。对该模块的所有后续调用会更快。
async void
模式会导致错误。始终返回Task
或Task<T>
。请参阅官方 Microsoft 文档以了解有关异步编程的最佳做法。- Cloud Code 不支持 Cloud Code 函数的静态方法。
模块在调用之间的持久性
无法保证模块状态在调用之间保持不变。模块可能会在不同的工作线程上重新加载,因此您不能总是依赖跨模块函数调用的共享状态。但是,在模块保持加载状态时,静态变量和单例依赖项会在调用之间共享。
您可以利用这种行为,将数据缓存在静态变量或单例依赖项中,以减少需要从外部服务获取的数据量。不要使用此模块行为来保存数据,尤其是需要对所有玩家保持一致的数据。
依赖项注入
- 不要依赖模块函数调用之间的共享状态,因为当有多个工作线程时,不能保证 API 调用每次都落在同一个工作线程上。
- 如果 Cloud Code 的某个工作线程超出了 256 MB 的内存限制,则该工作线程最终会崩溃。
ICloudCodeSetup
配置只能由一个模块中的单个类实现。
推送消息
- 通过 WebSocket 连接发送的消息限制为 10 KB。
UGS CLI 和编辑器部署
- UGS CLI 和 Deployment(部署)窗口无法部署包含在同一项目中的多个模块。
- UGS CLI 和 Deployment(部署)窗口不支持模块标签并会忽略标签。
编辑器绑定
- 生成的绑定不区分必需参数和可选参数。
- 不支持元组作为参数或返回值。
Cloud Code 与其他 Unity 服务的集成
- 所有 Unity 服务都有基于每个玩家的速率限制以防止 API 过度使用。Cloud Code 速率限制在游戏和服务器代码之间共享。例如,如果您同时在 Cloud Code 和游戏中使用 Economy,则可能会收到意外的速率限制错误。在调试这些错误时,请务必考虑到这两种使用情况。
- 模块只能访问您部署到保存模块的同一环境中的其他 UGS 资源。模块无法访问任何其他环境中的服务。
要详细了解如何与 Cloud Code 集成,请参阅与其他 Unity 服务集成页面。