Skip to content
On this page

Spectrum Pack

Pack 把相关声明、依赖和业务能力作为一个可校验、可依赖、可原子启停的内容单元。新项目应使用 Pack,而不是把所有文件散放在插件根目录。

推荐结构

text
packs/shop/
├─ spectrum.yml
├─ ui/
│  ├─ components.yml
│  └─ shop.yml
├─ tooltip/
│  └─ item.yml
├─ world/
├─ model/
├─ camera/
├─ key/
├─ avatar/
├─ text/
├─ item/
└─ behaviors/
   ├─ purchase.behavior.yml
   └─ purchase.js

模型、字体、图片和粒子等源资源统一放在 plugins/SpectrumGraphics/resource/,不是 Pack 声明目录的一部分。

spectrum.yml

yaml
schema: spectrumgraphics/pack/v1
id: shop:main
version: 1.2.0
name: Server Shop
description: 商店界面和购买行为
enabledByDefault: true

features:
  - ui
  - world-canvas
  - models
  - camera
  - key
  - behaviors
  - placeholders
  - container-proxy

dependencies:
  - id: core:items
    version: ^1.2.0
  - id: shop:optional-theme
    version: ^1.0.0
    optional: true

actions: [shop:purchase]
capabilities: [spectrumgraphics:economy, spectrumgraphics:inventory]

ID 规则

不要把所有 ID 混为同一种规则:

  • Pack ID、依赖、业务 Action 和 Capability 必须是小写 ASCII namespace:path;
  • UI、World、Model、Camera、Key、Avatar、Item 等内容 ID 可为纯文本、数字、Unicode、路径式或 namespaced ID;
  • 所有启用内容的最终文档 ID 必须全局唯一;
  • 未显式写 ID 时,部分目录会按相对路径和 Pack 命名空间推导 ID,具体以 Schema 和验证结果为准。

Feature 声明

Feature 表示 Pack 获准加载或使用的能力。常见值:

Feature内容
uiui/ 与 tooltip/
world-canvasworld/
modelsmodel/
cameracamera/
keykey/
behaviorsBehavior 描述与脚本
assetsPack 内 assets/ 内容与资源声明
placeholdersPlaceholder 数据源
container-proxy原版容器 Slot 代理

text/、avatar/ 和 item/ 是 Pack 内建发现目录,不要为它们编造不存在的 feature。使用了需要声明的能力却遗漏 feature 时,候选 Pack 会被拒绝。

Pack assets/ 会进入 Pack 的内容 hash,并要求 assets feature,适合随 Pack 保存供 Studio 或普通资源包工程复用的文件;它不是加密发布的源目录。当前 /sg assets build 仍从全局 plugins/SpectrumGraphics/resource/ 构建运行时资源。

依赖与版本

必需依赖必须存在、版本匹配并先于当前 Pack 启用。optional: true 允许依赖缺失,但依赖一旦存在仍需满足版本范围。支持精确版本、^1.2.0 和 ~1.2.0 等 SemVer 范围;循环依赖会拒绝整个候选。

原子重载

/sg validate 只构造候选,不改变在线内容。/sg reload 会先验证所有 Pack 和独立内容;全部成功后才一次切换,并同步已打开文档和自动挂载内容。任何错误都会让上一份有效快照继续运行。

text
/sg pack enable shop:main
/sg pack disable shop:main
/sg pack unload shop:main
  • enable:启用已加载 Pack 并发布自动内容;
  • disable:保留定义但停止使用,关闭不再可用的在线文档;
  • unload:从当前仓库快照移除;
  • 反向依赖会阻止造成不一致的停用或卸载。

独立内容与覆盖

根目录下的 ui/、world/、text/ 等仍受支持。独立 Text、Avatar 等仓库在同 ID 冲突时可能具有明确覆盖规则,但新项目不要依赖隐式覆盖来组织主题;把同一功能放在一个 Pack 内更容易审查和回滚。

下一步:作者工作流 · Behavior 与 Capability