Forráskód Böngészése

1,增加前期加载策略--按需加载,动态加载
2,优化资源加载工具
3,编写zip压缩工具

zouyong 5 éve
szülő
commit
3c4805dcb2
63 módosított fájl, 504 hozzáadás és 188 törlés
  1. 50 0
      tools/FileUtil.js
  2. 39 16
      tools/createResList.js
  3. 166 0
      tools/package-lock.json
  4. 3 14
      tools/package.json
  5. 9 2
      tools/test.js
  6. 55 0
      tower_sanguo/assets/MOKA/manager/ResManager.ts
  7. BIN
      tower_sanguo/assets/resources/data/1.bin
  8. 5 0
      tower_sanguo/assets/resources/data/1.bin.meta
  9. 0 1
      tower_sanguo/assets/resources/data/buff_data.json
  10. 0 5
      tower_sanguo/assets/resources/data/buff_data.json.meta
  11. 0 16
      tower_sanguo/assets/resources/data/general_data.json
  12. 0 5
      tower_sanguo/assets/resources/data/general_data.json.meta
  13. 0 30
      tower_sanguo/assets/resources/data/mission_data.json
  14. 0 5
      tower_sanguo/assets/resources/data/mission_data.json.meta
  15. 0 26
      tower_sanguo/assets/resources/data/monster_data.json
  16. 0 5
      tower_sanguo/assets/resources/data/monster_data.json.meta
  17. 106 0
      tower_sanguo/assets/resources/data/resList.json
  18. 5 0
      tower_sanguo/assets/resources/data/resList.json.meta
  19. 0 17
      tower_sanguo/assets/resources/data/skill_data.json
  20. 0 5
      tower_sanguo/assets/resources/data/skill_data.json.meta
  21. BIN
      tower_sanguo/assets/resources/data/test.bin
  22. 0 5
      tower_sanguo/assets/resources/data/test.bin.meta
  23. 1 3
      tower_sanguo/assets/resources/module/fight/prefab/attack_normal.prefab
  24. 7 0
      tower_sanguo/assets/resources/module/fight/prefab_texture.meta
  25. 0 0
      tower_sanguo/assets/resources/module/fight/prefab_texture/bg_fight.png
  26. 0 0
      tower_sanguo/assets/resources/module/fight/prefab_texture/bg_fight.png.meta
  27. 0 0
      tower_sanguo/assets/resources/module/fight/prefab_texture/monster_blood_1.png
  28. 0 0
      tower_sanguo/assets/resources/module/fight/prefab_texture/monster_blood_1.png.meta
  29. 0 0
      tower_sanguo/assets/resources/module/fight/prefab_texture/monster_blood_2.png
  30. 0 0
      tower_sanguo/assets/resources/module/fight/prefab_texture/monster_blood_2.png.meta
  31. 0 0
      tower_sanguo/assets/resources/module/fight/prefab_texture/monster_blood_3.png
  32. 0 0
      tower_sanguo/assets/resources/module/fight/prefab_texture/monster_blood_3.png.meta
  33. 1 1
      tower_sanguo/assets/resources/module/loading/loading.prefab
  34. 7 0
      tower_sanguo/assets/resources/module/loading/prefab_texture.meta
  35. 0 0
      tower_sanguo/assets/resources/module/loading/prefab_texture/bg.png
  36. 0 0
      tower_sanguo/assets/resources/module/loading/prefab_texture/bg.png.meta
  37. 0 0
      tower_sanguo/assets/resources/module/loading/prefab_texture/load_bar_bg.png
  38. 0 0
      tower_sanguo/assets/resources/module/loading/prefab_texture/load_bar_bg.png.meta
  39. 0 0
      tower_sanguo/assets/resources/module/loading/prefab_texture/load_bar_front.png
  40. 0 0
      tower_sanguo/assets/resources/module/loading/prefab_texture/load_bar_front.png.meta
  41. 0 0
      tower_sanguo/assets/resources/module/loading/prefab_texture/load_icon.png
  42. 0 0
      tower_sanguo/assets/resources/module/loading/prefab_texture/load_icon.png.meta
  43. 0 0
      tower_sanguo/assets/resources/module/loading/prefab_texture/load_txt_gxts.png
  44. 0 0
      tower_sanguo/assets/resources/module/loading/prefab_texture/load_txt_gxts.png.meta
  45. 7 0
      tower_sanguo/assets/resources/module/main/prefab_texture.meta
  46. 1 1
      tower_sanguo/assets/resources/spine/person.meta
  47. 0 0
      tower_sanguo/assets/resources/spine/person/bing_1.atlas
  48. 0 0
      tower_sanguo/assets/resources/spine/person/bing_1.atlas.meta
  49. 0 0
      tower_sanguo/assets/resources/spine/person/bing_1.json
  50. 0 0
      tower_sanguo/assets/resources/spine/person/bing_1.json.meta
  51. 0 0
      tower_sanguo/assets/resources/spine/person/bing_1.png
  52. 0 0
      tower_sanguo/assets/resources/spine/person/bing_1.png.meta
  53. 0 0
      tower_sanguo/assets/resources/spine/person/guanyu.atlas
  54. 0 0
      tower_sanguo/assets/resources/spine/person/guanyu.atlas.meta
  55. 0 0
      tower_sanguo/assets/resources/spine/person/guanyu.json
  56. 0 0
      tower_sanguo/assets/resources/spine/person/guanyu.json.meta
  57. 0 0
      tower_sanguo/assets/resources/spine/person/guanyu.png
  58. 0 0
      tower_sanguo/assets/resources/spine/person/guanyu.png.meta
  59. 7 15
      tower_sanguo/assets/scripts/GameController.ts
  60. 18 13
      tower_sanguo/assets/scripts/data/GameData.ts
  61. 15 1
      tower_sanguo/assets/scripts/module/fight/FightUI.ts
  62. 1 1
      tower_sanguo/assets/scripts/module/fight/model/attack/AttackModel.ts
  63. 1 1
      tower_sanguo/assets/scripts/module/fight/model/monsters/Monster.ts

+ 50 - 0
tools/FileUtil.js

@@ -0,0 +1,50 @@
+var fs = require("fs");
+var xlsx = require('node-xlsx');
+const path = require('path')
+var compressing = require("compressing");
+
+/**
+ * 读取excel数据
+ * @param {*} url_excel excel路径
+ * @param {*} sheetnum 是否多个sheet
+ * @returns 
+ */
+function getExcelData(url_excel, sheetnum = 1) {
+    var sheets = xlsx.parse(url_excel);
+    return sheetnum == 1 ? sheets[0].data : sheets;
+}
+
+/**
+ * 生成json
+ * @param {*} data  json数据 
+ * @param {*} url_json 生成json路劲
+ */
+function createJson(data, url_json) {
+    console.log(url_json,data);
+    fs.writeFile(url_json, JSON.stringify(data, "", "\t"), "utf8", function (err) {
+        if (err) throw err;
+        console.log("      WriteFile:  " + url_json + "  OK!");
+    });
+}
+
+/**
+ * 
+ * @param {*} jsonpath 
+ * @param {*} zippath 
+ */
+function createZip(jsonpath, zippath) {
+    compressing.zip.compressDir(jsonpath, zippath)
+        .then(() => {
+            console.log('success');
+        })
+        .catch(err => {
+            console.error(err);
+        });
+    // compressing.zip.compressDir('data', 'nodejs-compressing-demo.zip');
+}
+
+module.exports = {
+    getExcelData,
+    createJson,
+    createZip,
+}

+ 39 - 16
tools/jsonToZip.js → tools/createResList.js

@@ -4,6 +4,7 @@
 
 const path = require('path')
 const fs = require('fs')
+var FileUtil = require('./FileUtil');
 
 //自动获取项目名称
 var programepath = process.cwd();
@@ -12,14 +13,11 @@ arr = arr.slice(0, arr.length - 1);
 var programename = arr[arr.length - 1];
 var dirpath = arr.join('\\') + '\\' + programename + '\\assets\\resources';
 
-compressing.zip.compressDir('nodejs-compressing-demo', 'nodejs-compressing-demo.zip')
-    .then(() => {
-        console.log('success');
-    })
-    .catch(err => {
-        console.error(err);
-    });
-compressing.zip.compressDir('data', 'nodejs-compressing-demo.zip');
+/** 进入游戏需要加载的资源文件夹 */
+var res_list_arr = ['data', 'module/loading', 'module/main', 'module/fight', 'music'];
+
+var resjsondata = {};
+var reslistpath = dirpath + "\\data\\resList.json";
 
 //遍历文件夹内所有文件
 var mapDir = (dir, callback, finish) => {
@@ -38,7 +36,7 @@ var mapDir = (dir, callback, finish) => {
                 if (stats.isDirectory()) {
                     mapDir(pathname, callback, finish);
                 } else if (stats.isFile()) {
-                    if (['.meta', '.less'].includes(path.extname(pathname))) {  // 排除 目录下的 json less 文件
+                    if (['.meta'].includes(path.extname(pathname))) {  // 排除 目录下的 meta 文件
                         return;
                     }
                     fs.readFile(pathname, (err, data) => {
@@ -50,23 +48,48 @@ var mapDir = (dir, callback, finish) => {
                     })
                 }
             })
-            if (index === files.length - 1) {
-                finish && finish();
-            }
         })
     })
 }
 
 var addFileName = (pathname) => {
-    let a = pathname.split("\\").slice(arr.length + 1);
-
+    let a = pathname.split("\\").slice(arr.length + 3);
+    if(a.indexOf("prefab_texture") != -1){
+        return;
+    }
+    let vo = {};
+    let url = a.join("/");
+    let d = url.split(".");
+    let type = d[1];
+    vo.url = d[0];
+    if(a.indexOf("spine") != -1){
+        type = 'spine';
+    }
+    else if(a.indexOf("atlas") != -1){
+        type = 'atlas';
+    }
+    else if(type == 'png' || type == 'jpg'){
+        type = 'texture';
+    }
+    vo.type = type;
+    resjsondata[vo.url] = vo;
 };
 
 var finish = () => {
-
 };
 
-mapDir(dirpath, addFileName, finish);
+for (let i = 0; i < res_list_arr.length; i++) {
+    let p = dirpath + "\\" + res_list_arr[i];
+    mapDir(p, addFileName, finish);
+}
+
+setTimeout(() => {
+    let res_arr = [];
+    for (let i in resjsondata) {
+        res_arr.push(resjsondata[i]);
+    }
+    FileUtil.createJson(res_arr, reslistpath);
+}, 3000);
 
 
 

+ 166 - 0
tools/package-lock.json

@@ -2,6 +2,23 @@
   "requires": true,
   "lockfileVersion": 1,
   "dependencies": {
+    "@babel/runtime": {
+      "version": "7.13.10",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz",
+      "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==",
+      "requires": {
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
+    "adler-32": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz",
+      "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=",
+      "requires": {
+        "exit-on-epipe": "~1.0.1",
+        "printj": "~1.1.0"
+      }
+    },
     "bl": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
@@ -35,6 +52,42 @@
       "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
       "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
     },
+    "buffer-from": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+    },
+    "cfb": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.0.tgz",
+      "integrity": "sha512-sXMvHsKCICVR3Naq+J556K+ExBo9n50iKl6LGarlnvuA2035uMlGA/qVrc0wQtow5P1vJEw9UyrKLCbtIKz+TQ==",
+      "requires": {
+        "adler-32": "~1.2.0",
+        "crc-32": "~1.2.0",
+        "printj": "~1.1.2"
+      }
+    },
+    "codepage": {
+      "version": "1.14.0",
+      "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz",
+      "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=",
+      "requires": {
+        "commander": "~2.14.1",
+        "exit-on-epipe": "~1.0.1"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.14.1",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz",
+          "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw=="
+        }
+      }
+    },
+    "commander": {
+      "version": "2.17.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+      "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
+    },
     "compressing": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/compressing/-/compressing-1.5.1.tgz",
@@ -56,6 +109,15 @@
       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
     },
+    "crc-32": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz",
+      "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==",
+      "requires": {
+        "exit-on-epipe": "~1.0.1",
+        "printj": "~1.1.0"
+      }
+    },
     "end-of-stream": {
       "version": "1.4.4",
       "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -64,6 +126,11 @@
         "once": "^1.4.0"
       }
     },
+    "exit-on-epipe": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
+      "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw=="
+    },
     "fd-slicer": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
@@ -72,11 +139,26 @@
         "pend": "~1.2.0"
       }
     },
+    "fflate": {
+      "version": "0.3.11",
+      "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.3.11.tgz",
+      "integrity": "sha512-Rr5QlUeGN1mbOHlaqcSYMKVpPbgLy0AWT/W0EHxA6NGI12yO1jpoui2zBBvU2G824ltM6Ut8BFgfHSBGfkmS0A=="
+    },
     "flushwritable": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz",
       "integrity": "sha1-PjKNj95BKtR+c44751C00pAENJg="
     },
+    "frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
+    },
+    "fs": {
+      "version": "0.0.1-security",
+      "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
+      "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ="
+    },
     "fs-constants": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
@@ -118,6 +200,16 @@
         "minimist": "^1.2.5"
       }
     },
+    "node-xlsx": {
+      "version": "0.16.1",
+      "resolved": "https://registry.npmjs.org/node-xlsx/-/node-xlsx-0.16.1.tgz",
+      "integrity": "sha512-mwEZKItGXKO+jp5Pz9+wDCXxqhJITGd6m81A8WmalBpGAzREiR5cIJ0xrSF0BxzU6Mh2mC0fA2X0/3GqNU6dIw==",
+      "requires": {
+        "@babel/runtime": "^7.12.5",
+        "buffer-from": "^1.1.1",
+        "xlsx": "^0.16.9"
+      }
+    },
     "once": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -126,11 +218,30 @@
         "wrappy": "1"
       }
     },
+    "path": {
+      "version": "0.12.7",
+      "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
+      "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
+      "requires": {
+        "process": "^0.11.1",
+        "util": "^0.10.3"
+      }
+    },
     "pend": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
       "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
     },
+    "printj": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz",
+      "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ=="
+    },
+    "process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
+    },
     "process-nextick-args": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@@ -166,6 +277,11 @@
         }
       }
     },
+    "regenerator-runtime": {
+      "version": "0.13.7",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
+      "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
+    },
     "safe-buffer": {
       "version": "5.2.1",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@@ -176,6 +292,14 @@
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
     },
+    "ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "requires": {
+        "frac": "~1.1.2"
+      }
+    },
     "streamifier": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz",
@@ -215,16 +339,58 @@
       "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
       "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
     },
+    "util": {
+      "version": "0.10.4",
+      "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
+      "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+      "requires": {
+        "inherits": "2.0.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+        }
+      }
+    },
     "util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
       "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
     },
+    "wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
+    },
+    "word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
+    },
     "wrappy": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
     },
+    "xlsx": {
+      "version": "0.16.9",
+      "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.16.9.tgz",
+      "integrity": "sha512-gxi1I3EasYvgCX1vN9pGyq920Ron4NO8PNfhuoA3Hpq6Y8f0ECXiy4OLrK4QZBnj1jx3QD+8Fq5YZ/3mPZ5iXw==",
+      "requires": {
+        "adler-32": "~1.2.0",
+        "cfb": "^1.1.4",
+        "codepage": "~1.14.0",
+        "commander": "~2.17.1",
+        "crc-32": "~1.2.0",
+        "exit-on-epipe": "~1.0.1",
+        "fflate": "^0.3.8",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      }
+    },
     "xtend": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",

+ 3 - 14
tools/package.json

@@ -62,11 +62,7 @@
       "resolved": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz",
       "version": "1.0.0"
     },
-    "fs": {
-      "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=",
-      "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
-      "version": "0.0.1-security"
-    },
+    "fs": "0.0.1-security",
     "fs-constants": {
       "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
       "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
@@ -108,6 +104,7 @@
       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
       "version": "0.5.5"
     },
+    "node-xlsx": "^0.16.1",
     "once": {
       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
       "requires": {
@@ -116,15 +113,7 @@
       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
       "version": "1.4.0"
     },
-    "path": {
-      "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
-      "requires": {
-        "process": "^0.11.1",
-        "util": "^0.10.3"
-      },
-      "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
-      "version": "0.12.7"
-    },
+    "path": "^0.12.7",
     "pend": {
       "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
       "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",

+ 9 - 2
tools/test.js

@@ -1,6 +1,13 @@
 
+let a = 0;
 
-let a = {}
-console.log(typeof a);
+let b = (c) => {
+    console.log('first:' + c);
+    console.log('second:' + a);
+}
+
+b(++a);
+
+console.log('three:' + a);
 
 

+ 55 - 0
tower_sanguo/assets/MOKA/manager/ResManager.ts

@@ -17,6 +17,36 @@ export default class ResManager {
         cc.loader.loadResDir(dirname, progressCallback, comCallback);
     }
 
+    private resListCount: number = 0;
+    private resListLen: number = 0;
+    private resList: { url: string, type: string }[];
+    private loadListProCallback;
+    private loadListComCallbak;
+    /**
+     * 按列表加载
+     * @param list {url:string,type:string}[]
+     * @param progressCallback 
+     * @param comCallback 
+     */
+    loadArray(list, progressCallback, comCallback) {
+        this.resList = list;
+        this.resListCount = 0;
+        this.resListLen = this.resList.length;
+        this.loadListProCallback = progressCallback;
+        this.loadListComCallbak = comCallback;
+
+        this.loadResList();
+    }
+    private loadResList(err = null, data = null) {
+        let o = this.resList[this.resListCount];
+        if (o == null) {
+            this.loadListComCallbak && this.loadListComCallbak();
+            return;
+        }
+        this.loadListProCallback && this.loadListProCallback(this.resListCount++, this.resListLen - this.resList.length);
+        cc.loader.loadRes(o.url,this.getResType(o.type),this.loadResList.bind(this));
+    }
+
     async loadRemoteJson(url) {
         return new Promise((resolve: (data) => void, reject) => {
             cc.loader.load(url, (error, data): void => {
@@ -207,6 +237,31 @@ export default class ResManager {
     releaseAll() {
         cc.loader.releaseAll();
     }
+
+    /**
+     * 通过resList内type获取加载类型
+     * @param str 用于生成resList文件
+     * @returns 
+     */
+    getResType(str: string) {
+        switch (str) {
+            case 'json':
+                return cc.JsonAsset;
+            case 'wav':
+            case 'mp3':
+                return cc.AudioClip;
+            case 'atlas':
+                return cc.SpriteAtlas;
+            case 'prefab':
+                return cc.Prefab;
+            case 'spine':
+                return sp.SkeletonData;
+            case 'anim':
+                return cc.AnimationClip;
+            case 'texture':
+                return cc.SpriteFrame;
+        }
+    }
 }
 
 export enum LoadTactics {

BIN
tower_sanguo/assets/resources/data/1.bin


+ 5 - 0
tower_sanguo/assets/resources/data/1.bin.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.0",
+  "uuid": "50f1e37d-2d8a-4a80-9fcc-5e7879fbe0ae",
+  "subMetas": {}
+}

+ 0 - 1
tower_sanguo/assets/resources/data/buff_data.json

@@ -1 +0,0 @@
-{}

+ 0 - 5
tower_sanguo/assets/resources/data/buff_data.json.meta

@@ -1,5 +0,0 @@
-{
-  "ver": "1.0.0",
-  "uuid": "686b70a2-f835-4f67-9bd9-096d048be752",
-  "subMetas": {}
-}

+ 0 - 16
tower_sanguo/assets/resources/data/general_data.json

@@ -1,16 +0,0 @@
-{
-	"1": {
-		"id": 1,
-		"name": "关羽",
-		"color": 3,
-		"attSpeed": 1.5,
-		"skillID": 10001,
-		"resource": "guanyu",
-		"attack": 300,
-		"cri": 500,
-		"acc": 10000,
-		"commander": 85,
-		"initStar": 3,
-		"upRatio": "100,150,200,250,300,350,400"
-	}
-}

+ 0 - 5
tower_sanguo/assets/resources/data/general_data.json.meta

@@ -1,5 +0,0 @@
-{
-  "ver": "1.0.0",
-  "uuid": "327e1fde-c625-4c19-b8af-740fbca4f953",
-  "subMetas": {}
-}

+ 0 - 30
tower_sanguo/assets/resources/data/mission_data.json

@@ -1,30 +0,0 @@
-{
-	"1": {
-		"id": 1,
-		"type": 1,
-		"monsterData": "3,2,100,0.5"
-	},
-	"2": {
-		"id": 2,
-		"type": 1,
-		"monsterData": "2,3,1,0.5"
-	},
-	"3": {
-		"id": 3,
-		"type": 1,
-		"monsterData": "2,3,2,0.5;1,5,2,0.2",
-		"cd": 5
-	},
-	"4": {
-		"id": 4,
-		"type": 1,
-		"monsterData": "2,3,4,0.5;1,5,4,0.2",
-		"cd": 3
-	},
-	"5": {
-		"id": 5,
-		"type": 2,
-		"monsterData": "3,2,1,1",
-		"award": "1:100;2:50"
-	}
-}

+ 0 - 5
tower_sanguo/assets/resources/data/mission_data.json.meta

@@ -1,5 +0,0 @@
-{
-  "ver": "1.0.0",
-  "uuid": "284a5526-f783-4f81-ac18-22a9dac8808d",
-  "subMetas": {}
-}

+ 0 - 26
tower_sanguo/assets/resources/data/monster_data.json

@@ -1,26 +0,0 @@
-{
-	"1": {
-		"id": 1,
-		"resource": "bing_1",
-		"type": 1,
-		"hp": 500,
-		"miss": 0,
-		"award": "1:5"
-	},
-	"2": {
-		"id": 2,
-		"resource": "bing_1",
-		"type": 1,
-		"hp": 1500,
-		"miss": 0,
-		"award": "1:5"
-	},
-	"3": {
-		"id": 3,
-		"resource": "bing_1",
-		"type": 2,
-		"hp": 30000,
-		"miss": 1000,
-		"award": "1:20"
-	}
-}

+ 0 - 5
tower_sanguo/assets/resources/data/monster_data.json.meta

@@ -1,5 +0,0 @@
-{
-  "ver": "1.0.0",
-  "uuid": "1a0d19bd-845d-42a1-8892-a8398fb0595d",
-  "subMetas": {}
-}

+ 106 - 0
tower_sanguo/assets/resources/data/resList.json

@@ -0,0 +1,106 @@
+[
+	{
+		"url": "data/1",
+		"type": "bin"
+	},
+	{
+		"url": "data/general_data",
+		"type": "json"
+	},
+	{
+		"url": "data/monster_data",
+		"type": "json"
+	},
+	{
+		"url": "data/buff_data",
+		"type": "json"
+	},
+	{
+		"url": "data/mission_data",
+		"type": "json"
+	},
+	{
+		"url": "data/resList",
+		"type": "json"
+	},
+	{
+		"url": "data/skill_data",
+		"type": "json"
+	},
+	{
+		"url": "module/loading/loading",
+		"type": "prefab"
+	},
+	{
+		"url": "module/main/main",
+		"type": "prefab"
+	},
+	{
+		"url": "module/main/missionitem",
+		"type": "prefab"
+	},
+	{
+		"url": "module/fight/fight",
+		"type": "prefab"
+	},
+	{
+		"url": "music/victory",
+		"type": "mp3"
+	},
+	{
+		"url": "music/Sutra_PickUP",
+		"type": "wav"
+	},
+	{
+		"url": "module/fight/prefab/bar_monster",
+		"type": "prefab"
+	},
+	{
+		"url": "module/fight/prefab/guanyu",
+		"type": "prefab"
+	},
+	{
+		"url": "module/fight/prefab/attack_normal",
+		"type": "prefab"
+	},
+	{
+		"url": "module/fight/prefab/hp_tips",
+		"type": "prefab"
+	},
+	{
+		"url": "module/fight/prefab/monster",
+		"type": "prefab"
+	},
+	{
+		"url": "module/fight/spine/bing_die",
+		"type": "spine"
+	},
+	{
+		"url": "module/fight/spine/knife_light",
+		"type": "spine"
+	},
+	{
+		"url": "module/fight/texture/attack_daoguang",
+		"type": "texture"
+	},
+	{
+		"url": "module/fight/spine/attack_full/2/skeleton",
+		"type": "spine"
+	},
+	{
+		"url": "module/fight/spine/attack_full/1/skeleton",
+		"type": "spine"
+	},
+	{
+		"url": "module/fight/spine/attack_full/4/skeleton",
+		"type": "spine"
+	},
+	{
+		"url": "module/fight/spine/attack_full/3/skeleton",
+		"type": "spine"
+	},
+	{
+		"url": "module/fight/spine/attack_full/1/skeleton2",
+		"type": "spine"
+	}
+]

+ 5 - 0
tower_sanguo/assets/resources/data/resList.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.0",
+  "uuid": "f97299e3-e0ba-49cd-a254-67b617de7c53",
+  "subMetas": {}
+}

+ 0 - 17
tower_sanguo/assets/resources/data/skill_data.json

@@ -1,17 +0,0 @@
-{
-	"10001": {
-		"id": 10001,
-		"attType": "1:1",
-		"skillValue": "95,105"
-	},
-	"10002": {
-		"id": 10002,
-		"attType": "1:3",
-		"skillValue": "35,45"
-	},
-	"10003": {
-		"id": 10003,
-		"attType": "2:10,5",
-		"skillValue": "27,33"
-	}
-}

+ 0 - 5
tower_sanguo/assets/resources/data/skill_data.json.meta

@@ -1,5 +0,0 @@
-{
-  "ver": "1.0.0",
-  "uuid": "1df450f5-fbaf-40c0-bda2-6dec967720e7",
-  "subMetas": {}
-}

BIN
tower_sanguo/assets/resources/data/test.bin


+ 0 - 5
tower_sanguo/assets/resources/data/test.bin.meta

@@ -1,5 +0,0 @@
-{
-  "ver": "1.0.0",
-  "uuid": "c1813a40-432d-44e3-b435-ef964f3e5fa4",
-  "subMetas": {}
-}

+ 1 - 3
tower_sanguo/assets/resources/module/fight/prefab/attack_normal.prefab

@@ -156,9 +156,7 @@
     ],
     "_srcBlendFactor": 770,
     "_dstBlendFactor": 771,
-    "_spriteFrame": {
-      "__uuid__": "8c81f397-0d5a-47c7-874f-3f5a95249dfa"
-    },
+    "_spriteFrame": null,
     "_type": 0,
     "_sizeMode": 1,
     "_fillType": 0,

+ 7 - 0
tower_sanguo/assets/resources/module/fight/prefab_texture.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "1.0.1",
+  "uuid": "d259fefe-83bd-4c97-bb7c-69d9b0b3c0e3",
+  "isSubpackage": false,
+  "subpackageName": "",
+  "subMetas": {}
+}

+ 0 - 0
tower_sanguo/assets/resources/module/fight/texture/bg_fight.png → tower_sanguo/assets/resources/module/fight/prefab_texture/bg_fight.png


+ 0 - 0
tower_sanguo/assets/resources/module/fight/texture/bg_fight.png.meta → tower_sanguo/assets/resources/module/fight/prefab_texture/bg_fight.png.meta


+ 0 - 0
tower_sanguo/assets/resources/module/fight/texture/monster_blood_1.png → tower_sanguo/assets/resources/module/fight/prefab_texture/monster_blood_1.png


+ 0 - 0
tower_sanguo/assets/resources/module/fight/texture/monster_blood_1.png.meta → tower_sanguo/assets/resources/module/fight/prefab_texture/monster_blood_1.png.meta


+ 0 - 0
tower_sanguo/assets/resources/module/fight/texture/monster_blood_2.png → tower_sanguo/assets/resources/module/fight/prefab_texture/monster_blood_2.png


+ 0 - 0
tower_sanguo/assets/resources/module/fight/texture/monster_blood_2.png.meta → tower_sanguo/assets/resources/module/fight/prefab_texture/monster_blood_2.png.meta


+ 0 - 0
tower_sanguo/assets/resources/module/fight/texture/monster_blood_3.png → tower_sanguo/assets/resources/module/fight/prefab_texture/monster_blood_3.png


+ 0 - 0
tower_sanguo/assets/resources/module/fight/texture/monster_blood_3.png.meta → tower_sanguo/assets/resources/module/fight/prefab_texture/monster_blood_3.png.meta


+ 1 - 1
tower_sanguo/assets/resources/module/loading/loading.prefab

@@ -130,7 +130,7 @@
       "array": [
         0,
         0,
-        527.4094709047232,
+        536.9357503463519,
         0,
         0,
         0,

+ 7 - 0
tower_sanguo/assets/resources/module/loading/prefab_texture.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "1.0.1",
+  "uuid": "a0b98050-e8e3-4813-8245-051e0b1929f6",
+  "isSubpackage": false,
+  "subpackageName": "",
+  "subMetas": {}
+}

+ 0 - 0
tower_sanguo/assets/resources/module/loading/bg.png → tower_sanguo/assets/resources/module/loading/prefab_texture/bg.png


+ 0 - 0
tower_sanguo/assets/resources/module/loading/bg.png.meta → tower_sanguo/assets/resources/module/loading/prefab_texture/bg.png.meta


+ 0 - 0
tower_sanguo/assets/resources/module/loading/load_bar_bg.png → tower_sanguo/assets/resources/module/loading/prefab_texture/load_bar_bg.png


+ 0 - 0
tower_sanguo/assets/resources/module/loading/load_bar_bg.png.meta → tower_sanguo/assets/resources/module/loading/prefab_texture/load_bar_bg.png.meta


+ 0 - 0
tower_sanguo/assets/resources/module/loading/load_bar_front.png → tower_sanguo/assets/resources/module/loading/prefab_texture/load_bar_front.png


+ 0 - 0
tower_sanguo/assets/resources/module/loading/load_bar_front.png.meta → tower_sanguo/assets/resources/module/loading/prefab_texture/load_bar_front.png.meta


+ 0 - 0
tower_sanguo/assets/resources/module/loading/load_icon.png → tower_sanguo/assets/resources/module/loading/prefab_texture/load_icon.png


+ 0 - 0
tower_sanguo/assets/resources/module/loading/load_icon.png.meta → tower_sanguo/assets/resources/module/loading/prefab_texture/load_icon.png.meta


+ 0 - 0
tower_sanguo/assets/resources/module/loading/load_txt_gxts.png → tower_sanguo/assets/resources/module/loading/prefab_texture/load_txt_gxts.png


+ 0 - 0
tower_sanguo/assets/resources/module/loading/load_txt_gxts.png.meta → tower_sanguo/assets/resources/module/loading/prefab_texture/load_txt_gxts.png.meta


+ 7 - 0
tower_sanguo/assets/resources/module/main/prefab_texture.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "1.0.1",
+  "uuid": "ae54f012-e24a-4a63-9b31-a1eeb2976eea",
+  "isSubpackage": false,
+  "subpackageName": "",
+  "subMetas": {}
+}

+ 1 - 1
tower_sanguo/assets/resources/module/fight/spine/person.meta → tower_sanguo/assets/resources/spine/person.meta

@@ -1,6 +1,6 @@
 {
   "ver": "1.0.1",
-  "uuid": "6876f995-2d48-4b33-9c88-2977befe5ad7",
+  "uuid": "e2e0203c-8e64-4b64-9cb3-1826271f8bde",
   "isSubpackage": false,
   "subpackageName": "",
   "subMetas": {}

+ 0 - 0
tower_sanguo/assets/resources/module/fight/spine/person/bing_1.atlas → tower_sanguo/assets/resources/spine/person/bing_1.atlas


+ 0 - 0
tower_sanguo/assets/resources/module/fight/spine/person/bing_1.atlas.meta → tower_sanguo/assets/resources/spine/person/bing_1.atlas.meta


+ 0 - 0
tower_sanguo/assets/resources/module/fight/spine/person/bing_1.json → tower_sanguo/assets/resources/spine/person/bing_1.json


+ 0 - 0
tower_sanguo/assets/resources/module/fight/spine/person/bing_1.json.meta → tower_sanguo/assets/resources/spine/person/bing_1.json.meta


+ 0 - 0
tower_sanguo/assets/resources/module/fight/spine/person/bing_1.png → tower_sanguo/assets/resources/spine/person/bing_1.png


+ 0 - 0
tower_sanguo/assets/resources/module/fight/spine/person/bing_1.png.meta → tower_sanguo/assets/resources/spine/person/bing_1.png.meta


+ 0 - 0
tower_sanguo/assets/resources/module/fight/spine/person/guanyu.atlas → tower_sanguo/assets/resources/spine/person/guanyu.atlas


+ 0 - 0
tower_sanguo/assets/resources/module/fight/spine/person/guanyu.atlas.meta → tower_sanguo/assets/resources/spine/person/guanyu.atlas.meta


+ 0 - 0
tower_sanguo/assets/resources/module/fight/spine/person/guanyu.json → tower_sanguo/assets/resources/spine/person/guanyu.json


+ 0 - 0
tower_sanguo/assets/resources/module/fight/spine/person/guanyu.json.meta → tower_sanguo/assets/resources/spine/person/guanyu.json.meta


+ 0 - 0
tower_sanguo/assets/resources/module/fight/spine/person/guanyu.png → tower_sanguo/assets/resources/spine/person/guanyu.png


+ 0 - 0
tower_sanguo/assets/resources/module/fight/spine/person/guanyu.png.meta → tower_sanguo/assets/resources/spine/person/guanyu.png.meta


+ 7 - 15
tower_sanguo/assets/scripts/GameController.ts

@@ -57,7 +57,7 @@ class GameController {
         let self = this;
         this.uiM.openUI(LoadingUI, (ui) => {
             self.loadui = ui;
-            self.startLoad(LoadTactics.DIR);
+            self.startLoad(LoadTactics.FAST);
         });
     }
 
@@ -81,15 +81,12 @@ class GameController {
         this.resM.loadDir(dirname, this.loadProgressUpdate.bind(this), this.loadResComplete.bind(this));
     }
 
-    private dir_arr = ['module/main', 'module/fight', 'music', 'data'];
     /** 只加载需要的资源 */
     private loadFast() {
-        if (this.dir_arr.length > 0) {
-            this.resM.loadDir(this.dir_arr.shift(), this.loadProgressUpdate.bind(this), this.loadFast.bind(this));
-        }
-        else {
-            this.loadResComplete();
-        }
+        cc.loader.loadRes('data/resList',cc.JsonAsset,this.loadListJsonCom.bind(this));
+    }
+    private loadListJsonCom(err,data) {
+        this.resM.loadArray(data.json, this.loadProgressUpdate.bind(this), this.loadResComplete.bind(this));
     }
 
     /**
@@ -97,10 +94,7 @@ class GameController {
      * @param current 
      * @param total 
      */
-    private loadProgressUpdate(current, total, data) {
-        if (data.url.indexOf('.bin') != -1) {
-            this.gameData.initZip(data.content.buffer);
-        }
+    private loadProgressUpdate(current, total) {
         if (total > 0) {
             this.loadui.setProgress(Math.floor(current * 100 / total) / 100);
         }
@@ -115,9 +109,7 @@ class GameController {
     private async loadResComplete() {
         this.setLoadingTips('正在解压配置...');
         this.pool.initPoolsByClassName(this.gameData.pools);
-        if(cc.debug){
-            await this.gameData.initLocalConfigs();//测试用,正式发版使用zip包
-        }
+        await this.gameData.initLocalConfigs();//测试用,正式发版使用zip包
         this.sdkM.init();
         this.commonData.init();
     }

+ 18 - 13
tower_sanguo/assets/scripts/data/GameData.ts

@@ -32,18 +32,18 @@ export default class GameData {
 
 
     async initLocalConfigs() {
-        this.skill_data = await GameController.resM.loadRemoteJson('https://xcx-box.oss-cn-hangzhou.aliyuncs.com/hotgame/h5game/tower_sanguo/data/skill_data.json?v=' + new Date().getTime());
-        this.general_data = await GameController.resM.loadRemoteJson('https://xcx-box.oss-cn-hangzhou.aliyuncs.com/hotgame/h5game/tower_sanguo/data/general_data.json?v=' + new Date().getTime());
-        this.monster_data = await GameController.resM.loadRemoteJson('https://xcx-box.oss-cn-hangzhou.aliyuncs.com/hotgame/h5game/tower_sanguo/data/monster_data.json?v=' + new Date().getTime());
-        this.mission_data = await GameController.resM.loadRemoteJson('https://xcx-box.oss-cn-hangzhou.aliyuncs.com/hotgame/h5game/tower_sanguo/data/mission_data.json?v=' + new Date().getTime());
+        if (!cc.debug) {
+            this.skill_data = await GameController.resM.loadRemoteJson('https://xcx-box.oss-cn-hangzhou.aliyuncs.com/hotgame/h5game/tower_sanguo/data/skill_data.json?v=' + new Date().getTime());
+            this.general_data = await GameController.resM.loadRemoteJson('https://xcx-box.oss-cn-hangzhou.aliyuncs.com/hotgame/h5game/tower_sanguo/data/general_data.json?v=' + new Date().getTime());
+            this.monster_data = await GameController.resM.loadRemoteJson('https://xcx-box.oss-cn-hangzhou.aliyuncs.com/hotgame/h5game/tower_sanguo/data/monster_data.json?v=' + new Date().getTime());
+            this.mission_data = await GameController.resM.loadRemoteJson('https://xcx-box.oss-cn-hangzhou.aliyuncs.com/hotgame/h5game/tower_sanguo/data/mission_data.json?v=' + new Date().getTime());
 
-
-        this.skill_data = cc.loader.getRes('data/skill_data').json;
-        this.general_data = cc.loader.getRes('data/general_data').json;
-        this.monster_data = cc.loader.getRes('data/monster_data').json;
-        this.mission_data = cc.loader.getRes('data/mission_data').json;
-
-        this.initJsonData();
+            this.initJsonData();
+        }
+        else {
+            let data = cc.loader.getRes('data/1.bin', cc.BufferAsset);
+            this.initZip(data._buffer);
+        }
     }
 
     initZip(buffer) {
@@ -53,12 +53,13 @@ export default class GameData {
             let count = 0;
             for (let key in zip.files) {
                 total++;
+                //key因为打包时候是打的文件夹 所以为  data/xxx.json
                 zip.file(key).async("text").then((data) => {
-                    let dataname = key.slice(0, key.length - 5);
+                    let dataname = key.slice(5, key.length - 5);
                     self[dataname] = JSON.parse(data);
                     count++;
                     if (count == total) {
-                        // this.initJsonData();
+                        this.initJsonData();
                     }
                 })
             }
@@ -163,6 +164,10 @@ export default class GameData {
         return this.mission_data['max'];
     }
 
+    getMonsterByID(id){
+        return this.monster_data[id];
+    }
+
     createMonsterVOByID(id): MonsterVO {
         let o = this.monster_data[id];
         let vo = new MonsterVO();

+ 15 - 1
tower_sanguo/assets/scripts/module/fight/FightUI.ts

@@ -7,6 +7,7 @@ import FightData, { GENERAL_ACTION } from "./FightData";
 import AttackModel from "./model/attack/AttackModel";
 import GeneralVO from "../../vo/GeneralVO";
 import MissionVO, { RoundVO } from "../../vo/MissionVO";
+import MonsterVO from "../../vo/MonsterVO";
 
 const { ccclass } = cc._decorator;
 
@@ -168,14 +169,27 @@ export default class FightUI extends BaseUI {
         this.round = 0;
         this.roundover = false;
         this.monster_left = 0;
+        //当前关卡需要加载的怪物资源
+        let res = [];
         for (let i = 0; i < this.missionVO.rounds.length; i++) {
             let r = this.missionVO.rounds[i];
             this.monster_left += r.monster_num;
+            let m = GameController.gameData.getMonsterByID(r.monster_Id);
+            let src = "spine/person/" + m.resource;
+            if (res.indexOf(src) == -1) {
+                res.push(src);
+            }
         }
-        this.updateRound();
 
         //更新主界面的关卡组件
         GameController.mainui.updateMission();
+
+        this.loadMonsterRes(res);
+    }
+
+    /** 关卡前加载相关怪物资源 */
+    private loadMonsterRes(reslist) {
+        cc.loader.loadResArray(reslist, sp.SkeletonData, this.updateRound.bind(this));
     }
 
     private endMission(isLose) {

+ 1 - 1
tower_sanguo/assets/scripts/module/fight/model/attack/AttackModel.ts

@@ -34,7 +34,7 @@ export default class AttackModel extends cc.Component implements IPool {
     }
 
     init(src: General, target: Monster) {
-        // this.img_attackType.spriteFrame = cc.loader.getRes("module/fight/texture/attack_daoguang", cc.SpriteFrame);
+        this.img_attackType.spriteFrame = cc.loader.getRes("module/fight/texture/attack_daoguang",cc.SpriteFrame);
         this.src = src;
         this.target = target;
         let v = GameUtil.localConvertWorldPointARCenter(this.src.skillNode);

+ 1 - 1
tower_sanguo/assets/scripts/module/fight/model/monsters/Monster.ts

@@ -65,7 +65,7 @@ export default class Monster extends cc.Component implements IPool {
 
         this.bing_die.setCompleteListener(this.realDead.bind(this));
 
-        this.skeleton.skeletonData = cc.loader.getRes("module/fight/spine/person/" + v.resource, sp.SkeletonData);
+        this.skeleton.skeletonData = cc.loader.getRes("spine/person/" + v.resource, sp.SkeletonData);
 
         this.bar_monster.init(v.hp, v.maxhp);
         this.skeleton.node.scaleX = -1;