Explorar o código

GameFrameWork1.0

0224995 hai 2 semanas
achega
aebc076f41
Modificáronse 71 ficheiros con 3651 adicións e 0 borrados
  1. 2 0
      .creator/asset-template/typescript/Custom Script Template Help Documentation.url
  2. 5 0
      .creator/default-meta.json
  3. 24 0
      .gitignore
  4. 9 0
      assets/Animation.meta
  5. 9 0
      assets/Prefab.meta
  6. 9 0
      assets/Res.meta
  7. 9 0
      assets/Scene.meta
  8. 887 0
      assets/Scene/StartScene.scene
  9. 11 0
      assets/Scene/StartScene.scene.meta
  10. 9 0
      assets/Script.meta
  11. 9 0
      assets/Script/DataItem.meta
  12. 26 0
      assets/Script/DataItem/ItemData.ts
  13. 9 0
      assets/Script/DataItem/ItemData.ts.meta
  14. 9 0
      assets/Script/Frames.meta
  15. 122 0
      assets/Script/Frames/DataManager.ts
  16. 9 0
      assets/Script/Frames/DataManager.ts.meta
  17. 84 0
      assets/Script/Frames/MessageMgr.ts
  18. 9 0
      assets/Script/Frames/MessageMgr.ts.meta
  19. 83 0
      assets/Script/Frames/ResourcesMgr.ts
  20. 9 0
      assets/Script/Frames/ResourcesMgr.ts.meta
  21. 156 0
      assets/Script/Frames/UIManager.ts
  22. 9 0
      assets/Script/Frames/UIManager.ts.meta
  23. 9 0
      assets/Script/Game.meta
  24. 9 0
      assets/Script/Game/GameFrameWork.meta
  25. 52 0
      assets/Script/Game/GameFrameWork/GameMgr.ts
  26. 9 0
      assets/Script/Game/GameFrameWork/GameMgr.ts.meta
  27. 32 0
      assets/Script/Game/GameFrameWork/ModulerBase.ts
  28. 9 0
      assets/Script/Game/GameFrameWork/ModulerBase.ts.meta
  29. 16 0
      assets/Script/Game/GameFrameWork/TouchMgr.ts
  30. 9 0
      assets/Script/Game/GameFrameWork/TouchMgr.ts.meta
  31. 96 0
      assets/Script/Game/GameFrameWork/UIBase.ts
  32. 9 0
      assets/Script/Game/GameFrameWork/UIBase.ts.meta
  33. 17 0
      assets/Script/Game/GameResMgr.ts
  34. 9 0
      assets/Script/Game/GameResMgr.ts.meta
  35. 9 0
      assets/Script/Game/MyApp.meta
  36. 20 0
      assets/Script/Game/MyApp.ts
  37. 9 0
      assets/Script/Game/MyApp.ts.meta
  38. 14 0
      assets/Script/Game/MyApp/StartScene.ts
  39. 9 0
      assets/Script/Game/MyApp/StartScene.ts.meta
  40. 9 0
      assets/Script/Game/Tools.meta
  41. 35 0
      assets/Script/Game/Tools/Tools.ts
  42. 9 0
      assets/Script/Game/Tools/Tools.ts.meta
  43. 9 0
      assets/Script/Game/UI.meta
  44. 14 0
      assets/Script/Game/UI/Start.ts
  45. 9 0
      assets/Script/Game/UI/Start.ts.meta
  46. 13 0
      assets/Script/GameInfo.ts
  47. 9 0
      assets/Script/GameInfo.ts.meta
  48. 14 0
      assets/resources.meta
  49. 9 0
      assets/resources/Data.meta
  50. 10 0
      assets/resources/Data/GameResPath.csv
  51. 11 0
      assets/resources/Data/GameResPath.csv.meta
  52. 29 0
      assets/resources/Data/LevelDt.csv
  53. 11 0
      assets/resources/Data/LevelDt.csv.meta
  54. 15 0
      assets/resources/Data/TowerDt.csv
  55. 11 0
      assets/resources/Data/TowerDt.csv.meta
  56. 9 0
      assets/resources/Res.meta
  57. 9 0
      assets/resources/Res/Prefab.meta
  58. 9 0
      assets/resources/UI.meta
  59. 939 0
      assets/resources/UI/Start.prefab
  60. 13 0
      assets/resources/UI/Start.prefab.meta
  61. 372 0
      assets/resources/UI/UIRoot.prefab
  62. 13 0
      assets/resources/UI/UIRoot.prefab.meta
  63. 7 0
      package.json
  64. 3 0
      settings/v2/packages/builder.json
  65. 23 0
      settings/v2/packages/cocos-service.json
  66. 3 0
      settings/v2/packages/device.json
  67. 150 0
      settings/v2/packages/engine.json
  68. 23 0
      settings/v2/packages/information.json
  69. 3 0
      settings/v2/packages/program.json
  70. 4 0
      settings/v2/packages/project.json
  71. 9 0
      tsconfig.json

+ 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

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

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

+ 24 - 0
.gitignore

@@ -0,0 +1,24 @@
+
+#///////////////////////////
+# Cocos Creator 3D Project
+#///////////////////////////
+library/
+temp/
+local/
+build/
+profiles/
+native
+#//////////////////////////
+# NPM
+#//////////////////////////
+node_modules/
+
+#//////////////////////////
+# VSCode
+#//////////////////////////
+.vscode/
+
+#//////////////////////////
+# WebStorm
+#//////////////////////////
+.idea/

+ 9 - 0
assets/Animation.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "2cab2683-1e7d-433a-bd63-0b38027b5dff",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/Prefab.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "a9590963-d7c7-44f9-a6fe-1a5111e47f65",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/Res.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "2f00c1af-198c-4e75-b53b-c320f11009b4",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/Scene.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "e9e17630-3958-4a45-956e-1413bf95cdaf",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 887 - 0
assets/Scene/StartScene.scene

@@ -0,0 +1,887 @@
+[
+  {
+    "__type__": "cc.SceneAsset",
+    "_name": "StartScene",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_native": "",
+    "scene": {
+      "__id__": 1
+    }
+  },
+  {
+    "__type__": "cc.Scene",
+    "_name": "StartScene",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": null,
+    "_children": [
+      {
+        "__id__": 2
+      }
+    ],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 21
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 1073741824,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "autoReleaseAssets": false,
+    "_globals": {
+      "__id__": 22
+    },
+    "_id": "099ece80-6a52-4fc1-8f49-dcd0345183d0"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Canvas",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 3
+      },
+      {
+        "__id__": 5
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 17
+      },
+      {
+        "__id__": 18
+      },
+      {
+        "__id__": 19
+      },
+      {
+        "__id__": 20
+      }
+    ],
+    "_prefab": null,
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 640,
+      "y": 360.00000000000006,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": "beI88Z2HpFELqR4T5EMHpg"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Camera",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": {
+      "__id__": 2
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 4
+      }
+    ],
+    "_prefab": null,
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 1000
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 1073741824,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": "ebFwiq8gBFaYpqYbdoDODe"
+  },
+  {
+    "__type__": "cc.Camera",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 3
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_projection": 0,
+    "_priority": 0,
+    "_fov": 45,
+    "_fovAxis": 0,
+    "_orthoHeight": 381.93548387096774,
+    "_near": 0,
+    "_far": 1000,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 0,
+      "g": 0,
+      "b": 0,
+      "a": 255
+    },
+    "_depth": 1,
+    "_stencil": 0,
+    "_clearFlags": 7,
+    "_rect": {
+      "__type__": "cc.Rect",
+      "x": 0,
+      "y": 0,
+      "width": 1,
+      "height": 1
+    },
+    "_aperture": 19,
+    "_shutter": 7,
+    "_iso": 0,
+    "_screenScale": 1,
+    "_visibility": 1108344832,
+    "_targetTexture": null,
+    "_postProcess": null,
+    "_usePostProcess": false,
+    "_cameraType": -1,
+    "_trackingType": 0,
+    "_id": "63WIch3o5BEYRlXzTT0oWc"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "UIRoot",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": {
+      "__id__": 2
+    },
+    "_children": [
+      {
+        "__id__": 6
+      },
+      {
+        "__id__": 9
+      },
+      {
+        "__id__": 12
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 15
+      },
+      {
+        "__id__": 16
+      }
+    ],
+    "_prefab": null,
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": "7d6oNX3xVO0rXs1kWSThv7"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Page",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 7
+      },
+      {
+        "__id__": 8
+      }
+    ],
+    "_prefab": null,
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": "8dAabxAdtISbQZSXf3e/U4"
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 6
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 1280,
+      "height": 720
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": "dbhq6HWe1KzZ+rO1G224V2"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 6
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_alignFlags": 45,
+    "_target": null,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 100,
+    "_originalHeight": 100,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": "67KDXdMFxCb50JUjMuwktU"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Widget",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 10
+      },
+      {
+        "__id__": 11
+      }
+    ],
+    "_prefab": null,
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": "a4U78aFLJEYp5fiRjYGLHY"
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 9
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 1280,
+      "height": 720
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": "40NR6Rli1E0KBvKXf52fSF"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 9
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_alignFlags": 45,
+    "_target": null,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 100,
+    "_originalHeight": 100,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": "91DsLENFJNwK19mae6qN0j"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "PopWin",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 13
+      },
+      {
+        "__id__": 14
+      }
+    ],
+    "_prefab": null,
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": "181d2UWcNMIYlJkAJG8ZeL"
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 12
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 1280,
+      "height": 720
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": "ccGiow+ChNa7YMuumXgNzY"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 12
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_alignFlags": 45,
+    "_target": null,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 100,
+    "_originalHeight": 100,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": "4bLPp6sxNNyLtdE5fcWt+d"
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 5
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 1280,
+      "height": 720
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": "d5ilyx1hFKIL+knOleWonu"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 5
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_alignFlags": 45,
+    "_target": null,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 100,
+    "_originalHeight": 100,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": "d47nc2dq1KcqImyMR2FvbP"
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 1280,
+      "height": 720
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": "d6rUX5yfhMlKoWX2bSbawx"
+  },
+  {
+    "__type__": "cc.Canvas",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_cameraComponent": {
+      "__id__": 4
+    },
+    "_alignCanvasWithScreen": true,
+    "_id": "12O/ljcVlEqLmVm3U2gEOQ"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_alignFlags": 45,
+    "_target": null,
+    "_left": 0,
+    "_right": 0,
+    "_top": 5.684341886080802e-14,
+    "_bottom": 5.684341886080802e-14,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": "c5V1EV8IpMtrIvY1OE9t2u"
+  },
+  {
+    "__type__": "010ac7u73pHUqXGhX3uxjfh",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "__prefab": null,
+    "_id": "c5iZQmWqNGKKJl4bHf/bIu"
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": null,
+    "asset": null,
+    "fileId": "099ece80-6a52-4fc1-8f49-dcd0345183d0",
+    "instance": null,
+    "targetOverrides": null
+  },
+  {
+    "__type__": "cc.SceneGlobals",
+    "ambient": {
+      "__id__": 23
+    },
+    "shadows": {
+      "__id__": 24
+    },
+    "_skybox": {
+      "__id__": 25
+    },
+    "fog": {
+      "__id__": 26
+    },
+    "octree": {
+      "__id__": 27
+    },
+    "skin": {
+      "__id__": 28
+    },
+    "lightProbeInfo": {
+      "__id__": 29
+    },
+    "postSettings": {
+      "__id__": 30
+    },
+    "bakedWithStationaryMainLight": false,
+    "bakedWithHighpLightmap": false
+  },
+  {
+    "__type__": "cc.AmbientInfo",
+    "_skyColorHDR": {
+      "__type__": "cc.Vec4",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 0.520833125
+    },
+    "_skyColor": {
+      "__type__": "cc.Vec4",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 0.520833125
+    },
+    "_skyIllumHDR": 20000,
+    "_skyIllum": 20000,
+    "_groundAlbedoHDR": {
+      "__type__": "cc.Vec4",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 0
+    },
+    "_groundAlbedo": {
+      "__type__": "cc.Vec4",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 0
+    },
+    "_skyColorLDR": {
+      "__type__": "cc.Vec4",
+      "x": 0.2,
+      "y": 0.5,
+      "z": 0.8,
+      "w": 1
+    },
+    "_skyIllumLDR": 20000,
+    "_groundAlbedoLDR": {
+      "__type__": "cc.Vec4",
+      "x": 0.2,
+      "y": 0.2,
+      "z": 0.2,
+      "w": 1
+    }
+  },
+  {
+    "__type__": "cc.ShadowsInfo",
+    "_enabled": false,
+    "_type": 0,
+    "_normal": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 1,
+      "z": 0
+    },
+    "_distance": 0,
+    "_planeBias": 1,
+    "_shadowColor": {
+      "__type__": "cc.Color",
+      "r": 76,
+      "g": 76,
+      "b": 76,
+      "a": 255
+    },
+    "_maxReceived": 4,
+    "_size": {
+      "__type__": "cc.Vec2",
+      "x": 512,
+      "y": 512
+    }
+  },
+  {
+    "__type__": "cc.SkyboxInfo",
+    "_envLightingType": 0,
+    "_envmapHDR": null,
+    "_envmap": null,
+    "_envmapLDR": null,
+    "_diffuseMapHDR": null,
+    "_diffuseMapLDR": null,
+    "_enabled": false,
+    "_useHDR": true,
+    "_editableMaterial": null,
+    "_reflectionHDR": null,
+    "_reflectionLDR": null,
+    "_rotationAngle": 0
+  },
+  {
+    "__type__": "cc.FogInfo",
+    "_type": 0,
+    "_fogColor": {
+      "__type__": "cc.Color",
+      "r": 200,
+      "g": 200,
+      "b": 200,
+      "a": 255
+    },
+    "_enabled": false,
+    "_fogDensity": 0.3,
+    "_fogStart": 0.5,
+    "_fogEnd": 300,
+    "_fogAtten": 5,
+    "_fogTop": 1.5,
+    "_fogRange": 1.2,
+    "_accurate": false
+  },
+  {
+    "__type__": "cc.OctreeInfo",
+    "_enabled": false,
+    "_minPos": {
+      "__type__": "cc.Vec3",
+      "x": -1024,
+      "y": -1024,
+      "z": -1024
+    },
+    "_maxPos": {
+      "__type__": "cc.Vec3",
+      "x": 1024,
+      "y": 1024,
+      "z": 1024
+    },
+    "_depth": 8
+  },
+  {
+    "__type__": "cc.SkinInfo",
+    "_enabled": false,
+    "_blurRadius": 0.01,
+    "_sssIntensity": 3
+  },
+  {
+    "__type__": "cc.LightProbeInfo",
+    "_giScale": 1,
+    "_giSamples": 1024,
+    "_bounces": 2,
+    "_reduceRinging": 0,
+    "_showProbe": true,
+    "_showWireframe": true,
+    "_showConvex": false,
+    "_data": null,
+    "_lightProbeSphereVolume": 1
+  },
+  {
+    "__type__": "cc.PostSettingsInfo",
+    "_toneMappingType": 0
+  }
+]

+ 11 - 0
assets/Scene/StartScene.scene.meta

@@ -0,0 +1,11 @@
+{
+  "ver": "1.1.50",
+  "importer": "scene",
+  "imported": true,
+  "uuid": "099ece80-6a52-4fc1-8f49-dcd0345183d0",
+  "files": [
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/Script.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "00217431-737d-4084-93c6-4704092efd0b",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/Script/DataItem.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "9dfeca28-dfa6-4853-b6b6-0642667efaf1",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 26 - 0
assets/Script/DataItem/ItemData.ts

@@ -0,0 +1,26 @@
+import { DataBase } from "../Frames/DataManager";
+
+//通过接口的属性 去 访问实际表格当中的属性
+export interface GameResData extends DataBase{
+    resName: string,
+    path: string,
+    replace: string[],
+    atlas: boolean
+}
+export interface TowerData extends DataBase{
+    chassis: string[],
+    fireAniImg: string,
+    fireAniCount: number,
+    bulletAniImg: string,
+    bulletAniCount: number,
+    cardImg: string[],
+    atkRadiums: number[],
+    rotate: boolean,
+    fireType: string
+}
+
+export interface LevelData extends DataBase{
+    towerid: number[],
+    totalwave: number,
+}
+

+ 9 - 0
assets/Script/DataItem/ItemData.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "6ffcf050-ff9a-4e94-a536-c9156cca53d0",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/Script/Frames.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "1818b6c8-e053-4113-894a-a0ea9b325bdb",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 122 - 0
assets/Script/Frames/DataManager.ts

@@ -0,0 +1,122 @@
+import { JsonAsset, resources, TextAsset } from "cc";
+
+export interface DataBase{
+    id: number;
+}
+
+//一个文件 对应一个数据操作者
+class DataCtrl{
+    private _datas: Map<number, DataBase> = new Map();
+    constructor(asset: JsonAsset | TextAsset){
+        if(asset instanceof JsonAsset){
+            const datas: DataBase[] = <DataBase[]>asset.json;
+            for(const data of datas){
+                this._datas.set(Number(data.id), data);
+            }
+            return;
+        }
+        //表格数据
+        if(asset instanceof TextAsset){
+            this._parseCSV(asset.text);
+        }
+    }
+    private _parseCSV(text: string){
+        const lines: string[] = text.split("\r\n");
+        //表格中 单元格以逗号,分开
+        const keys: string[] = lines[0].split(",");
+        const types: string[] = lines[1].split(",");
+        //有用的数据
+        for(let i = 2; i < lines.length - 1; i++){
+            const cols: string[] = lines[i].split(",");
+            //每一行就是一个数据 创建一个空对象 存储数据
+            let obj = {};
+            for(let j = 1; j <cols.length; j++){
+                //获取当前字符串值 根据类型定数据
+                let val = cols[j];
+                let v;
+                switch(types[j]){
+                    case "boolean":
+                        v = Boolean(Number(val));
+                        break;
+                    case "string":
+                        v = val;
+                        break;
+                    case "number":
+                        v = Number(val);
+                        break;
+                    case "string[]":
+                        v = val.split(";");
+                        break;
+                    case "number[]":
+                        v = val.split(";");
+                        let arr:number[] = [];
+                        for(const info of v){
+                            arr.push(Number(info));
+                        }
+                        v = arr;
+                        break;
+                    default:
+                        break;
+                }
+                obj[keys[j]] = v;
+            }
+            const data: DataBase = <DataBase>obj;
+            this._datas.set(Number(data.id), data);
+        }
+    }
+
+    //通过id获取某个数据
+    getData<T extends DataBase>(id: number):T{
+        return <T>this._datas.get(id);
+    }
+
+    //获取当前文件解析的所有数据
+    getAllData<T extends DataBase>(): T[]{
+        return <T[]>Array.from(this._datas.values());
+    }
+}
+
+//管理所有数据操作者
+class DataManager{
+    private _dataCtrls: Map<string, DataCtrl> = new Map();
+    static instance: DataManager = null;
+
+    async loadDataDir(dir: string){
+        const assets: TextAsset[] | JsonAsset[] = await new Promise((values, reject)=>{
+            resources.loadDir(dir,(err: Error, assets: TextAsset[] | JsonAsset[])=>{
+                if(err){
+                    reject(err);
+                }
+                else{
+                    values(assets);
+                }
+            })
+        })
+
+        for(const asset of assets){
+            this._dataCtrls.set(asset.name, new DataCtrl(asset));
+        }
+    }
+
+    getData<T extends DataBase>(id: number, ctrlName?: string):T{
+        //通过文件名 获取 数据操作者
+        if(ctrlName){
+            return this._dataCtrls.get(ctrlName).getData<T>(id);
+        }
+        //遍历所有的数据操作者 看看谁有id 为 id 的数据
+        for(const ctrl of Array.from(this._dataCtrls.values())){
+            const data = ctrl.getData<T>(id);
+            if(data){return data;}
+        }
+        //都没有
+        return null;
+    }
+
+    getAllDataByName<T extends DataBase>(name: string):T[]{
+        //获取文件名为 name 的数据操作者的所有数据
+        return this._dataCtrls.get(name).getAllData<T>();
+    }
+}
+
+export const dataMgr: DataManager = DataManager.instance = new DataManager();
+

+ 9 - 0
assets/Script/Frames/DataManager.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "c4df3d32-8d4f-4ff5-a784-759683731d52",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 84 - 0
assets/Script/Frames/MessageMgr.ts

@@ -0,0 +1,84 @@
+class Listener{
+    //关注的消息
+    private _event: string = '';
+    //消息对应的事件
+    private _callback: Function = null;
+    //回调函数的this指向
+    private _callTarget: any = null;
+
+    constructor(ev: string, callback: Function, target: any = null){
+        this._event = ev;
+        this._callback = callback;
+        this._callTarget = target;
+    }
+
+    hasCallBack(func: Function){
+        return this._callback === func;
+    }
+
+    callback(...args){
+        this._callback.apply(this._callTarget,[...args]);
+    }
+}
+
+class MessageMgr{
+
+    static instance: MessageMgr = null;
+
+    //考虑多个观察者 关注同一个消息的情况
+    private _listeners: Map<string, Listener[]> = new Map();
+
+    //注册消息
+    addEvent(ev: string, callback: Function, target: any = null){
+        const lis: Listener = new Listener(ev, callback, target);
+        if(this._listeners.has(ev)){
+            //如果消息已经被某个观察者关注了 那么找到那个数组 把新的观察者也存进去
+            this._listeners.get(ev).push(lis);
+            return;
+        }
+
+        //把消息和观察者对应存储
+        //先创建一个Listener类型的数组
+        const liss: Listener[] = [];
+        //把第一个对应ev的观察者存储起来
+        liss.push(lis);
+        //把消息和存listener的数组 存到map 中
+        this._listeners.set(ev, liss);
+    }
+
+    //激活消息
+    dispatch(event: string, ...args){
+        this._listeners.forEach((liss: Listener[], ev: string)=>{
+            //遍历整个map 判断传递进来的消息 是否和某个键值对的键 相同
+            if(event === ev){
+                for(const lis of liss){
+                    lis.callback(...args);
+                }
+            }
+        })
+    }
+
+    //移除事件
+    removeEvent(event: string | Function){
+        if(typeof(event) === "string"){
+            this._listeners.delete(event);
+            return;
+        }
+        for(const liss of Array.from(this._listeners.values())){
+            for(let i = 0; i < liss.length; i++){
+                if(liss[i].hasCallBack(event)){
+                    liss.splice(i , 1);
+                    return;
+                }
+            }
+        }
+    }
+
+    //移除所有事件
+    removeAll(){
+        this._listeners.clear();
+    }
+
+}
+
+export const messageMgr: MessageMgr = MessageMgr.instance = new MessageMgr();

+ 9 - 0
assets/Script/Frames/MessageMgr.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "d9aa2c22-c0f9-40c6-a5b4-0c02180f1bac",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 83 - 0
assets/Script/Frames/ResourcesMgr.ts

@@ -0,0 +1,83 @@
+import { Asset, AssetManager, Prefab, resources, SpriteAtlas, SpriteFrame, TiledMapAsset } from "cc";
+
+class ResourcesMgr{
+
+    static instance: ResourcesMgr = null;
+
+    private _spriteFrames: Map<string,SpriteFrame> = new Map();
+    private _prefabs: Map<string, Prefab> = new Map();
+    private _tmxAsset: Map<string,TiledMapAsset> = new Map();
+    async loadAllRes(path: string, onProgress:(
+        (finish: number,total: number, item: AssetManager.RequestItem)=>void) = null){
+        //下载resources文件夹下的所有资源
+        //异步函数
+        const assets: Asset[] = await new Promise<Asset[]>((value, reject)=>{
+            resources.loadDir(path, onProgress, (err:Error,assets: Asset[])=>{
+                //完成回调 assets就是那些所有资源的数组
+                if(err){
+                    reject(err);
+                }
+                else{
+                    value(assets);
+                }
+                
+            })
+        })
+       //遍历所有资源 分门别类存储到对应的容器中
+       for(const asset of assets){
+          this.addRes(asset, asset.name);
+          //console.log(assets)
+       }
+    }
+
+    async load(path: string, name?: string, atlas: boolean = false){
+        const asset: Asset = await new Promise((value, reject)=>{
+            resources.load(path, (err: Error, asset: Asset)=>{
+                if(err){
+                    reject(err);
+                }
+                else{
+                    value(asset);
+                }
+            })
+        });
+        this.addRes(asset, name, atlas)
+    }
+
+    addRes(asset: Asset, name: string,  contactName: boolean = false){
+        if(asset instanceof SpriteFrame){
+            this._spriteFrames.set(String(name), asset);
+        }
+        else if(asset instanceof Prefab){
+            this._prefabs.set(String(name), asset);
+            //console.log(this._prefabs)
+        }
+        else if(asset instanceof TiledMapAsset){
+            this._tmxAsset.set((name), asset)
+            //console.log(this._tmxAsset)
+        }
+        else if(asset instanceof SpriteAtlas){
+            for(const frame of asset.getSpriteFrames()){
+                let n: string = frame.name;
+                if(contactName){
+                    n = name + n;    
+                }
+                this._spriteFrames.set(n, frame);
+            }
+        }
+    }
+
+    getSpriteFrame(name: string): SpriteFrame{
+        return this._spriteFrames.get(name);
+    }
+
+    getPrefab(name: string): Prefab{
+        return this._prefabs.get(name);
+    }
+    getTmxAsset(name: string): TiledMapAsset{
+        return this._tmxAsset.get(name);
+    }
+}
+
+export const resMgr: ResourcesMgr = ResourcesMgr.instance = new ResourcesMgr();
+

+ 9 - 0
assets/Script/Frames/ResourcesMgr.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "dbbec8a5-02f4-4f50-826d-498d6a848166",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 156 - 0
assets/Script/Frames/UIManager.ts

@@ -0,0 +1,156 @@
+import { Constructor, director, error, find, instantiate, Node, Prefab, resources, Scene } from "cc";
+import { UIBase, UIType } from "../Game/GameFrameWork/UIBase";
+
+class UIManager {
+    static instance: UIManager = null;
+    private _uis: Map<string, UIBase> = new Map();
+    private _uiNodes: Map<string, Node> = new Map();
+    private _prefabs: Map<string, Prefab> = new Map();
+    //获取UI
+    getUI<T extends UIBase>(name: string | Constructor<T>): T {
+        if (typeof (name) === "string") {
+            return <T>this._uis.get(name);
+        }
+        //遍历所有的value组成的数组
+        for (const ui of Array.from(this._uis.values())) {
+            if (ui instanceof name) {
+                return <T>ui;
+            }
+        }
+        return null;
+    }
+
+    //打开页面 全屏 弹窗 挂件
+    async openUI(preName: string, type: UIType = UIType.PAGE) {
+
+        let ui = this._uis.get(preName);
+        if (ui) {
+            //把ui显示出来
+            ui.show();
+            return;
+        }
+        //是否在节点容器当中
+        let node = this._uiNodes.get(preName);
+        if (node) {
+            node.active = true;
+            return;
+        }
+        //node 不存在的情况下 加载出来
+        //先判断一下预制体是否下载过
+        let prefab = this._prefabs.get(preName);
+        if (!prefab) {
+            prefab = await this._loadUI("UI/" + preName);
+            this._prefabs.set(preName, prefab)
+        }
+
+        //查找ui根节点
+        node = instantiate(prefab);
+        let root = find("Canvas/UIRoot");
+        if(!root){
+            //如果场景当中没有 就加载预制体 创建一个
+            const rootPre: Prefab = await this._loadUI("UI/UIRoot")
+            root = instantiate(rootPre);
+            root.parent = find("Canvas");
+        }
+        node.parent = root.children[type];
+
+        //处理逻辑
+        ui = node.getComponent(UIBase);
+        if (ui) {
+            //对ui进行多态处理
+            ui.init();
+            ui.UIName = preName;
+            this._uis.set(preName, ui);
+            return;
+        }
+        this._uiNodes.set(preName, node);
+        // resources.load("UI/" + preName, Prefab, (err: Error, asset: Prefab)=>{
+        //     const node = instantiate(asset);
+        //     node.parent = find("Canvas/UIRoot").children[type];
+        //     //处理逻辑
+        //     const ui = node.getComponent(UIBase);
+        //     //对UI进行多态处理
+
+        // })
+    }
+
+    async openScene(sceneName: string, uiName?: string){
+        await this._loadScene(sceneName);
+        uiName && this.openUI(uiName);
+    }
+
+    private _loadScene(sceneName: string){
+        new Promise((revolve, reject)=>{
+            director.loadScene(sceneName,(err: Error, scene: Scene)=>{
+                if(err){
+                    error("加载" + sceneName + "场景错误!");
+                    reject(err);
+                }
+                else{
+                    revolve(scene);
+                }
+            })
+        })
+    }
+
+    //加载UI预制体
+    private _loadUI(path: string): Promise<Prefab> {
+        return new Promise((revole, reject) => {
+            resources.load(path, Prefab, (err: Error, asset: Prefab) => {
+                if (err) {
+                    reject(err);
+                } else {
+                    revole(asset);
+                }
+            })
+        })
+    }
+
+    //关闭UI
+    closeUI(uibase: string | UIBase, clear: boolean = true){
+        let ui: UIBase;
+        if(typeof(uibase) === "string"){
+            ui = this._uis.get(uibase);
+            if(ui){
+                ui.hide(clear);
+                clear && this._uis.delete(uibase);
+            }
+            return;
+        }
+    
+        uibase.hide(clear);
+        clear && this._uis.delete(uibase.UIName);
+        return;
+        // for(const u of Array.from(this._uis.values())){
+        //     if(uiName === u){
+        //         u.hide(clear);
+        //         return;
+        //     }
+        // }
+    }
+
+    //UI之间的消息互通
+    sendMsg(msg: string,ui: string|UIBase, ...args){
+        let m: UIBase;
+        if(typeof(ui) === "string"){
+            m = this.getUI(ui);
+        }
+        else{
+            m = ui;
+        }
+        //判断如果找到的UI模块是个空 什么也不做
+        if(!m){
+            return;
+        }
+
+        //m 是个对象 找m中有没有 名字叫做msg的函数
+        //对象都是键值对 访问键对应的值
+        const func = m[msg];
+        if(func && typeof(func) === "function"){
+            func.apply(m, [...args]);
+            return;
+        }
+    }
+}
+
+export const UIMgr: UIManager = UIManager.instance = new UIManager();

+ 9 - 0
assets/Script/Frames/UIManager.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "705de6df-353c-4773-9d26-237ed06b573e",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/Script/Game.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "3be21e27-1eae-4067-a87c-3f7b1af7baa5",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/Script/Game/GameFrameWork.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "c1319497-eab6-4a85-96a9-0104b79ff87e",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 52 - 0
assets/Script/Game/GameFrameWork/GameMgr.ts

@@ -0,0 +1,52 @@
+import { _decorator, Component, Constructor } from 'cc';
+import { ModulerBase } from './ModulerBase';
+const { ccclass, property } = _decorator;
+
+@ccclass('GameMgr')
+export class GameMgr extends Component {
+    //单例
+    private static _instance: GameMgr = null;
+
+    private _modluers:ModulerBase[] = [];
+
+    
+    //单例接口
+    static get Instance(){return GameMgr._instance}
+
+    protected onLoad(): void {
+        //单例赋值 this
+        GameMgr._instance = this;
+        //获取子节点当中所有被管理的模块
+        this._modluers = this.getComponentsInChildren(ModulerBase);
+    }
+    //开始游戏
+    startGame(){
+        this._modluers.forEach((moduler:ModulerBase)=>{
+            moduler.init();  
+        })
+    }
+    //获取被管理的某个模块(派生类型)
+    //模板
+    getModuler<T extends ModulerBase>(type: Constructor<T>): T{
+        for(const moduler of this._modluers){
+            if(moduler instanceof type){
+                return moduler as T;
+            }
+        }
+        return null;
+    }
+    //移除某个管理模块
+    removeModuler<T extends ModulerBase>(type: Constructor<T>){
+        for(let i = 0; i < this._modluers.length; i++){
+            if(this._modluers[i] instanceof type){
+                this._modluers[i].removeSelf();
+                return;
+            }
+        }
+    }
+    start() {
+        this.startGame();
+    }
+}
+
+

+ 9 - 0
assets/Script/Game/GameFrameWork/GameMgr.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "8593526b-2a17-413b-9a7f-646e6e132ece",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 32 - 0
assets/Script/Game/GameFrameWork/ModulerBase.ts

@@ -0,0 +1,32 @@
+import { _decorator, Component, Constructor, Node } from 'cc';
+import { GameMgr } from './GameMgr';
+const { ccclass, property } = _decorator;
+
+@ccclass('ModulerBase')
+export class ModulerBase extends Component {
+    init(){
+
+    }
+    //刷新
+    refresh(){
+
+    }
+
+    //获取管理者中的其他模块
+    getModuler<T extends ModulerBase>(type: Constructor<T>): T{
+        return GameMgr.Instance.getModuler(type);
+    }
+
+    //销毁自己
+    removeSelf(){
+        this.node.destroy();
+        this.clearSelf();
+    }
+
+    protected clearSelf(){
+        
+    }
+
+}
+
+

+ 9 - 0
assets/Script/Game/GameFrameWork/ModulerBase.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "b67df2a3-2e5c-4d0b-8111-98fc9d0ce70b",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 16 - 0
assets/Script/Game/GameFrameWork/TouchMgr.ts

@@ -0,0 +1,16 @@
+import { _decorator, EventTouch, Node } from 'cc';
+import { ModulerBase } from './ModulerBase';
+const { ccclass, property } = _decorator;
+
+@ccclass('TouchMgr')
+export class TouchMgr extends ModulerBase {
+    init(): void{
+        
+        this.node.on(Node.EventType.TOUCH_START,(e:EventTouch)=>{
+
+            
+        })
+    }
+}
+
+

+ 9 - 0
assets/Script/Game/GameFrameWork/TouchMgr.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "8c2bdbc6-832a-47ed-a78a-b489aab2d12b",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 96 - 0
assets/Script/Game/GameFrameWork/UIBase.ts

@@ -0,0 +1,96 @@
+import { _decorator, Button, Component, Node, PageView } from 'cc';
+const { ccclass, property } = _decorator;
+
+export enum UIType{
+    PAGE,
+    WIDGET,
+    POPWIN,
+}
+
+@ccclass('UIBase')
+export class UIBase extends Component {
+    protected _nodes: Map<string, Node> = new Map();
+    protected _uiName: string = "ui";
+    get UIName(){ return this._uiName;}
+    set UIName(name: string){this._uiName = name;}
+    //如果使用ui都要进行相同的初始化
+    init(){
+        this._visit(this.node)
+        //多态
+        this.onStart();
+    }
+    //各个ui都有不同的初始化行为
+    protected onStart(){
+
+    }
+
+    private _visit(node: Node){
+        //如果这个节点的名字是 “ _ ” 开头的 就是需要操作的节点
+        if(node.name.startsWith("_")){
+            this._nodes.set(node.name, node);
+        }
+        for(const child of node.children){
+            this._visit(child);
+        }
+    }
+
+    show(){
+        this.node.active = true;
+        this.use();
+    }
+
+    showing(){
+        return this.node.active;
+    }
+
+    hide(clear: Boolean = true){
+        this.unUse();
+        if(clear){
+            this.node.destroy();
+            return;
+        }
+        this.node.active = false;
+    }
+    //多态
+    //用它的时候
+    protected use(){
+
+    }
+
+    //不用它的时候
+    protected unUse(){
+
+    }
+
+    //UI 事件
+    //按钮点击
+    onBtnClick(name: string, callback: Function, ...arg){
+        const node = this._nodes.get(name);
+        if(node){
+            node.on(Button.EventType.CLICK,()=>{
+                //apply指定函数的this指向 并且立即执行
+                //参数1 就是函数执行过程中的this指向
+                callback.apply(this, [...arg]);
+            })
+        }
+    }
+
+    //pageView的事件
+    onPageView(name: string, type, callback: Function){
+        this._nodes.get(name).on(type, callback);
+    }
+
+    getPageView(name: string): PageView{
+        return this._nodes.get(name).getComponent(PageView);
+    }
+
+    getNode(name: string): Node{
+        return this._nodes.get(name);
+    }
+
+    onMsg(msg: string, callback: Function){
+
+    }
+}
+
+

+ 9 - 0
assets/Script/Game/GameFrameWork/UIBase.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "5ff6286f-f40c-42ff-84f2-0489c2265294",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 17 - 0
assets/Script/Game/GameResMgr.ts

@@ -0,0 +1,17 @@
+import { SpriteFrame, TiledMapAsset } from "cc";
+import { GameResData } from "../DataItem/ItemData";
+import { dataMgr } from "../Frames/DataManager";
+import { GameInfo } from "../GameInfo";
+import { resMgr } from "../Frames/ResourcesMgr";
+
+class GameResMgr{
+    private _resData: GameResData[] = null;
+    static instance: GameResMgr = null;
+
+    async loadGameRes(){
+            //await resMgr.load();
+    }
+}
+
+export const gameResMgr: GameResMgr = GameResMgr.instance = new GameResMgr();
+

+ 9 - 0
assets/Script/Game/GameResMgr.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "b9d42472-1fa6-4f18-9c71-8f5f1e6e83e6",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/Script/Game/MyApp.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "d2004963-b8ff-4d2d-a717-714ad26d43c1",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 20 - 0
assets/Script/Game/MyApp.ts

@@ -0,0 +1,20 @@
+import { _decorator, Component, Node } from 'cc';
+import { UIMgr } from '../Frames/UIManager';
+const { ccclass, property } = _decorator;
+
+@ccclass('MyApp')
+export class MyApp extends Component {
+    protected onLoad(): void {
+        UIMgr.openUI("Start");
+    }
+
+    start() {
+
+    }
+
+    update(deltaTime: number) {
+        
+    }
+}
+
+

+ 9 - 0
assets/Script/Game/MyApp.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "010aceee-ef7a-4752-a5c6-857deec637e1",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 14 - 0
assets/Script/Game/MyApp/StartScene.ts

@@ -0,0 +1,14 @@
+import { _decorator, Component, Node } from 'cc';
+const { ccclass, property } = _decorator;
+
+@ccclass('StartScene')
+export class StartScene extends Component {
+    start() {
+
+    }
+
+    update(deltaTime: number) {
+        
+    }
+}
+


+ 9 - 0
assets/Script/Game/MyApp/StartScene.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "0ecb9e20-efa1-4bba-acdf-cee701f07e65",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/Script/Game/Tools.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "a5e86c5d-08df-4d5a-94d1-028e325023db",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 35 - 0
assets/Script/Game/Tools/Tools.ts

@@ -0,0 +1,35 @@
+import { Animation, AnimationClip, Node, Sprite, SpriteFrame, Vec3 } from "cc";
+
+export class Tools {
+    
+    static createNode(parent?: Node, pos?: Vec3):Node{
+        const node = new Node();
+        parent && node.setParent(parent);
+        pos && node.setPosition(pos);
+        return node;
+    }
+
+    static createSprite(frame: SpriteFrame, parent?: Node, pos?: Vec3): Node{
+        const node = this.createNode(parent, pos);
+        node.addComponent(Sprite).spriteFrame = frame;
+        return node;
+    }
+
+    static createAnimation(frames: SpriteFrame[], sample: number, obj: Node | Animation, mode: AnimationClip.WrapMode = AnimationClip.WrapMode.Normal){
+        let ani: Animation;
+        if(obj instanceof Animation){
+            ani = obj;
+        }else{
+            ani = obj.addComponent(Animation);
+        }
+
+        //添加动画剪辑
+        const clip = AnimationClip.createWithSpriteFrames(frames, sample);
+        clip.wrapMode = mode;
+        ani.addClip(clip);
+        ani.defaultClip = clip;
+        return ani;
+    }
+}
+
+

+ 9 - 0
assets/Script/Game/Tools/Tools.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "3568e615-edae-4507-a599-385952eec1ef",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/Script/Game/UI.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "48958d8d-eadd-4d07-a428-7b6324ad6f96",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 14 - 0
assets/Script/Game/UI/Start.ts

@@ -0,0 +1,14 @@
+import { _decorator, Component, Node } from 'cc';
+const { ccclass, property } = _decorator;
+
+@ccclass('Start')
+export class Start extends Component {
+    start() {
+
+    }
+
+    update(deltaTime: number) {
+        
+    }
+}
+


+ 9 - 0
assets/Script/Game/UI/Start.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "be70bbed-eb27-4a99-8def-a4c57cf3db00",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 13 - 0
assets/Script/GameInfo.ts

@@ -0,0 +1,13 @@
+export class GameInfo{
+    
+    private static _instance:GameInfo = null;
+
+    private constructor(){};
+    static get Instance():GameInfo{
+        if(!this._instance){
+            this._instance = new GameInfo();
+        }
+        return this._instance;
+    }
+
+}

+ 9 - 0
assets/Script/GameInfo.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.23",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "d0c49c24-04d0-43b7-9701-e5fdd27415a5",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 14 - 0
assets/resources.meta

@@ -0,0 +1,14 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "c5bd784e-ef11-4562-a0e1-66949aff7ede",
+  "files": [],
+  "subMetas": {},
+  "userData": {
+    "isBundle": true,
+    "bundleConfigID": "default",
+    "bundleName": "resources",
+    "priority": 8
+  }
+}

+ 9 - 0
assets/resources/Data.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "8bb853a6-67a5-4e78-82a9-744756d625d9",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 10 - 0
assets/resources/Data/GameResPath.csv

@@ -0,0 +1,10 @@
+���ݵ�����,id,resName,path,replace,atlas
+��������,number,string,string,string[],boolean
+��Ƭ��ͼ,1,theme-lv-tmx,Res/Theme/Themetheme/BGlv/BGPath,theme;lv,0
+��ͼ����,2,theme-lv-pathBg,Res/Theme/Themetheme/BGlv/BG-hd.pvr.ccz/spriteFrame,theme;lv,0
+����1,3,theme-1,Res/Theme/Themetheme/BG0/BG1-hd.pvr.ccz/spriteFrame,theme,0
+����2,4,theme-2,Res/Theme/Themetheme/BG0/BG2-hd.pvr.ccz/spriteFrame,theme,0
+����ͼ��1,5,theme-,Res/Theme/Themetheme/Items/Monsters01-hd,theme,1
+����ͼ��2,6,theme-,Res/Theme/Themetheme/Items/Monsters02-hd,theme,1
+�ϰ���ͼ��1,7,theme-1-,Res/Theme/Themetheme/Items/Object01-hd,theme,1
+�ϰ���ͼ��2,8,theme-2-,Res/Theme/Themetheme/Items/Object02-hd,theme,1

+ 11 - 0
assets/resources/Data/GameResPath.csv.meta

@@ -0,0 +1,11 @@
+{
+  "ver": "1.0.2",
+  "importer": "text",
+  "imported": true,
+  "uuid": "79bda8dd-373a-4fe8-8ddc-4267b02f3f6f",
+  "files": [
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {}
+}

+ 29 - 0
assets/resources/Data/LevelDt.csv

@@ -0,0 +1,29 @@
+名称,id,towerid,totalwave
+类型,number,number[],number
+关卡,1001,1;2,15
+关卡,1002,1;2;3,15
+关卡,1003,1;2;4,20
+关卡,1004,2;5,20
+关卡,1005,2;4,20
+关卡,1006,2;3,25
+关卡,1007,1;5,20
+关卡,1008,4;3;5,25
+关卡,1009,1;2;4;3;5,20
+关卡,2001,1;2;3;4;5,15
+关卡,2002,2;4;6,20
+关卡,2003,3;6;7,20
+关卡,2004,4;7;8,20
+关卡,2005,3;6;7;8,25
+关卡,2006,5;7;8;9,20
+关卡,2007,3;4;5;6;8;9,20
+关卡,2008,2;4;3;5;6;7;8;9,25
+关卡,2009,1;4;6;7,20
+关卡,3001,6;7;8;9,15
+关卡,3002,1;7;10,20
+关卡,3003,3;4;6;7;8;10;5,20
+关卡,3004,1;7;10;11,20
+关卡,3005,1;4;5;6;12;7;10;11,25
+关卡,3006,1;4;6;7;8;12,20
+关卡,3007,10;11;12;13;7,20
+关卡,3008,6;7;8;9;10;11;12;13,30
+关卡,3009,1;10;13,20

+ 11 - 0
assets/resources/Data/LevelDt.csv.meta

@@ -0,0 +1,11 @@
+{
+  "ver": "1.0.2",
+  "importer": "text",
+  "imported": true,
+  "uuid": "a955bde6-62bf-4101-b698-f3c104a2d2bc",
+  "files": [
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {}
+}

+ 15 - 0
assets/resources/Data/TowerDt.csv

@@ -0,0 +1,15 @@
+名称,id,lvIcon,cardImg,chassis,fireAniImg,fireAniCount,effectAni,bulletAniImg,bulletAniCount,buff,fireType,atkRadiums,rotate
+,number,string,string[],string[],string,number,string[],string,number,string[],string,number[],boolean
+绿瓶,1,TBottle,Bottle00;Bottle01,Bottle-11,Bottle,3,PBottle01;PBottle02,PBottle,3,none,shoot,120;160;200,1
+屎,2,TShit,Shit00;Shit01,Shit-11;Shit-12;Shit-13,Shit,3,PShit01;PShit02,PShit,2,PShit-11;PShit-12,shoot,120;160;200,0
+叶子,3,TLeaf,Fan00;Fan01,Fan-11;Fan-12;Fan-13,Fan,3,PFan01;PFan02,PFan,1,none,shoot,120;160;200,0
+金色五角星,4,TRedStart,Star00;Star01,Star-11;Star-12;Star-13,Star,3,PStar01;PStar02,PStar,1,PStar-11;PStar-12;PStar-13;PStar-14;PStar-15;PStar-16,shoot,120;160;200,0
+电球,5,TThunder,Ball00;Ball01,Ball-11;Ball-12;Ball-13,Ball,4,PBall01;PBall02,PBall,4,none,stick,120;160;200,0
+火瓶子,6,TFireBottle,FBottle00;FBottle01,FBottle-11,FBottle,3,PFBottle01;PFBottle02,PFBottle,2,none,stick,120;160;200,1
+冰五角,7,TBlueStart,BStar00;BStar01,BStar-11;BStar-12;BStar-13,BStar,3,PBStar01;PBStar02,PBStar,1,PBStar-11;PBStar-12;PBStar-13;PBStar-14;PBStar-15;PBStar-16,shoot,120;160;200,0
+太阳,8,TSun,Sun00;Sun01,Sun11;Sun12;Sun13,Sun-,1,PSun01;PSun02;PSun03;PSun04;PSun05;PSun06;PSun07;PSun08;PSun09,PSun,5,none,expand,120;160;200,0
+火箭,9,TRocket,Rocket00;Rocket01,Rocket-11;Rocket-12;Rocket-13,Rocket,3,PRocket01;PRocket02,PRocket,5,PRocket-11;PRocket-12;PRocket-13;PRocket-14;PRocket-15;PRocket-16,shoot,120;160;200,1
+毒针,10,TPin,Pin00;Pin01,Pin-11;Pin-12;Pin-13,Pin,3,PPin01;PPin02;PPin03;PPin04,PPin,2,none,shoot,120;160;200,1
+弩,11,TBow,Arrow00;Arrow01,Arrow-11;Arrow-12;Arrow-13,Arrow,3,PArrow01;PArrow02,PArrow,2,none,mshoot,120;160;200,1
+雪花,12,TIce,Snow00;Snow01,Snow-11;Snow-12;Snow-13,Snow,3,none,PSnow,5,PSnow-21,expand,120;160;200,0
+飞机,13,TPlane,Plane00;Plane01,Plane-11,Plane,3,PPlane01;PPlane02;PPlane03;PPlane04;PPlane05,PPlane,3,none,laser,120;160;200,1

+ 11 - 0
assets/resources/Data/TowerDt.csv.meta

@@ -0,0 +1,11 @@
+{
+  "ver": "1.0.2",
+  "importer": "text",
+  "imported": true,
+  "uuid": "1c110378-5877-4b06-9d68-894e62cc7f8e",
+  "files": [
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/resources/Res.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "5f4f5651-f506-42dc-a4c4-3797c1056a90",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/resources/Res/Prefab.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "6072fc79-7e7f-48b4-996f-11038c222864",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 9 - 0
assets/resources/UI.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "2ec30ff8-5ce4-497b-9288-f370f9b28d1a",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 939 - 0
assets/resources/UI/Start.prefab

@@ -0,0 +1,939 @@
+[
+  {
+    "__type__": "cc.Prefab",
+    "_name": "Start",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_native": "",
+    "data": {
+      "__id__": 1
+    },
+    "optimizationPolicy": 0,
+    "persistent": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Start",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": null,
+    "_children": [
+      {
+        "__id__": 2
+      },
+      {
+        "__id__": 12
+      },
+      {
+        "__id__": 22
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 32
+      },
+      {
+        "__id__": 34
+      },
+      {
+        "__id__": 36
+      }
+    ],
+    "_prefab": {
+      "__id__": 38
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "BtnMusic",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 3
+      },
+      {
+        "__id__": 5
+      },
+      {
+        "__id__": 7
+      },
+      {
+        "__id__": 9
+      }
+    ],
+    "_prefab": {
+      "__id__": 11
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 390,
+      "y": 300,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 4
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 40
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "28ce1qLwBOurua/pqlNf9J"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 6
+    },
+    "_customMaterial": null,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_spriteFrame": {
+      "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_type": 1,
+    "_fillType": 0,
+    "_sizeMode": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "ba71nTEsxEmq9GWRYvW5+O"
+  },
+  {
+    "__type__": "cc.Button",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 8
+    },
+    "clickEvents": [],
+    "_interactable": true,
+    "_transition": 2,
+    "_normalColor": {
+      "__type__": "cc.Color",
+      "r": 214,
+      "g": 214,
+      "b": 214,
+      "a": 255
+    },
+    "_hoverColor": {
+      "__type__": "cc.Color",
+      "r": 211,
+      "g": 211,
+      "b": 211,
+      "a": 255
+    },
+    "_pressedColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_disabledColor": {
+      "__type__": "cc.Color",
+      "r": 124,
+      "g": 124,
+      "b": 124,
+      "a": 255
+    },
+    "_normalSprite": {
+      "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_hoverSprite": {
+      "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_pressedSprite": {
+      "__uuid__": "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_disabledSprite": {
+      "__uuid__": "951249e0-9f16-456d-8b85-a6ca954da16b@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_duration": 0.1,
+    "_zoomScale": 1.2,
+    "_target": {
+      "__id__": 2
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "0378iSFGdAwaOPGJNrwVhv"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 10
+    },
+    "_alignFlags": 33,
+    "_target": null,
+    "_left": 0,
+    "_right": 200,
+    "_top": 40,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "9aiq1HkNJCRrumjMIzudtS"
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "bd6+lE9oNDQZi69N7Xqmrg",
+    "instance": null,
+    "targetOverrides": null,
+    "nestedPrefabInstanceRoots": null
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "BtnVolume",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 13
+      },
+      {
+        "__id__": 15
+      },
+      {
+        "__id__": 17
+      },
+      {
+        "__id__": 19
+      }
+    ],
+    "_prefab": {
+      "__id__": 21
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 540,
+      "y": 300,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 12
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 14
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 40
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "deuB4e8txLBKp3vRFGFgZx"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 12
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 16
+    },
+    "_customMaterial": null,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_spriteFrame": {
+      "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_type": 1,
+    "_fillType": 0,
+    "_sizeMode": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "d74M07L9pH7bbZw3zWeqiO"
+  },
+  {
+    "__type__": "cc.Button",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 12
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 18
+    },
+    "clickEvents": [],
+    "_interactable": true,
+    "_transition": 2,
+    "_normalColor": {
+      "__type__": "cc.Color",
+      "r": 214,
+      "g": 214,
+      "b": 214,
+      "a": 255
+    },
+    "_hoverColor": {
+      "__type__": "cc.Color",
+      "r": 211,
+      "g": 211,
+      "b": 211,
+      "a": 255
+    },
+    "_pressedColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_disabledColor": {
+      "__type__": "cc.Color",
+      "r": 124,
+      "g": 124,
+      "b": 124,
+      "a": 255
+    },
+    "_normalSprite": {
+      "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_hoverSprite": {
+      "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_pressedSprite": {
+      "__uuid__": "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_disabledSprite": {
+      "__uuid__": "951249e0-9f16-456d-8b85-a6ca954da16b@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_duration": 0.1,
+    "_zoomScale": 1.2,
+    "_target": {
+      "__id__": 12
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "fa0LW+q0BFS5tl1UvmDsoM"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 12
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 20
+    },
+    "_alignFlags": 33,
+    "_target": null,
+    "_left": 0,
+    "_right": 50,
+    "_top": 40,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "b3hCwgY19O+oa8O8eOqTqd"
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "a6LxvtbYJC3rLf63ZgB2Jz",
+    "instance": null,
+    "targetOverrides": null,
+    "nestedPrefabInstanceRoots": null
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "BtnStart",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 23
+      },
+      {
+        "__id__": 25
+      },
+      {
+        "__id__": 27
+      },
+      {
+        "__id__": 29
+      }
+    ],
+    "_prefab": {
+      "__id__": 31
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": -140,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 22
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 24
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 200,
+      "height": 80
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "3eGigF9QtPpoaVP6HCxKqV"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 22
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 26
+    },
+    "_customMaterial": null,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_spriteFrame": {
+      "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_type": 1,
+    "_fillType": 0,
+    "_sizeMode": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "fcuhkd3lNPO7szL1YBZqf7"
+  },
+  {
+    "__type__": "cc.Button",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 22
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 28
+    },
+    "clickEvents": [],
+    "_interactable": true,
+    "_transition": 2,
+    "_normalColor": {
+      "__type__": "cc.Color",
+      "r": 214,
+      "g": 214,
+      "b": 214,
+      "a": 255
+    },
+    "_hoverColor": {
+      "__type__": "cc.Color",
+      "r": 211,
+      "g": 211,
+      "b": 211,
+      "a": 255
+    },
+    "_pressedColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_disabledColor": {
+      "__type__": "cc.Color",
+      "r": 124,
+      "g": 124,
+      "b": 124,
+      "a": 255
+    },
+    "_normalSprite": {
+      "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_hoverSprite": {
+      "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_pressedSprite": {
+      "__uuid__": "544e49d6-3f05-4fa8-9a9e-091f98fc2ce8@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_disabledSprite": {
+      "__uuid__": "951249e0-9f16-456d-8b85-a6ca954da16b@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_duration": 0.1,
+    "_zoomScale": 1.2,
+    "_target": {
+      "__id__": 22
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "32l/J7TnZAcJ7vZcJXf7v5"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 22
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 30
+    },
+    "_alignFlags": 44,
+    "_target": null,
+    "_left": 540,
+    "_right": 540,
+    "_top": 0,
+    "_bottom": 180,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 100,
+    "_originalHeight": 0,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "f6+DL+qttBLqqWqFc2a5QF"
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "31zeUCMblP+6+pFvmkbbRE",
+    "instance": null,
+    "targetOverrides": null,
+    "nestedPrefabInstanceRoots": null
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 33
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 1280,
+      "height": 720
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "18tgmqpMtL3oE8vBGMAywf"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 35
+    },
+    "_customMaterial": null,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_spriteFrame": {
+      "__uuid__": "bd1bcaba-bd7d-4a71-b143-997c882383e4@f9941",
+      "__expectedType__": "cc.SpriteFrame"
+    },
+    "_type": 0,
+    "_fillType": 0,
+    "_sizeMode": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "35tS5eQ6tIjLJaxzcua2wb"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 37
+    },
+    "_alignFlags": 45,
+    "_target": null,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 100,
+    "_originalHeight": 100,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "0cuIGitZ1ICaoB7NRsQM9x"
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "79X/cjR91APK4OJA3+H2wM",
+    "instance": null
+  }
+]

+ 13 - 0
assets/resources/UI/Start.prefab.meta

@@ -0,0 +1,13 @@
+{
+  "ver": "1.1.50",
+  "importer": "prefab",
+  "imported": true,
+  "uuid": "45d7f5a0-a2f4-47fd-92aa-11ed0778b500",
+  "files": [
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {
+    "syncNodeName": "Start"
+  }
+}

+ 372 - 0
assets/resources/UI/UIRoot.prefab

@@ -0,0 +1,372 @@
+[
+  {
+    "__type__": "cc.Prefab",
+    "_name": "UIRoot",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_native": "",
+    "data": {
+      "__id__": 1
+    },
+    "optimizationPolicy": 0,
+    "persistent": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "UIRoot",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": null,
+    "_children": [
+      {
+        "__id__": 2
+      },
+      {
+        "__id__": 6
+      },
+      {
+        "__id__": 10
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 14
+      }
+    ],
+    "_prefab": {
+      "__id__": 16
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Page",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 3
+      }
+    ],
+    "_prefab": {
+      "__id__": 5
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 4
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 100
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "c9VIt3hmVPooi0rpnqFyJh"
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "acKDXIYmhFirYCFcrzwuW4",
+    "instance": null,
+    "targetOverrides": null,
+    "nestedPrefabInstanceRoots": null
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Widget",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 7
+      }
+    ],
+    "_prefab": {
+      "__id__": 9
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 6
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 8
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 100
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "0aMwiRWB1BzLB+58HwPYGy"
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "6dsv4XuzxG67T+rhgmgqFa",
+    "instance": null,
+    "targetOverrides": null,
+    "nestedPrefabInstanceRoots": null
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "PopWin",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 11
+      }
+    ],
+    "_prefab": {
+      "__id__": 13
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_mobility": 0,
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 10
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 12
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 100
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "c8mBTv22xBJqQYd1R7gNfO"
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "a1ySqdb6pHaoOMRZCEbgOL",
+    "instance": null,
+    "targetOverrides": null,
+    "nestedPrefabInstanceRoots": null
+  },
+  {
+    "__type__": "cc.UITransform",
+    "_name": "",
+    "_objFlags": 0,
+    "__editorExtras__": {},
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "__prefab": {
+      "__id__": 15
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 100
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.CompPrefabInfo",
+    "fileId": "3a5bNda7RGLqPg2GTqvH3B"
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "35N6GyKUZCl6Qy5E3U/m4a",
+    "targetOverrides": null
+  }
+]

+ 13 - 0
assets/resources/UI/UIRoot.prefab.meta

@@ -0,0 +1,13 @@
+{
+  "ver": "1.1.50",
+  "importer": "prefab",
+  "imported": true,
+  "uuid": "8928ba20-8691-4efe-b12d-1d68eefd3bc1",
+  "files": [
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {
+    "syncNodeName": "UIRoot"
+  }
+}

+ 7 - 0
package.json

@@ -0,0 +1,7 @@
+{
+  "name": "ShowWangZhenBa",
+  "uuid": "bc13d082-ed8e-46fe-ba76-96d1d69e1329",
+  "creator": {
+    "version": "3.8.2"
+  }
+}

+ 3 - 0
settings/v2/packages/builder.json

@@ -0,0 +1,3 @@
+{
+  "__version__": "1.3.7"
+}

+ 23 - 0
settings/v2/packages/cocos-service.json

@@ -0,0 +1,23 @@
+{
+  "__version__": "3.0.7",
+  "game": {
+    "name": "未知游戏",
+    "app_id": "UNKNOW",
+    "c_id": "0"
+  },
+  "appConfigMaps": [
+    {
+      "app_id": "UNKNOW",
+      "config_id": "69c21a"
+    }
+  ],
+  "configs": [
+    {
+      "app_id": "UNKNOW",
+      "config_id": "69c21a",
+      "config_name": "Default",
+      "config_remarks": "",
+      "services": []
+    }
+  ]
+}

+ 3 - 0
settings/v2/packages/device.json

@@ -0,0 +1,3 @@
+{
+  "__version__": "1.0.1"
+}

+ 150 - 0
settings/v2/packages/engine.json

@@ -0,0 +1,150 @@
+{
+  "__version__": "1.0.8",
+  "modules": {
+    "cache": {
+      "base": {
+        "_value": true
+      },
+      "graphcis": {
+        "_value": true
+      },
+      "gfx-webgl": {
+        "_value": true
+      },
+      "gfx-webgl2": {
+        "_value": true
+      },
+      "animation": {
+        "_value": true
+      },
+      "skeletal-animation": {
+        "_value": false
+      },
+      "3d": {
+        "_value": false
+      },
+      "2d": {
+        "_value": true
+      },
+      "xr": {
+        "_value": false
+      },
+      "ui": {
+        "_value": true
+      },
+      "particle": {
+        "_value": false
+      },
+      "physics": {
+        "_value": false,
+        "_option": "physics-ammo"
+      },
+      "physics-ammo": {
+        "_value": false
+      },
+      "physics-cannon": {
+        "_value": false
+      },
+      "physics-physx": {
+        "_value": false
+      },
+      "physics-builtin": {
+        "_value": false
+      },
+      "physics-2d": {
+        "_value": true,
+        "_option": "physics-2d-box2d"
+      },
+      "physics-2d-box2d": {
+        "_value": false
+      },
+      "physics-2d-builtin": {
+        "_value": false
+      },
+      "intersection-2d": {
+        "_value": true
+      },
+      "primitive": {
+        "_value": false
+      },
+      "profiler": {
+        "_value": true
+      },
+      "occlusion-query": {
+        "_value": false
+      },
+      "geometry-renderer": {
+        "_value": false
+      },
+      "debug-renderer": {
+        "_value": false
+      },
+      "particle-2d": {
+        "_value": true
+      },
+      "audio": {
+        "_value": true
+      },
+      "video": {
+        "_value": true
+      },
+      "webview": {
+        "_value": true
+      },
+      "tween": {
+        "_value": true
+      },
+      "websocket": {
+        "_value": false
+      },
+      "websocket-server": {
+        "_value": false
+      },
+      "terrain": {
+        "_value": false
+      },
+      "light-probe": {
+        "_value": false
+      },
+      "tiled-map": {
+        "_value": true
+      },
+      "spine": {
+        "_value": true
+      },
+      "dragon-bones": {
+        "_value": true
+      },
+      "marionette": {
+        "_value": false
+      },
+      "custom-pipeline": {
+        "_value": false
+      }
+    },
+    "includeModules": [
+      "2d",
+      "animation",
+      "audio",
+      "base",
+      "dragon-bones",
+      "gfx-webgl",
+      "gfx-webgl2",
+      "intersection-2d",
+      "particle-2d",
+      "physics-2d-box2d",
+      "profiler",
+      "spine",
+      "tiled-map",
+      "tween",
+      "ui",
+      "video",
+      "webview"
+    ],
+    "noDeprecatedFeatures": {
+      "value": false,
+      "version": ""
+    },
+    "flags": {}
+  }
+}

+ 23 - 0
settings/v2/packages/information.json

@@ -0,0 +1,23 @@
+{
+  "__version__": "1.0.1",
+  "information": {
+    "customSplash": {
+      "id": "customSplash",
+      "label": "customSplash",
+      "enable": true,
+      "customSplash": {
+        "complete": false,
+        "form": "https://creator-api.cocos.com/api/form/show?sid=239eb05c4bafa647699bd985104c8ee0"
+      }
+    },
+    "removeSplash": {
+      "id": "removeSplash",
+      "label": "removeSplash",
+      "enable": true,
+      "removeSplash": {
+        "complete": false,
+        "form": "https://creator-api.cocos.com/api/form/show?sid=239eb05c4bafa647699bd985104c8ee0"
+      }
+    }
+  }
+}

+ 3 - 0
settings/v2/packages/program.json

@@ -0,0 +1,3 @@
+{
+  "__version__": "1.0.4"
+}

+ 4 - 0
settings/v2/packages/project.json

@@ -0,0 +1,4 @@
+{
+  "__version__": "1.0.6",
+  "custom_joint_texture_layouts": []
+}

+ 9 - 0
tsconfig.json

@@ -0,0 +1,9 @@
+{
+  /* Base configuration. Do not edit this field. */
+  "extends": "./temp/tsconfig.cocos.json",
+
+  /* Add your custom configuration here. */
+  "compilerOptions": {
+    "strict": false
+  }
+}