下载项目
PlayCanvas 项目可下载为可自行托管的应用包,包含在 PlayCanvas 托管之外运行所需的文件,而非完整可编辑项目历史。
可重新导入的项目备份见备份与导出。
下载格式
static 是标准静态包,适合直接上传到 Web 服务器或托管平台。
npm 是基于 Vite 的 npm 项目,适合本地开发、Vite 运行,或使用 npm scripts 生成生产构建。
REST 下载应用通过 format 选择 static 或 npm。
静态项目结构
static 提供自包含 Web 构建。解压后通过 HTTP 或 HTTPS 提供服务,不支持以 file:// 直接打开 index.html。
静态下载布局取决于源项目脚本类型。
经典脚本
index.html
playcanvas-stable.min.js
__settings__.js
__modules__.js
__start__.js
__loading__.js
config.json
{sceneId}.json
manifest.json
styles.css
logo.png
files/
assets/
{assetId}/
{revision}/
*
经典脚本拼接选项可能额外生成 __game-scripts.js 和 source map,不改变整体脚本类型布局。
ESM 脚本
ESM 静态下载的 index.html 使用 js/index.mjs 作为模块入口。
index.html
config.json
{sceneId}.json
manifest.json
styles.css
logo.png
js/
index.mjs
*.mjs
files/
assets/
{assetId}/
{revision}/
*
混合脚本
混合项目采用 ESM 布局,生成的模块入口同时加载经典 .js。
index.html
config.json
{sceneId}.json
manifest.json
styles.css
logo.png
js/
index.mjs
*.mjs
*.js
files/
assets/
{assetId}/
{revision}/
*
npm 项目结构
npm 格式正在积极开发,布局和生成文件名可能变化。
npm 项目根据脚本类型使用下列布局。应用配置与场景数据在 src/data/,便于本地监听变化;运行时资源和静态文件在 public/。
文件名与冲突
npm 下载可能重命名场景、资源和目录,确保文件系统安全且路径唯一。应使用生成配置中的路径,不要假定编辑器名称与下载文件名一一对应。
场景 JSON 根据显示名生成:转为小写,非 a-z 或 0-9 替换为连字符,合并重复连字符并移除首尾连字符。例如 Main Scene 变为 main-scene.json,100% Scene 变为 100-scene.json。
名称为空或只有标点时使用 scene-{sceneId}.json。场景重名则在扩展名前加 ID,例如冲突的 Main Scene、ID 为 101 时,得到 main-scene-101.json。
资源和目录名会清理非法字符,但不统一转为小写连字符形式。各目录内的冲突项在扩展名前加 -{id},例如 image-2.png、Folder-10、main-scene-101.json。同组冲突项全部加稳定 ID,唯一名称不变。原生带后缀名称会保留:两个 image.png 的 ID 为 1、2,旁边已有 image-1.png 时,结果依次为 image-1-1.png、image-2.png、image-1.png。配置路径会更新为最终文件名。
以下展示纯经典、纯 ESM 和混合脚本的包结构。
经典脚本
src/
main.mjs
bootstrap/
settings.js
modules.js
start.js
loading.js
scripts/
*.js
data/
config.json
scenes/
*.json
public/
assets/
thumbs/
manifest.json
styles.css
ESM 脚本
src/
main.mjs
bootstrap/
index.mjs
settings.mjs
modules.mjs
start.mjs
loading.mjs
scripts/
*.mjs
data/
config.json
scenes/
*.json
public/
assets/
thumbs/
manifest.json
styles.css
混合脚本
src/
main.mjs
bootstrap/
index.mjs
settings.mjs
modules.mjs
start.mjs
loading.mjs
scripts/
*.mjs
*.js
data/
config.json
scenes/
*.json
public/
assets/
thumbs/
manifest.json
styles.css