zh hace 7 meses
padre
commit
fc154fcd8e

+ 2 - 0
.creator/asset-template/typescript/Custom Script Template Help Documentation.url

@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://docs.cocos.com/creator/manual/en/scripting/setup.html#custom-script-template

+ 19 - 0
.creator/asset-template/typescript/UITemplate

@@ -0,0 +1,19 @@
+import { Widget, _decorator,Node } from 'cc';
+import { UIBase } from '../scriptBase/UIBase';
+const { ccclass, property,requireComponent } = _decorator;
+
+@ccclass('UI/UITemplate')
+@requireComponent(Widget)
+export class UITemplate extends UIBase {
+
+    public onOpen(data?: any): void {
+        
+    }
+
+    public onClose(data?: any): void {
+        
+    }
+
+}
+
+

+ 5 - 0
.creator/default-meta.json

@@ -0,0 +1,5 @@
+{
+  "image": {
+    "type": "sprite-frame"
+  }
+}

BIN
excel2ts/.DS_Store


+ 3 - 0
excel2ts/ExportToTs.bat

@@ -0,0 +1,3 @@
+@REM node ./scripts/clear.js
+node ./scripts/exportToTs.js
+pause

+ 4 - 0
excel2ts/config.json

@@ -0,0 +1,4 @@
+{
+	"sheetPath":"D:/CocosProjects/hgxcds/sheet",
+	"exportTsPath":"D:/CocosProjects/hgxcds/assets/scripts/config"
+}

+ 6 - 0
excel2ts/scripts/clear.js

@@ -0,0 +1,6 @@
+var path = require('path');
+var fm = require('./fileManager');
+var config = require('../config.json');
+
+fm.deleteDirAndFileSync(path.resolve(config.exportPath));
+fm.deleteDirQueue();

+ 120 - 0
excel2ts/scripts/excelExport.js

@@ -0,0 +1,120 @@
+let path = require('path');
+let xlsx = require('node-xlsx');
+let fm = require('./fileManager');
+let config = require('../config.json');
+
+function exportXlsxToTs(sheetPath, name) {
+    console.log('excelToTs')
+    if (name.indexOf('meta') != -1) return;
+    if (name.indexOf('~') != -1) return;
+    let fullPath = path.resolve(sheetPath, name);
+    let fileName = name.split('.')[0];
+    let sheets = xlsx.parse(fullPath);
+    if (!sheets) {
+        console.error("表" + name + "不存在!可能是路径错误!");
+    }
+    let sheetLen = sheets.length;
+    console.log("准备解析表格:" + name);
+
+    let str = '';
+
+    for (let i = 0; i < sheetLen; i++) {
+        let sheetInfo = sheets[i];
+        if (sheetInfo) {
+            let sheetName = sheetInfo.name;
+            let sheetData = sheetInfo.data;
+            if (!sheetName) {
+                console.error(fullPath + "中表名不存在!");
+                return;
+            }
+            if (!sheetData) {
+                console.error(fullPath + "中表数据不存在!");
+                return;
+            }
+            if (sheetData && sheetData.length <= 0) {
+                console.error(fullPath + "中表为空!");
+                return;
+            }
+            let startIdx = 4;
+            console.log("开始解析表:" + sheetName + " 共" + (sheetData.length - startIdx) + "条数据...");
+
+            str += `export const cfg_${fileName}_${sheetName} = [\n`
+
+            let propName = [];
+            let types = sheetData[2]
+            for (let j = 0; j < sheetData.length; j++) {
+                let data = sheetData[j];
+                if (data) {
+                    if (j == 1) {
+                        //读取key
+                        for (let k = 0; k < data.length; k++) {
+                            propName.push(data[k]);
+                        }
+                    } else if (j >= startIdx && data.length > 0) {
+                        //读取值
+                        str += '\t{\n'
+                        for (let m = 0; m < data.length; m++) {
+                            let value = data[m];
+                            let type = types[m];
+                            value = typeConvert(value, type)
+                            str += '\t\t'
+                            if (type.includes("array")) {
+                                str += `${propName[m]}: [${value}],\n`
+                            } else {
+                                str += `${propName[m]}: ${value},\n`
+                            }
+                        }
+                        str += '\t},\n'
+                    }
+                }
+            }
+
+            str += ']\n'
+
+        } else {
+            console.error("表解析错误!");
+        }
+    }
+    fm.writeFile(path.resolve(config.exportTsPath, "cfg_" + fileName + ".ts"), str);
+    console.log("表格" + name + "解析完毕!\n");
+}
+function typeConvert(value, type) {
+    switch (type) {
+        case "string":
+            return `"${value}"`
+        case "int":
+            var v = parseInt(value)
+            return isNaN(v) ? 0 : v
+        case "float":
+            var v = parseFloat(value)
+            return isNaN(v) ? 0 : v
+        case "bool":
+            return parseInt(value)
+        case "string_array":
+        case "array":
+            return value ? value.split(",") : []
+        case "number_array":
+            if (typeof value == "number") return [value]
+            console.log(value)
+            var v = value ? value.split(",").map(Number) : []
+            return v
+        case "number_array2":
+            const regex = /\[(.*?)\]/g;
+            var res = value.match(regex)
+            var v = ''
+            for (let i = 0; i < res.length; i++) {
+                const r = res[i]
+                v += r
+                if (i < res.length - 1) {
+                    v += ','
+                }
+            }
+            return v
+        default:
+            return value
+    }
+}
+
+module.exports = {
+    exportXlsxToTs
+}

+ 11 - 0
excel2ts/scripts/exportToTs.js

@@ -0,0 +1,11 @@
+var et = require('./excelExport');
+var fm = require('./fileManager');
+var config = require('../config.json');
+
+fm.readDir(config.sheetPath,function(err,files){
+    files.forEach((file) => {
+        et.exportXlsxToTs(config.sheetPath, file);
+    });
+});
+
+

+ 160 - 0
excel2ts/scripts/fileManager.js

@@ -0,0 +1,160 @@
+var fs = require('fs');
+var path = require('path');
+
+var deleteQueue = [];
+
+/**读取文件夹内容 */
+function readDir(dirPath, onComp) {
+    var callback = onComp ? onComp : function (err, files) {
+        if (err) {
+            console.error(err);
+        } else {
+            console.log(files);
+            console.log("文件夹读取成功!");
+        }
+    };
+    fs.readdir(dirPath, callback);
+}
+/**同步读取文件内容 */
+function readDirSync(dirPath) {
+    var files = fs.readdirSync(dirPath);
+    if(files.length <= 0){
+        console.warn(dirPath+" 中没有文件!");
+    }else{
+        console.log(files);
+    }
+    return files;
+}
+
+
+
+/**创建新文件夹若存在则创建失败 */
+function createDir(dirPath) {
+    fs.mkdir(dirPath, function (err) {
+        if (err) {
+            console.error(err);
+        } else {
+            console.log("文件夹创建成功!");
+        }
+    });
+}
+/**同步创建新文件夹若存在则创建失败 */
+function createDirSync(dirPath) {
+    fs.mkdirSync(dirPath);
+    console.log("创建成功!");
+}
+
+
+
+
+/**删除空文件夹若不为空则失败 */
+function deleteEmptyDir(dirPath,onComp) {
+    var callback = onComp ? onComp : function (err) {
+        if (err) {
+            console.error(err);
+        } else {
+            console.log("文件夹删除成功!");
+        }
+    };
+    fs.rmdir(dirPath,callback);
+}
+
+/**同步删除空文件夹若不为空则失败 */
+function deleteEmptyDirSync(dirPath,onComp) {
+    fs.rmdirSync(dirPath);
+    onComp && onComp();
+    // console.log("文件夹删除成功!");
+}
+
+
+/**同步删除队列中的文件夹 */
+function deleteDirQueue() {
+    var len = deleteQueue.length;
+    for(var i = 0; i < len;i++){
+        deleteEmptyDirSync(deleteQueue[i]);
+    }
+}
+
+/** 同步删除文件夹及其中的文件 */
+function deleteDirAndFileSync(dirPath,deleteSelf = false) {
+    var files = readDirSync(dirPath);
+    var len = files.length;
+    for(var i = 0;i < len;i++){
+        var file = files[i];
+        let filePath = path.resolve(dirPath, file);//单个文件绝对路径
+        var state = fs.statSync(filePath);//单个文件的状态
+        if(state.isDirectory()){//如果是文件夹
+            deleteDirAndFileSync(filePath,true);
+        }else{//否则是文件,直接删除
+            deleteFileSync(filePath);
+        }
+    }
+    deleteSelf && deleteQueue.push(dirPath);
+}
+
+
+/**读取文件 */
+function readFile(filePath) {
+    return fs.readFile(filePath, function (err) {
+        if (err) {
+            console.error(err);
+        } else {
+            console.log("文件读取成功!");
+        }
+    });
+}
+
+/**写入文件若文件不存在则创建文件并写入 */
+function writeFile(filePath, fileData) {
+    fs.writeFile(filePath, fileData, function (err) {
+        if (err) {
+            console.error(err);
+        } else {
+            // console.log("文件写入成功!");
+        }
+    });
+}
+
+/**删除文件 */
+function deleteFile(filePath) {
+    fs.unlink(filePath, function (err) {
+        if (err) {
+            console.error(err);
+        } else {
+            console.log("文件删除成功!");
+        }
+    });
+}
+/**同步删除文件 */
+function deleteFileSync(filePath) {
+    fs.unlinkSync(filePath);
+    console.log(filePath + " 删除成功!");
+}
+
+
+
+
+
+module.exports = {
+    readDir,
+    readDirSync,
+
+    createDir,
+    createDirSync,
+
+    deleteEmptyDir,
+    deleteEmptyDirSync,
+
+    readFile,
+    
+    writeFile,
+
+    deleteFile,
+    deleteFileSync,
+
+    deleteDirAndFileSync,
+
+    deleteDirQueue,
+
+    deleteQueue
+}

BIN
sheet/icon.xlsx


BIN
sheet/level.xlsx