素材
PlayDrop 的遊戲素材:內附檔案、自有素材與共用素材包
隨 PlayDrop 遊戲提供圖片、音效、影片與 3D:內附檔案、在 catalogue.json 宣告的遊戲自有素材、公開素材與素材包,以及用 sdk.assets 在執行時查找。
遊戲可以用三種方式攜帶美術與音效。請選擇能滿足需求的最簡單方式。
| 方式 | 適合用途 | 做法 |
|---|---|---|
| 內附檔案 | 只有這款遊戲使用的所有內容 | 放進套件中,並以相對路徑載入 |
| 遊戲自有素材 | 想在 PlayDrop 上架、可重複使用或販售的素材 | 在 ownedAssets 中宣告 |
| 公開素材與素材包 | 重複使用其他創作者發布的素材 | 在 uses 中參照 |
內附檔案
遊戲自有素材
在遊戲的目錄項目中宣告遊戲擁有的素材。每一個都會成為附屬於此遊戲、擁有專屬頁面的 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,以及搭配shopPriceCredits的shopListed,用來販售素材。
公開素材與素材包
依確切修訂版參照已發布的素材,依版本參照素材包:
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。