drgame-cc 1.0.0
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.
- package/dist/asset-exporter.d.ts +125 -0
- package/dist/asset-exporter.d.ts.map +1 -0
- package/dist/asset-exporter.js +513 -0
- package/dist/asset-exporter.js.map +1 -0
- package/dist/asset-types.d.ts +186 -0
- package/dist/asset-types.d.ts.map +1 -0
- package/dist/asset-types.js +24 -0
- package/dist/asset-types.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/utils.d.ts +99 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +324 -0
- package/dist/utils.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 资源导出器核心类
|
|
3
|
+
* 支持导出Cocos Creator项目中的预制体、图片、音乐等资源
|
|
4
|
+
*/
|
|
5
|
+
import { ExportConfig, ExportResult, AssetBundle } from './asset-types';
|
|
6
|
+
/**
|
|
7
|
+
* 资源导出器类
|
|
8
|
+
*/
|
|
9
|
+
export declare class AssetExporter {
|
|
10
|
+
private config;
|
|
11
|
+
private exportedAssets;
|
|
12
|
+
private errors;
|
|
13
|
+
constructor(config: ExportConfig);
|
|
14
|
+
/**
|
|
15
|
+
* 执行资源导出
|
|
16
|
+
* @returns 导出结果
|
|
17
|
+
*/
|
|
18
|
+
export(): Promise<ExportResult>;
|
|
19
|
+
/**
|
|
20
|
+
* 扫描源目录中的所有资源文件
|
|
21
|
+
* @returns 文件路径列表
|
|
22
|
+
*/
|
|
23
|
+
private scanSourceFiles;
|
|
24
|
+
/**
|
|
25
|
+
* 根据配置过滤文件
|
|
26
|
+
* @param files 文件路径列表
|
|
27
|
+
* @returns 过滤后的文件列表
|
|
28
|
+
*/
|
|
29
|
+
private filterFilesByType;
|
|
30
|
+
/**
|
|
31
|
+
* 处理单个文件
|
|
32
|
+
* @param filePath 文件路径
|
|
33
|
+
*/
|
|
34
|
+
private processFile;
|
|
35
|
+
/**
|
|
36
|
+
* 创建资源信息对象
|
|
37
|
+
* @param filePath 文件路径
|
|
38
|
+
* @param assetType 资源类型
|
|
39
|
+
* @returns 资源信息
|
|
40
|
+
*/
|
|
41
|
+
private createAssetInfo;
|
|
42
|
+
/**
|
|
43
|
+
* 创建图片资源信息
|
|
44
|
+
*/
|
|
45
|
+
private createImageAssetInfo;
|
|
46
|
+
/**
|
|
47
|
+
* 创建音频资源信息
|
|
48
|
+
*/
|
|
49
|
+
private createAudioAssetInfo;
|
|
50
|
+
/**
|
|
51
|
+
* 创建预制体资源信息
|
|
52
|
+
*/
|
|
53
|
+
private createPrefabAssetInfo;
|
|
54
|
+
/**
|
|
55
|
+
* 创建场景资源信息
|
|
56
|
+
*/
|
|
57
|
+
private createSceneAssetInfo;
|
|
58
|
+
/**
|
|
59
|
+
* 创建脚本资源信息
|
|
60
|
+
*/
|
|
61
|
+
private createScriptAssetInfo;
|
|
62
|
+
/**
|
|
63
|
+
* 创建动画资源信息
|
|
64
|
+
*/
|
|
65
|
+
private createAnimationAssetInfo;
|
|
66
|
+
/**
|
|
67
|
+
* 创建字体资源信息
|
|
68
|
+
*/
|
|
69
|
+
private createFontAssetInfo;
|
|
70
|
+
/**
|
|
71
|
+
* 创建材质资源信息
|
|
72
|
+
*/
|
|
73
|
+
private createMaterialAssetInfo;
|
|
74
|
+
/**
|
|
75
|
+
* 处理特殊资源类型(如图片压缩、音频转码等)
|
|
76
|
+
*/
|
|
77
|
+
private processSpecialAsset;
|
|
78
|
+
/**
|
|
79
|
+
* 统计节点数量
|
|
80
|
+
*/
|
|
81
|
+
private countNodes;
|
|
82
|
+
/**
|
|
83
|
+
* 提取脚本组件
|
|
84
|
+
*/
|
|
85
|
+
private extractScriptComponents;
|
|
86
|
+
/**
|
|
87
|
+
* 生成资源清单文件
|
|
88
|
+
*/
|
|
89
|
+
private generateManifest;
|
|
90
|
+
/**
|
|
91
|
+
* 打印导出摘要
|
|
92
|
+
*/
|
|
93
|
+
private printSummary;
|
|
94
|
+
/**
|
|
95
|
+
* 创建资源包
|
|
96
|
+
* @param name 包名称
|
|
97
|
+
* @param version 包版本
|
|
98
|
+
* @param description 包描述
|
|
99
|
+
* @returns 资源包对象
|
|
100
|
+
*/
|
|
101
|
+
createAssetBundle(name: string, version?: string, description?: string): AssetBundle;
|
|
102
|
+
/**
|
|
103
|
+
* 保存资源包到文件
|
|
104
|
+
* @param bundle 资源包
|
|
105
|
+
* @param outputPath 输出路径
|
|
106
|
+
* @returns 是否保存成功
|
|
107
|
+
*/
|
|
108
|
+
saveAssetBundle(bundle: AssetBundle, outputPath: string): boolean;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 快速导出函数
|
|
112
|
+
* @param config 导出配置
|
|
113
|
+
* @returns 导出结果
|
|
114
|
+
*/
|
|
115
|
+
export declare function exportAssets(config: ExportConfig): Promise<ExportResult>;
|
|
116
|
+
/**
|
|
117
|
+
* 从Cocos Creator项目导出资源
|
|
118
|
+
* @param projectPath 项目路径
|
|
119
|
+
* @param outputDir 输出目录
|
|
120
|
+
* @param options 额外选项
|
|
121
|
+
* @returns 导出结果
|
|
122
|
+
*/
|
|
123
|
+
export declare function exportFromCocosProject(projectPath: string, outputDir: string, options?: Partial<ExportConfig>): Promise<ExportResult>;
|
|
124
|
+
export { AssetExporter as default };
|
|
125
|
+
//# sourceMappingURL=asset-exporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-exporter.d.ts","sourceRoot":"","sources":["../src/asset-exporter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAGH,YAAY,EACZ,YAAY,EACZ,WAAW,EASd,MAAM,eAAe,CAAC;AAiBvB;;GAEG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,YAAY;IAUhC;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAsDrC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAavB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;OAGG;YACW,WAAW;IAuCzB;;;;;OAKG;YACW,eAAe;IAiD7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAYhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;OAEG;YACW,mBAAmB;IAoBjC;;OAEG;IACH,OAAO,CAAC,UAAU;IAgBlB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA4B/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgCpB;;;;;;OAMG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW;IAcrF;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;CASpE;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAG9E;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CACxC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAChC,OAAO,CAAC,YAAY,CAAC,CAiBvB;AAED,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 资源导出器核心类
|
|
4
|
+
* 支持导出Cocos Creator项目中的预制体、图片、音乐等资源
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.default = exports.AssetExporter = void 0;
|
|
41
|
+
exports.exportAssets = exportAssets;
|
|
42
|
+
exports.exportFromCocosProject = exportFromCocosProject;
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const asset_types_1 = require("./asset-types");
|
|
46
|
+
const utils_1 = require("./utils");
|
|
47
|
+
/**
|
|
48
|
+
* 资源导出器类
|
|
49
|
+
*/
|
|
50
|
+
class AssetExporter {
|
|
51
|
+
constructor(config) {
|
|
52
|
+
this.exportedAssets = new Map();
|
|
53
|
+
this.errors = [];
|
|
54
|
+
this.config = {
|
|
55
|
+
assetTypes: Object.values(asset_types_1.AssetType),
|
|
56
|
+
includeDependencies: true,
|
|
57
|
+
compress: false,
|
|
58
|
+
...config
|
|
59
|
+
};
|
|
60
|
+
(0, utils_1.ensureDir)(this.config.outputDir);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 执行资源导出
|
|
64
|
+
* @returns 导出结果
|
|
65
|
+
*/
|
|
66
|
+
async export() {
|
|
67
|
+
const startTime = Date.now();
|
|
68
|
+
this.exportedAssets.clear();
|
|
69
|
+
this.errors = [];
|
|
70
|
+
console.log(`开始导出资源...`);
|
|
71
|
+
console.log(`源目录: ${this.config.sourceDir}`);
|
|
72
|
+
console.log(`输出目录: ${this.config.outputDir}`);
|
|
73
|
+
try {
|
|
74
|
+
// 扫描所有资源文件
|
|
75
|
+
const files = this.scanSourceFiles();
|
|
76
|
+
console.log(`找到 ${files.length} 个资源文件`);
|
|
77
|
+
// 过滤资源类型
|
|
78
|
+
const filteredFiles = this.filterFilesByType(files);
|
|
79
|
+
console.log(`符合过滤条件的文件: ${filteredFiles.length} 个`);
|
|
80
|
+
// 批量处理资源导出
|
|
81
|
+
await (0, utils_1.batchProcess)(filteredFiles, (file) => this.processFile(file), 5);
|
|
82
|
+
// 生成资源清单
|
|
83
|
+
this.generateManifest();
|
|
84
|
+
const duration = Date.now() - startTime;
|
|
85
|
+
const result = {
|
|
86
|
+
assets: Array.from(this.exportedAssets.values()),
|
|
87
|
+
successCount: this.exportedAssets.size,
|
|
88
|
+
failCount: this.errors.length,
|
|
89
|
+
skipCount: files.length - filteredFiles.length,
|
|
90
|
+
errors: this.errors,
|
|
91
|
+
duration,
|
|
92
|
+
outputDir: this.config.outputDir
|
|
93
|
+
};
|
|
94
|
+
this.printSummary(result);
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
const errorMsg = `导出过程发生错误: ${error instanceof Error ? error.message : String(error)}`;
|
|
99
|
+
this.errors.push(errorMsg);
|
|
100
|
+
console.error(errorMsg);
|
|
101
|
+
return {
|
|
102
|
+
assets: [],
|
|
103
|
+
successCount: 0,
|
|
104
|
+
failCount: 1,
|
|
105
|
+
skipCount: 0,
|
|
106
|
+
errors: this.errors,
|
|
107
|
+
duration: Date.now() - startTime,
|
|
108
|
+
outputDir: this.config.outputDir
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* 扫描源目录中的所有资源文件
|
|
114
|
+
* @returns 文件路径列表
|
|
115
|
+
*/
|
|
116
|
+
scanSourceFiles() {
|
|
117
|
+
// 支持的资源扩展名
|
|
118
|
+
const extensions = [
|
|
119
|
+
'.prefab', '.scene', '.ts', '.js', '.anim',
|
|
120
|
+
'.png', '.jpg', '.jpeg', '.webp', '.gif', '.bmp',
|
|
121
|
+
'.mp3', '.ogg', '.wav', '.m4a',
|
|
122
|
+
'.ttf', '.otf', '.woff', '.woff2', '.fnt',
|
|
123
|
+
'.mat', '.mesh', '.plist', '.json', '.tmx'
|
|
124
|
+
];
|
|
125
|
+
return (0, utils_1.getAllFiles)(this.config.sourceDir, extensions);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* 根据配置过滤文件
|
|
129
|
+
* @param files 文件路径列表
|
|
130
|
+
* @returns 过滤后的文件列表
|
|
131
|
+
*/
|
|
132
|
+
filterFilesByType(files) {
|
|
133
|
+
if (!this.config.assetTypes || this.config.assetTypes.length === 0) {
|
|
134
|
+
return files;
|
|
135
|
+
}
|
|
136
|
+
return files.filter(file => {
|
|
137
|
+
const assetType = (0, utils_1.getAssetType)(file);
|
|
138
|
+
return this.config.assetTypes.includes(assetType);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* 处理单个文件
|
|
143
|
+
* @param filePath 文件路径
|
|
144
|
+
*/
|
|
145
|
+
async processFile(filePath) {
|
|
146
|
+
try {
|
|
147
|
+
const assetType = (0, utils_1.getAssetType)(filePath);
|
|
148
|
+
const relativePath = path.relative(this.config.sourceDir, filePath);
|
|
149
|
+
const outputPath = path.join(this.config.outputDir, relativePath);
|
|
150
|
+
// 创建资源信息
|
|
151
|
+
const assetInfo = await this.createAssetInfo(filePath, assetType);
|
|
152
|
+
// 应用自定义过滤器
|
|
153
|
+
if (this.config.filter && !this.config.filter(assetInfo)) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
// 复制文件到输出目录
|
|
157
|
+
const success = (0, utils_1.copyFile)(filePath, outputPath);
|
|
158
|
+
if (!success) {
|
|
159
|
+
this.errors.push(`复制文件失败: ${relativePath}`);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
// 复制对应的 .meta 文件
|
|
163
|
+
const metaPath = filePath + '.meta';
|
|
164
|
+
if (fs.existsSync(metaPath)) {
|
|
165
|
+
(0, utils_1.copyFile)(metaPath, outputPath + '.meta');
|
|
166
|
+
}
|
|
167
|
+
// 处理特殊资源类型
|
|
168
|
+
await this.processSpecialAsset(filePath, outputPath, assetInfo);
|
|
169
|
+
this.exportedAssets.set(assetInfo.uuid, assetInfo);
|
|
170
|
+
console.log(`✓ 导出: ${relativePath} (${(0, utils_1.formatFileSize)(assetInfo.size)})`);
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
const errorMsg = `处理文件失败 ${filePath}: ${error instanceof Error ? error.message : String(error)}`;
|
|
174
|
+
this.errors.push(errorMsg);
|
|
175
|
+
console.error(`✗ ${errorMsg}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* 创建资源信息对象
|
|
180
|
+
* @param filePath 文件路径
|
|
181
|
+
* @param assetType 资源类型
|
|
182
|
+
* @returns 资源信息
|
|
183
|
+
*/
|
|
184
|
+
async createAssetInfo(filePath, assetType) {
|
|
185
|
+
const stat = fs.statSync(filePath);
|
|
186
|
+
const name = path.basename(filePath, path.extname(filePath));
|
|
187
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
188
|
+
const relativePath = path.relative(this.config.sourceDir, filePath);
|
|
189
|
+
// 尝试从 meta 文件读取 UUID
|
|
190
|
+
let uuid = (0, utils_1.generateUUID)();
|
|
191
|
+
const metaPath = filePath + '.meta';
|
|
192
|
+
if (fs.existsSync(metaPath)) {
|
|
193
|
+
const meta = (0, utils_1.readJSON)(metaPath);
|
|
194
|
+
if (meta?.uuid) {
|
|
195
|
+
uuid = meta.uuid;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
const baseInfo = {
|
|
199
|
+
uuid,
|
|
200
|
+
name,
|
|
201
|
+
path: relativePath,
|
|
202
|
+
type: assetType,
|
|
203
|
+
extension: extension.slice(1),
|
|
204
|
+
size: stat.size,
|
|
205
|
+
modifiedTime: stat.mtime
|
|
206
|
+
};
|
|
207
|
+
// 根据资源类型创建特定信息
|
|
208
|
+
switch (assetType) {
|
|
209
|
+
case asset_types_1.AssetType.IMAGE:
|
|
210
|
+
return this.createImageAssetInfo(filePath, baseInfo);
|
|
211
|
+
case asset_types_1.AssetType.AUDIO:
|
|
212
|
+
return this.createAudioAssetInfo(filePath, baseInfo);
|
|
213
|
+
case asset_types_1.AssetType.PREFAB:
|
|
214
|
+
return this.createPrefabAssetInfo(filePath, baseInfo);
|
|
215
|
+
case asset_types_1.AssetType.SCENE:
|
|
216
|
+
return this.createSceneAssetInfo(filePath, baseInfo);
|
|
217
|
+
case asset_types_1.AssetType.SCRIPT:
|
|
218
|
+
return this.createScriptAssetInfo(filePath, baseInfo);
|
|
219
|
+
case asset_types_1.AssetType.ANIMATION:
|
|
220
|
+
return this.createAnimationAssetInfo(filePath, baseInfo);
|
|
221
|
+
case asset_types_1.AssetType.FONT:
|
|
222
|
+
return this.createFontAssetInfo(filePath, baseInfo);
|
|
223
|
+
case asset_types_1.AssetType.MATERIAL:
|
|
224
|
+
return this.createMaterialAssetInfo(filePath, baseInfo);
|
|
225
|
+
default:
|
|
226
|
+
return baseInfo;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* 创建图片资源信息
|
|
231
|
+
*/
|
|
232
|
+
createImageAssetInfo(filePath, baseInfo) {
|
|
233
|
+
const format = (0, utils_1.getImageFormat)(filePath) || 'png';
|
|
234
|
+
// 这里可以添加读取图片尺寸的逻辑
|
|
235
|
+
// 需要引入 sharp 或其他图像处理库
|
|
236
|
+
return {
|
|
237
|
+
...baseInfo,
|
|
238
|
+
type: asset_types_1.AssetType.IMAGE,
|
|
239
|
+
width: 0, // 需要通过图像库获取
|
|
240
|
+
height: 0,
|
|
241
|
+
format,
|
|
242
|
+
hasAlpha: ['png', 'webp', 'gif', 'tga'].includes(format)
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* 创建音频资源信息
|
|
247
|
+
*/
|
|
248
|
+
createAudioAssetInfo(filePath, baseInfo) {
|
|
249
|
+
const format = (0, utils_1.getAudioFormat)(filePath) || 'mp3';
|
|
250
|
+
return {
|
|
251
|
+
...baseInfo,
|
|
252
|
+
type: asset_types_1.AssetType.AUDIO,
|
|
253
|
+
format,
|
|
254
|
+
loop: false
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* 创建预制体资源信息
|
|
259
|
+
*/
|
|
260
|
+
createPrefabAssetInfo(filePath, baseInfo) {
|
|
261
|
+
const content = (0, utils_1.readJSON)(filePath);
|
|
262
|
+
return {
|
|
263
|
+
...baseInfo,
|
|
264
|
+
type: asset_types_1.AssetType.PREFAB,
|
|
265
|
+
nodeCount: this.countNodes(content),
|
|
266
|
+
scriptComponents: this.extractScriptComponents(content)
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* 创建场景资源信息
|
|
271
|
+
*/
|
|
272
|
+
createSceneAssetInfo(filePath, baseInfo) {
|
|
273
|
+
const content = (0, utils_1.readJSON)(filePath);
|
|
274
|
+
return {
|
|
275
|
+
...baseInfo,
|
|
276
|
+
type: asset_types_1.AssetType.SCENE,
|
|
277
|
+
nodeCount: this.countNodes(content)
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* 创建脚本资源信息
|
|
282
|
+
*/
|
|
283
|
+
createScriptAssetInfo(filePath, baseInfo) {
|
|
284
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
285
|
+
return {
|
|
286
|
+
...baseInfo,
|
|
287
|
+
type: asset_types_1.AssetType.SCRIPT,
|
|
288
|
+
language: ext === '.ts' ? 'typescript' : 'javascript'
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* 创建动画资源信息
|
|
293
|
+
*/
|
|
294
|
+
createAnimationAssetInfo(filePath, baseInfo) {
|
|
295
|
+
const content = (0, utils_1.readJSON)(filePath);
|
|
296
|
+
return {
|
|
297
|
+
...baseInfo,
|
|
298
|
+
type: asset_types_1.AssetType.ANIMATION,
|
|
299
|
+
duration: content?.duration || 0,
|
|
300
|
+
frameRate: content?.frameRate || 60,
|
|
301
|
+
clipCount: Array.isArray(content?.clips) ? content.clips.length : 1
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* 创建字体资源信息
|
|
306
|
+
*/
|
|
307
|
+
createFontAssetInfo(filePath, baseInfo) {
|
|
308
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
309
|
+
let fontFormat = 'ttf';
|
|
310
|
+
if (ext === '.otf')
|
|
311
|
+
fontFormat = 'otf';
|
|
312
|
+
else if (ext === '.woff')
|
|
313
|
+
fontFormat = 'woff';
|
|
314
|
+
else if (ext === '.woff2')
|
|
315
|
+
fontFormat = 'woff2';
|
|
316
|
+
else if (ext === '.fnt')
|
|
317
|
+
fontFormat = 'bitmap';
|
|
318
|
+
return {
|
|
319
|
+
...baseInfo,
|
|
320
|
+
type: asset_types_1.AssetType.FONT,
|
|
321
|
+
fontFormat
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* 创建材质资源信息
|
|
326
|
+
*/
|
|
327
|
+
createMaterialAssetInfo(filePath, baseInfo) {
|
|
328
|
+
const content = (0, utils_1.readJSON)(filePath);
|
|
329
|
+
return {
|
|
330
|
+
...baseInfo,
|
|
331
|
+
type: asset_types_1.AssetType.MATERIAL,
|
|
332
|
+
shaderName: content?.shaderName || ''
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* 处理特殊资源类型(如图片压缩、音频转码等)
|
|
337
|
+
*/
|
|
338
|
+
async processSpecialAsset(_sourcePath, _outputPath, assetInfo) {
|
|
339
|
+
// 这里可以添加图片压缩、音频转码等处理逻辑
|
|
340
|
+
// 需要引入相应的库如 sharp、ffmpeg 等
|
|
341
|
+
switch (assetInfo.type) {
|
|
342
|
+
case asset_types_1.AssetType.IMAGE:
|
|
343
|
+
// TODO: 图片压缩处理
|
|
344
|
+
break;
|
|
345
|
+
case asset_types_1.AssetType.AUDIO:
|
|
346
|
+
// TODO: 音频转码处理
|
|
347
|
+
break;
|
|
348
|
+
default:
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* 统计节点数量
|
|
354
|
+
*/
|
|
355
|
+
countNodes(content) {
|
|
356
|
+
if (!content || typeof content !== 'object')
|
|
357
|
+
return 0;
|
|
358
|
+
let count = 0;
|
|
359
|
+
const obj = content;
|
|
360
|
+
if (obj.children && Array.isArray(obj.children)) {
|
|
361
|
+
count += obj.children.length;
|
|
362
|
+
for (const child of obj.children) {
|
|
363
|
+
count += this.countNodes(child);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return count;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* 提取脚本组件
|
|
370
|
+
*/
|
|
371
|
+
extractScriptComponents(content) {
|
|
372
|
+
const components = [];
|
|
373
|
+
if (!content || typeof content !== 'object')
|
|
374
|
+
return components;
|
|
375
|
+
const obj = content;
|
|
376
|
+
if (obj.components && Array.isArray(obj.components)) {
|
|
377
|
+
for (const comp of obj.components) {
|
|
378
|
+
if (comp && typeof comp === 'object' && comp.type) {
|
|
379
|
+
const type = comp.type;
|
|
380
|
+
if (type && !type.startsWith('cc.')) {
|
|
381
|
+
components.push(type);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
// 递归检查子节点
|
|
387
|
+
if (obj.children && Array.isArray(obj.children)) {
|
|
388
|
+
for (const child of obj.children) {
|
|
389
|
+
components.push(...this.extractScriptComponents(child));
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
return [...new Set(components)];
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* 生成资源清单文件
|
|
396
|
+
*/
|
|
397
|
+
generateManifest() {
|
|
398
|
+
const manifest = {
|
|
399
|
+
version: '1.0.0',
|
|
400
|
+
createdAt: new Date().toISOString(),
|
|
401
|
+
assetCount: this.exportedAssets.size,
|
|
402
|
+
assets: Array.from(this.exportedAssets.values()).map(asset => ({
|
|
403
|
+
uuid: asset.uuid,
|
|
404
|
+
name: asset.name,
|
|
405
|
+
path: asset.path,
|
|
406
|
+
type: asset.type,
|
|
407
|
+
size: asset.size
|
|
408
|
+
}))
|
|
409
|
+
};
|
|
410
|
+
const manifestPath = path.join(this.config.outputDir, 'asset-manifest.json');
|
|
411
|
+
(0, utils_1.writeJSON)(manifestPath, manifest);
|
|
412
|
+
console.log(`\n资源清单已生成: ${manifestPath}`);
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* 打印导出摘要
|
|
416
|
+
*/
|
|
417
|
+
printSummary(result) {
|
|
418
|
+
console.log('\n========== 导出摘要 ==========');
|
|
419
|
+
console.log(`成功: ${result.successCount} 个`);
|
|
420
|
+
console.log(`失败: ${result.failCount} 个`);
|
|
421
|
+
console.log(`跳过: ${result.skipCount} 个`);
|
|
422
|
+
console.log(`耗时: ${(result.duration / 1000).toFixed(2)} 秒`);
|
|
423
|
+
// 按类型统计
|
|
424
|
+
const typeCount = new Map();
|
|
425
|
+
for (const asset of result.assets) {
|
|
426
|
+
const count = typeCount.get(asset.type) || 0;
|
|
427
|
+
typeCount.set(asset.type, count + 1);
|
|
428
|
+
}
|
|
429
|
+
console.log('\n资源类型分布:');
|
|
430
|
+
for (const [type, count] of typeCount) {
|
|
431
|
+
console.log(` ${type}: ${count} 个`);
|
|
432
|
+
}
|
|
433
|
+
if (result.errors.length > 0) {
|
|
434
|
+
console.log('\n错误信息:');
|
|
435
|
+
for (const error of result.errors.slice(0, 10)) {
|
|
436
|
+
console.log(` - ${error}`);
|
|
437
|
+
}
|
|
438
|
+
if (result.errors.length > 10) {
|
|
439
|
+
console.log(` ... 还有 ${result.errors.length - 10} 个错误`);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
console.log('==============================\n');
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* 创建资源包
|
|
446
|
+
* @param name 包名称
|
|
447
|
+
* @param version 包版本
|
|
448
|
+
* @param description 包描述
|
|
449
|
+
* @returns 资源包对象
|
|
450
|
+
*/
|
|
451
|
+
createAssetBundle(name, version = '1.0.0', description) {
|
|
452
|
+
const assets = Array.from(this.exportedAssets.values());
|
|
453
|
+
const totalSize = assets.reduce((sum, asset) => sum + asset.size, 0);
|
|
454
|
+
return {
|
|
455
|
+
name,
|
|
456
|
+
version,
|
|
457
|
+
assets,
|
|
458
|
+
totalSize,
|
|
459
|
+
createdAt: new Date(),
|
|
460
|
+
description
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* 保存资源包到文件
|
|
465
|
+
* @param bundle 资源包
|
|
466
|
+
* @param outputPath 输出路径
|
|
467
|
+
* @returns 是否保存成功
|
|
468
|
+
*/
|
|
469
|
+
saveAssetBundle(bundle, outputPath) {
|
|
470
|
+
try {
|
|
471
|
+
(0, utils_1.ensureDir)(path.dirname(outputPath));
|
|
472
|
+
return (0, utils_1.writeJSON)(outputPath, bundle);
|
|
473
|
+
}
|
|
474
|
+
catch (error) {
|
|
475
|
+
console.error('保存资源包失败:', error);
|
|
476
|
+
return false;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
exports.AssetExporter = AssetExporter;
|
|
481
|
+
exports.default = AssetExporter;
|
|
482
|
+
/**
|
|
483
|
+
* 快速导出函数
|
|
484
|
+
* @param config 导出配置
|
|
485
|
+
* @returns 导出结果
|
|
486
|
+
*/
|
|
487
|
+
async function exportAssets(config) {
|
|
488
|
+
const exporter = new AssetExporter(config);
|
|
489
|
+
return exporter.export();
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* 从Cocos Creator项目导出资源
|
|
493
|
+
* @param projectPath 项目路径
|
|
494
|
+
* @param outputDir 输出目录
|
|
495
|
+
* @param options 额外选项
|
|
496
|
+
* @returns 导出结果
|
|
497
|
+
*/
|
|
498
|
+
async function exportFromCocosProject(projectPath, outputDir, options) {
|
|
499
|
+
if (!(0, utils_1.isCocosProject)(projectPath)) {
|
|
500
|
+
throw new Error(`无效的Cocos Creator项目路径: ${projectPath}`);
|
|
501
|
+
}
|
|
502
|
+
const assetsDir = (0, utils_1.getAssetsDir)(projectPath);
|
|
503
|
+
if (!assetsDir) {
|
|
504
|
+
throw new Error(`无法找到项目的资源目录: ${projectPath}`);
|
|
505
|
+
}
|
|
506
|
+
const config = {
|
|
507
|
+
sourceDir: assetsDir,
|
|
508
|
+
outputDir,
|
|
509
|
+
...options
|
|
510
|
+
};
|
|
511
|
+
return exportAssets(config);
|
|
512
|
+
}
|
|
513
|
+
//# sourceMappingURL=asset-exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-exporter.js","sourceRoot":"","sources":["../src/asset-exporter.ts"],"names":[],"mappings":"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"}
|