@playcraft/build 0.0.15 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -267,15 +267,47 @@ export async function generateConfig(projectConfig, options) {
|
|
|
267
267
|
let selectedScenes = allScenes;
|
|
268
268
|
if (options?.selectedScenes && options.selectedScenes.length > 0) {
|
|
269
269
|
selectedScenes = allScenes.filter(scene => {
|
|
270
|
+
// PlayCanvas 格式: scene.scene 字段存在(场景ID)
|
|
271
|
+
// PlayCraft 格式: 只有 scene.id 字段
|
|
270
272
|
const sceneId = String(scene.id || scene.scene);
|
|
271
273
|
const sceneName = scene.name || '';
|
|
272
274
|
return options.selectedScenes.some(selected => selected === sceneId || selected === sceneName);
|
|
273
275
|
});
|
|
276
|
+
// 验证:检查是否所有指定的场景都存在
|
|
277
|
+
if (selectedScenes.length === 0) {
|
|
278
|
+
const availableScenes = allScenes.map(s => s.name || s.id).join(', ');
|
|
279
|
+
// 尝试找到默认场景(主场景或第一个场景)
|
|
280
|
+
const defaultScene = allScenes.find(s => s.isMain === true) || allScenes[0];
|
|
281
|
+
if (defaultScene && allScenes.length > 0) {
|
|
282
|
+
console.warn(`\n⚠️ 警告: 未找到指定的场景,使用默认场景\n` +
|
|
283
|
+
` 指定的场景: ${options.selectedScenes.join(', ')}\n` +
|
|
284
|
+
` 可用的场景: ${availableScenes}\n` +
|
|
285
|
+
` 默认场景: ${defaultScene.name || defaultScene.id}${defaultScene.isMain ? ' (主场景)' : ''}`);
|
|
286
|
+
selectedScenes = [defaultScene];
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
throw new Error(`❌ 未找到任何匹配的场景,且项目中没有可用场景!\n` +
|
|
290
|
+
` 指定的场景: ${options.selectedScenes.join(', ')}\n` +
|
|
291
|
+
` 提示: 场景名称区分大小写,请检查拼写是否正确`);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
// 检查是否有指定的场景未找到(部分匹配)
|
|
296
|
+
const foundSceneNames = new Set(selectedScenes.map(s => s.name));
|
|
297
|
+
const foundSceneIds = new Set(selectedScenes.map(s => String(s.id || s.scene)));
|
|
298
|
+
const notFoundScenes = options.selectedScenes.filter(selected => !foundSceneNames.has(selected) && !foundSceneIds.has(selected));
|
|
299
|
+
if (notFoundScenes.length > 0) {
|
|
300
|
+
const availableScenes = allScenes.map(s => s.name || s.id).join(', ');
|
|
301
|
+
console.warn(`\n⚠️ 警告: 以下场景未找到,将忽略:\n` +
|
|
302
|
+
` ${notFoundScenes.join(', ')}\n` +
|
|
303
|
+
` 可用的场景: ${availableScenes}`);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
274
306
|
console.log(`\n🎬 场景过滤:`);
|
|
275
307
|
console.log(` - 总场景数: ${allScenes.length}`);
|
|
276
308
|
console.log(` - 选中场景: ${selectedScenes.length}`);
|
|
277
309
|
selectedScenes.forEach(scene => {
|
|
278
|
-
console.log(` • ${scene.name || scene.id}`);
|
|
310
|
+
console.log(` • ${scene.name || scene.id}${scene.isMain ? ' (主场景)' : ''}`);
|
|
279
311
|
});
|
|
280
312
|
}
|
|
281
313
|
config.scenes = selectedScenes.map((scene) => ({
|
|
@@ -368,15 +400,47 @@ export async function generateConfig(projectConfig, options) {
|
|
|
368
400
|
let selectedScenes = allScenes;
|
|
369
401
|
if (options?.selectedScenes && options.selectedScenes.length > 0 && allScenes.length > 0) {
|
|
370
402
|
selectedScenes = allScenes.filter(scene => {
|
|
371
|
-
|
|
403
|
+
// PlayCraft 格式: 场景对象只有 id 和 name 字段
|
|
404
|
+
// 注意: scene.scene 不存在,但这里的回退是安全的(会使用 scene.id)
|
|
405
|
+
const sceneId = String(scene.id || scene.scene);
|
|
372
406
|
const sceneName = scene.name || '';
|
|
373
407
|
return options.selectedScenes.some(selected => selected === sceneId || selected === sceneName);
|
|
374
408
|
});
|
|
409
|
+
// 验证:检查是否所有指定的场景都存在
|
|
410
|
+
if (selectedScenes.length === 0) {
|
|
411
|
+
const availableScenes = allScenes.map(s => s.name || s.id).join(', ');
|
|
412
|
+
// 尝试找到默认场景(主场景或第一个场景)
|
|
413
|
+
const defaultScene = allScenes.find(s => s.isMain === true) || allScenes[0];
|
|
414
|
+
if (defaultScene && allScenes.length > 0) {
|
|
415
|
+
console.warn(`\n⚠️ 警告: 未找到指定的场景,使用默认场景\n` +
|
|
416
|
+
` 指定的场景: ${options.selectedScenes.join(', ')}\n` +
|
|
417
|
+
` 可用的场景: ${availableScenes}\n` +
|
|
418
|
+
` 默认场景: ${defaultScene.name || defaultScene.id}${defaultScene.isMain ? ' (主场景)' : ''}`);
|
|
419
|
+
selectedScenes = [defaultScene];
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
throw new Error(`❌ 未找到任何匹配的场景,且项目中没有可用场景!\n` +
|
|
423
|
+
` 指定的场景: ${options.selectedScenes.join(', ')}\n` +
|
|
424
|
+
` 提示: 场景名称区分大小写,请检查拼写是否正确`);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
// 检查是否有指定的场景未找到(部分匹配)
|
|
429
|
+
const foundSceneNames = new Set(selectedScenes.map(s => s.name));
|
|
430
|
+
const foundSceneIds = new Set(selectedScenes.map(s => String(s.id || s.scene)));
|
|
431
|
+
const notFoundScenes = options.selectedScenes.filter(selected => !foundSceneNames.has(selected) && !foundSceneIds.has(selected));
|
|
432
|
+
if (notFoundScenes.length > 0) {
|
|
433
|
+
const availableScenes = allScenes.map(s => s.name || s.id).join(', ');
|
|
434
|
+
console.warn(`\n⚠️ 警告: 以下场景未找到,将忽略:\n` +
|
|
435
|
+
` ${notFoundScenes.join(', ')}\n` +
|
|
436
|
+
` 可用的场景: ${availableScenes}`);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
375
439
|
console.log(`\n🎬 场景过滤:`);
|
|
376
440
|
console.log(` - 总场景数: ${allScenes.length}`);
|
|
377
441
|
console.log(` - 选中场景: ${selectedScenes.length}`);
|
|
378
442
|
selectedScenes.forEach(scene => {
|
|
379
|
-
console.log(` • ${scene.name || scene.id}`);
|
|
443
|
+
console.log(` • ${scene.name || scene.id}${scene.isMain ? ' (主场景)' : ''}`);
|
|
380
444
|
});
|
|
381
445
|
}
|
|
382
446
|
if (selectedScenes.length > 0) {
|