素材
PlayDrop 游戏素材:内置文件、自有素材和共享素材包
随 PlayDrop 游戏提供图片、声音、视频和 3D:内置文件、在 catalogue.json 中声明的游戏自有素材、公开素材和素材包,以及用 sdk.assets 在运行时查找。
游戏可以通过三种方式携带图片和声音。选择能满足需求的最简单方式。
| 方式 | 适合 | 做法 |
|---|---|---|
| 内置文件 | 只有这款游戏使用的所有内容 | 放进包中,并通过相对路径加载 |
| 游戏自有素材 | 想在 PlayDrop 上列出、重复使用或出售的素材 | 在 ownedAssets 中声明 |
| 公开素材和素材包 | 重复使用其他创作者发布的素材 | 在 uses 中引用 |
内置文件
游戏自有素材
在游戏的 catalogue 条目中声明游戏拥有的素材。每个素材都会成为一个 PlayDrop 素材,拥有自己的页面,并关联到这款游戏:
json
{
"ownedAssets": [
{ "name": "moon-theme", "runtimeKey": "music.main", "displayName": "Moon theme",
"category": "AUDIO", "files": { "primary": "assets/moon-theme.mp3" } },
{ "name": "astronaut", "runtimeKey": "sprites.player", "displayName": "Astronaut",
"category": "SPRITESHEET", "files": { "atlas": "assets/astronaut.png", "manifest": "assets/astronaut.json" } }
]
}category为IMAGE、VIDEO、AUDIO、SPRITESHEET、MODEL_3D或CUSTOM;subcategory和format可进一步细分。files把角色映射到路径。音频需要primary;精灵图需要atlas和manifest。runtimeKey是游戏在运行时查找该素材所用的名称。- 可选:
visibility、license、tags,以及用于出售素材的shopListed和shopPriceCredits。
公开素材和素材包
按确切修订版本引用已发布的素材,按版本引用素材包:
json
{
"uses": {
"assets": [{ "ref": "asset:someone/forest-tiles@r3", "runtimeKey": "tiles.forest" }],
"packs": ["pack:someone/ui-kit@1.2.0"]
}
}可以在 PlayDrop 素材中浏览,也可以使用 sdk.assets.catalog.listPublic()、sdk.assets.packs.listPublic() 和 sdk.search.query()。公开游戏只能使用公开的素材和素材包;请遵守每个素材的许可。
在运行时查找素材
js
const music = sdk.assets.resolveAppAsset("music.main");
const file = music.files.find((entry) => entry.role === "primary");
audioElement.src = file.url;
for (const asset of sdk.assets.listAppAssets()) console.log(asset.runtimeKey, asset.sourceType);每个结果都包含 assetRef、runtimeKey、sourceType(OWNED、DIRECT 或 PACK),以及带有 role、url、contentType 和 sizeBytes 的 files。