# Webshop 限制参考

> 查找适用于 Unity 网上商店的结构、命名、媒体和运行时限制。

本页面列出了适用于 Unity 网上商店的限制。如需了解这些限制约束的概念，请参阅[网上商店简介](./introduction-to-webshops.md)、[主题和品牌](./theming-and-branding.md)。

## 结构限制##structural-limits

以下限制适用于您可以创建的网上商店、环境和工作室的数量。

| 对象                         | --limit       | 注意                                                  |
| -------------------------- | ------------- | --------------------------------------------------- |
| 每个 Unity Cloud 项目的 Webshop | 1             | 为同一项目创建第二个网上商店会返回冲突响应。                              |
| 每个网上商店的环境                  | 25            | 包括生产环境。                                             |
| 发布环境                       | 仅限生产          | 非生产环境仅限草案；使用 **Apply to production** 可将非生产草案复制到生产中。 |
| Studio 范围                  | 每个 Unity 组织一个 | 首次创建网上商店时设置。可从**组织设置**中重命名，但不能在组织之间传输。              |

## 命名规则##naming-rules

以下规则适用于工作室名称、蛞蝓和其他标识符。

| 字段                 | 规则                                                                                                                                                                        |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 工作室名称：             | `^[a-z0-9][a-z0-9-]{1,62}[a-z0-9]$`（3–64 个字符；小写字母、数字和连字符；不能以连字符开头或结尾）。在 Unity 中全局唯一。                                                                                      |
| 蛞蝓                 | `^[a-z0-9][a-z0-9-]{1,62}[a-z0-9]$`（3–64 个字符；小写字母、数字和连字符；不能以连字符开头或结尾）。在工作室中是独一无二的。                                                                                        |
| Display name（显示名称） | 1–255 个字符。                                                                                                                                                                |
| 深度链接               | 最多 31 个字符（34 个字符带有尾随`://`），图案`^[a-z][a-z0-9+.\-]{0,30}(?:://)?$`（必须以小写字母开头；仅限小写字母、数字、`+`、`.` 和 `-`）。Webshop 会拒绝 `javascript`、`data`、`vbscript`、`file`、`blob` 和 `about` 值。 |
| 深度链接               | 最多 512 个字符。                                                                                                                                                               |

## 媒体限制##media-limits

Unity Dashboard（Unity 后台）支持以下网上商店的图像上传类型：

* **英雄横幅**：向网上商店中的玩家显示。
* \*\*缩略图：\*\*向网上商店中的玩家显示。
* **屏幕截图**：用作 AI 主题生成的参考输入，不会显示在 Webshop 中。

所有图像上传类型都支持 PNG、JPEG 和 WebP 格式。Unity Dashboard（Unity 后台）在存储每次上传之前都会对其进行重新编码。

| 上传：  | 用途            | 最大文件大小    | 每个请求的文件    | 注意                                                             |
| ---- | ------------- | --------- | ---------- | -------------------------------------------------------------- |
| 英雄横幅 | 显示在商店顶部       | 5 MB      | 1          | Dashboard 会将其重新编码为 1920 × 384 px (5:1) WebP。按此宽高比或更宽进行上传以避免裁剪。 |
| 缩略图  | 在链接预览和链接卡片中使用 | 1 MB      | 1          | Dashboard 会将其重新编码为 48 × 48 px（方形）WebP。                         |
| 截屏   | AI 主题生成的参考    | 每个文件 2 MB | 每个请求最多 6 个 | 未在商店中显示；仅用作主题生成器的附加输入。单个上传请求在所有截屏中总共最多可以包含 10 MB。              |

## 运行时限制##runtime-limits

以下限制适用于实时流量和 API 调用。

| 值                         | --limit                                              | 注意                                                                                                                                                                                                                           |
| ------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Dashboard preview-link 令牌 | 自签发之日起 72 小时。                                        | 开发预览 URL (`?token=`) 中的已签名令牌。为每个审查周期生成一个新链接。                                                                                                                                                                                 |
| SDK 草案预览链接                | 从发布开始大约 1 小时。                                        | 游戏解析草案时 Storefront-link 终端返回的短暂草案 URL。SDK 在每次启动时都会重新解析，因此玩家看不到短暂的生命周期。                                                                                                                                                       |
| 玩家会话令牌                    | 短暂、一次性使用。                                            | 受限制的玩家身份验证将标记游戏币（带有 `GenerateRestrictedTokenAsync`）并附加为开店的`sessionToken`。游戏会立即设置其生命周期和单次使用属性；未来 Unity SDK 方法将管理这些属性。商店会在浏览器中将其交换一次以作为玩家会话。请参阅将[网上商店集成到 Unity 游戏](./integrate-into-game.md#open-the-webshop-from-your-game)中。 |
| 玩家 ID 令牌                  | 1 小时，自动刷新。                                           | 网上商店会在玩家 ID 令牌到期前不久刷新该令牌，因此玩家不会在会话中途重新进行身份验证。                                                                                                                                                                                |
| 玩家会话                      | 无固定到期时间。                                             | 玩家会话保持有效，直到服务器将其撤销。Webshop 会将其保留在浏览器中（在 Live Shop 上`localStorage`，在 Dashboard 预览路径上`sessionStorage`），范围为项目和环境。                                                                                                               |
| Admin API 速率限制            | 每个源 IP 每秒 40 个请求。                                    | 适用于每个内部 API 调用（后台请求、服务帐户编程调用）。超出限制的突发自动化会`429 Too Many Requests`。                                                                                                                                                            |
| 玩家目录请求速率限制                | 每分钟 600 个请求（玩家、项目、环境），每个 IP 备份每秒 20 个请求，每分钟 300 个请求。 | 应用于播放器前端的运行时目录获取。这两个限制叠加在一起，因此单个行为不当的玩家无法用尽 IP 的允许数量。                                                                                                                                                                        |
| Player shell 流量           | 不受服务速率限制。                                            | 商店的 HTML shell 和媒体由内容交付网络提供，绝不会进入 Dashboard 服务。                                                                                                                                                                              |

## 访问和可见性##access-and-visibility

网上商店将上传的媒体和开发预览链接作为公共 Web 内容提供，就像内容交付网络提供任何静态资源一样。拥有 URL 的任何人都可以在不登录的情况下打开它们。URL 使用不可猜测的标识符，并且未与商店关联，因此不容易发现，但它们也不受访问控制。选择要上传的内容以及与谁共享预览链接时，请记住这一点。

| Resource             | 谁可以访问           | 注意                                                                                                                                                                                                                                   |
| -------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 开发预览 URL             | 拥有链接的任何人，直到令牌到期 | Webshop 以 `/_preview/{publisher}/game/{slug}` 路径提供预览，并在 URL（`token` 查询参数）中使用经过签名的限时令牌进行授权。渲染使用匿名会话，因此没有登录或每用户检查 — 令牌是唯一保护链接的方法。与您共享的任何人都可以查看草案，直到令牌到期（72 小时）。为每个审查周期生成一个新链接。                                                         |
| 上传的媒体（英雄横幅、缩略图、屏幕截图） | 拥有 URL 的任何人     | 上传的媒体将重新编码到 WebP 中，并作为公共对象存储在通过内容交付网络在商店`_media/`路径（例如 `https://shop.unity.com/_media/{projectId}/branding/logo.webp`）中提供的云存储桶中。没有针对每个请求的身份验证，并且公开缓存对象。品牌文件使用固定名称，截屏使用内容哈希名称，因此路径中的项目 ID 是唯一无法猜测的部分，任何拥有 URL 的人都可以打开文件。将上传的媒体视为公开可见。 |

## AI 主题生成##ai-theme-generation

以下值适用于 AI 主题生成。

| Detail    | 当前值                                                                                                                 |
| --------- | ------------------------------------------------------------------------------------------------------------------- |
| 用于生成主题的模型 | 大型语言模型（随着可用模型的改进，可能会发生变化）。                                                                                          |
| 生成输入的来源   | 列出您提供的 URL、上传的截屏或两者的 Apple App Store。Dashboard（后台）会为其图标、屏幕截图和调色板抓取提供的列表。                                            |
| 主题生成速率限制  | 每个项目的速率限制作为滥用保障。此限制设置远高于正常的交互式使用（以 Dashboard 允许的速度生成和优化主题不会达到此限制），因此只会在失控的自动化中跳闸。超过此值的请求返回 `429 Too Many Requests`。 |
| 主题生成预算    | 每个项目的每日和每周主题生成支出上限。当项目达到上限时，在窗口重置之前会阻止进一步生成。每个项目都会跟踪上限，不会通过删除和重新创建网上商店来重置上限。                                        |

有关使用此生成器的面向用户的过程，请参阅[生成 AI 网上](./generate-a-webshop-theme-with-ai.md)商店主题。
