lvjincheng 5 yıl önce
ebeveyn
işleme
a15579540e
100 değiştirilmiş dosya ile 14894 ekleme ve 0 silme
  1. 51 0
      RhythmMaster/.gitignore
  2. 12 0
      RhythmMaster/assets/animation.meta
  3. 83 0
      RhythmMaster/assets/animation/block_long.anim
  4. 5 0
      RhythmMaster/assets/animation/block_long.anim.meta
  5. 83 0
      RhythmMaster/assets/animation/block_long_side.anim
  6. 5 0
      RhythmMaster/assets/animation/block_long_side.anim.meta
  7. 12 0
      RhythmMaster/assets/dragonbone.meta
  8. 12 0
      RhythmMaster/assets/dragonbone/collision1.meta
  9. 0 0
      RhythmMaster/assets/dragonbone/collision1/collision1_ske.json
  10. 5 0
      RhythmMaster/assets/dragonbone/collision1/collision1_ske.json.meta
  11. 1 0
      RhythmMaster/assets/dragonbone/collision1/collision1_tex.json
  12. 5 0
      RhythmMaster/assets/dragonbone/collision1/collision1_tex.json.meta
  13. BIN
      RhythmMaster/assets/dragonbone/collision1/collision1_tex.png
  14. 36 0
      RhythmMaster/assets/dragonbone/collision1/collision1_tex.png.meta
  15. 12 0
      RhythmMaster/assets/dragonbone/collision2.meta
  16. 0 0
      RhythmMaster/assets/dragonbone/collision2/collision2_ske.json
  17. 5 0
      RhythmMaster/assets/dragonbone/collision2/collision2_ske.json.meta
  18. 1 0
      RhythmMaster/assets/dragonbone/collision2/collision2_tex.json
  19. 5 0
      RhythmMaster/assets/dragonbone/collision2/collision2_tex.json.meta
  20. BIN
      RhythmMaster/assets/dragonbone/collision2/collision2_tex.png
  21. 36 0
      RhythmMaster/assets/dragonbone/collision2/collision2_tex.png.meta
  22. 12 0
      RhythmMaster/assets/dragonbone/glown.meta
  23. 1 0
      RhythmMaster/assets/dragonbone/glown/glown_10_ske.json
  24. 5 0
      RhythmMaster/assets/dragonbone/glown/glown_10_ske.json.meta
  25. 1 0
      RhythmMaster/assets/dragonbone/glown/glown_10_tex.json
  26. 5 0
      RhythmMaster/assets/dragonbone/glown/glown_10_tex.json.meta
  27. BIN
      RhythmMaster/assets/dragonbone/glown/glown_10_tex.png
  28. 36 0
      RhythmMaster/assets/dragonbone/glown/glown_10_tex.png.meta
  29. 12 0
      RhythmMaster/assets/dragonbone/stage.meta
  30. 0 0
      RhythmMaster/assets/dragonbone/stage/stage_ske.json
  31. 5 0
      RhythmMaster/assets/dragonbone/stage/stage_ske.json.meta
  32. 1 0
      RhythmMaster/assets/dragonbone/stage/stage_tex.json
  33. 5 0
      RhythmMaster/assets/dragonbone/stage/stage_tex.json.meta
  34. BIN
      RhythmMaster/assets/dragonbone/stage/stage_tex.png
  35. 36 0
      RhythmMaster/assets/dragonbone/stage/stage_tex.png.meta
  36. 12 0
      RhythmMaster/assets/font.meta
  37. 14 0
      RhythmMaster/assets/font/double_hit_dark.fnt
  38. 7 0
      RhythmMaster/assets/font/double_hit_dark.fnt.meta
  39. BIN
      RhythmMaster/assets/font/double_hit_dark_0.png
  40. 36 0
      RhythmMaster/assets/font/double_hit_dark_0.png.meta
  41. 14 0
      RhythmMaster/assets/font/double_hit_light.fnt
  42. 7 0
      RhythmMaster/assets/font/double_hit_light.fnt.meta
  43. BIN
      RhythmMaster/assets/font/double_hit_light_0.png
  44. 36 0
      RhythmMaster/assets/font/double_hit_light_0.png.meta
  45. BIN
      RhythmMaster/assets/font/font_light.png
  46. 36 0
      RhythmMaster/assets/font/font_light.png.meta
  47. 14 0
      RhythmMaster/assets/font/fx.fnt
  48. 7 0
      RhythmMaster/assets/font/fx.fnt.meta
  49. BIN
      RhythmMaster/assets/font/fx_0.png
  50. 36 0
      RhythmMaster/assets/font/fx_0.png.meta
  51. 14 0
      RhythmMaster/assets/font/sequence.fnt
  52. 7 0
      RhythmMaster/assets/font/sequence.fnt.meta
  53. BIN
      RhythmMaster/assets/font/sequence_0.png
  54. 36 0
      RhythmMaster/assets/font/sequence_0.png.meta
  55. 12 0
      RhythmMaster/assets/prefab.meta
  56. 223 0
      RhythmMaster/assets/prefab/block.prefab
  57. 8 0
      RhythmMaster/assets/prefab/block.prefab.meta
  58. 3199 0
      RhythmMaster/assets/prefab/game_page.prefab
  59. 8 0
      RhythmMaster/assets/prefab/game_page.prefab.meta
  60. 1054 0
      RhythmMaster/assets/prefab/main_page.prefab
  61. 8 0
      RhythmMaster/assets/prefab/main_page.prefab.meta
  62. 5174 0
      RhythmMaster/assets/prefab/settle_page.prefab
  63. 8 0
      RhythmMaster/assets/prefab/settle_page.prefab.meta
  64. 2112 0
      RhythmMaster/assets/prefab/song_item.prefab
  65. 8 0
      RhythmMaster/assets/prefab/song_item.prefab.meta
  66. 12 0
      RhythmMaster/assets/scene.meta
  67. 327 0
      RhythmMaster/assets/scene/game.fire
  68. 7 0
      RhythmMaster/assets/scene/game.fire.meta
  69. 12 0
      RhythmMaster/assets/script.meta
  70. 274 0
      RhythmMaster/assets/script/GameConfig.ts
  71. 9 0
      RhythmMaster/assets/script/GameConfig.ts.meta
  72. 100 0
      RhythmMaster/assets/script/GameMgr.ts
  73. 9 0
      RhythmMaster/assets/script/GameMgr.ts.meta
  74. 12 0
      RhythmMaster/assets/script/page.meta
  75. 366 0
      RhythmMaster/assets/script/page/GamePage.ts
  76. 9 0
      RhythmMaster/assets/script/page/GamePage.ts.meta
  77. 48 0
      RhythmMaster/assets/script/page/MainPage.ts
  78. 9 0
      RhythmMaster/assets/script/page/MainPage.ts.meta
  79. 122 0
      RhythmMaster/assets/script/page/SettlePage.ts
  80. 9 0
      RhythmMaster/assets/script/page/SettlePage.ts.meta
  81. 12 0
      RhythmMaster/assets/script/page/game_page.meta
  82. 172 0
      RhythmMaster/assets/script/page/game_page/Block.ts
  83. 9 0
      RhythmMaster/assets/script/page/game_page/Block.ts.meta
  84. 69 0
      RhythmMaster/assets/script/page/game_page/BlockLong.ts
  85. 9 0
      RhythmMaster/assets/script/page/game_page/BlockLong.ts.meta
  86. 12 0
      RhythmMaster/assets/script/page/main_page.meta
  87. 228 0
      RhythmMaster/assets/script/page/main_page/CoverFlow.ts
  88. 9 0
      RhythmMaster/assets/script/page/main_page/CoverFlow.ts.meta
  89. 12 0
      RhythmMaster/assets/script/sdk.meta
  90. 42 0
      RhythmMaster/assets/script/sdk/Listener.js
  91. 9 0
      RhythmMaster/assets/script/sdk/Listener.js.meta
  92. 366 0
      RhythmMaster/assets/script/sdk/WebView.js
  93. 9 0
      RhythmMaster/assets/script/sdk/WebView.js.meta
  94. 12 0
      RhythmMaster/assets/sound.meta
  95. BIN
      RhythmMaster/assets/sound/bg_music.mp3
  96. 7 0
      RhythmMaster/assets/sound/bg_music.mp3.meta
  97. BIN
      RhythmMaster/assets/sound/button_effect.mp3
  98. 7 0
      RhythmMaster/assets/sound/button_effect.mp3.meta
  99. BIN
      RhythmMaster/assets/sound/hit_effect.mp3
  100. 7 0
      RhythmMaster/assets/sound/hit_effect.mp3.meta

+ 51 - 0
RhythmMaster/.gitignore

@@ -0,0 +1,51 @@
+#/////////////////////////////////////////////////////////////////////////////
+# Fireball Projects
+#/////////////////////////////////////////////////////////////////////////////
+
+/library/
+/temp/
+/local/
+/build/
+
+#/////////////////////////////////////////////////////////////////////////////
+# npm files
+#/////////////////////////////////////////////////////////////////////////////
+
+npm-debug.log
+node_modules/
+
+#/////////////////////////////////////////////////////////////////////////////
+# Logs and databases
+#/////////////////////////////////////////////////////////////////////////////
+
+*.log
+*.sql
+*.sqlite
+
+#/////////////////////////////////////////////////////////////////////////////
+# files for debugger
+#/////////////////////////////////////////////////////////////////////////////
+
+*.sln
+*.pidb
+*.suo
+
+#/////////////////////////////////////////////////////////////////////////////
+# OS generated files
+#/////////////////////////////////////////////////////////////////////////////
+
+.DS_Store
+ehthumbs.db
+Thumbs.db
+
+#/////////////////////////////////////////////////////////////////////////////
+# WebStorm files
+#/////////////////////////////////////////////////////////////////////////////
+
+.idea/
+
+#//////////////////////////
+# VS Code files
+#//////////////////////////
+
+.vscode/

+ 12 - 0
RhythmMaster/assets/animation.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "0db9c2f5-2ada-4081-9d35-cfc326e1a494",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 83 - 0
RhythmMaster/assets/animation/block_long.anim

@@ -0,0 +1,83 @@
+{
+  "__type__": "cc.AnimationClip",
+  "_name": "block_long",
+  "_objFlags": 0,
+  "_native": "",
+  "_duration": 3,
+  "sample": 60,
+  "speed": 1,
+  "wrapMode": 1,
+  "curveData": {
+    "props": {
+      "height": [
+        {
+          "frame": 0,
+          "value": 0
+        },
+        {
+          "frame": 1,
+          "value": 590
+        },
+        {
+          "frame": 2,
+          "value": 590
+        },
+        {
+          "frame": 3,
+          "value": 0
+        }
+      ],
+      "anchorY": [
+        {
+          "frame": 0,
+          "value": 1,
+          "curve": "constant"
+        },
+        {
+          "frame": 1,
+          "value": 0
+        }
+      ],
+      "y": [
+        {
+          "frame": 0,
+          "value": 400,
+          "curve": "constant"
+        },
+        {
+          "frame": 1,
+          "value": -190
+        }
+      ]
+    },
+    "paths": {
+      "face": {
+        "props": {
+          "y": [
+            {
+              "frame": 0,
+              "value": -590,
+              "curve": "constant"
+            },
+            {
+              "frame": 1,
+              "value": 0
+            }
+          ]
+        }
+      }
+    }
+  },
+  "events": [
+    {
+      "frame": 1,
+      "func": "reach",
+      "params": []
+    },
+    {
+      "frame": 3,
+      "func": "leave",
+      "params": []
+    }
+  ]
+}

+ 5 - 0
RhythmMaster/assets/animation/block_long.anim.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "2.1.0",
+  "uuid": "195f188e-cbc5-4dfe-882f-7ec254e84bb3",
+  "subMetas": {}
+}

+ 83 - 0
RhythmMaster/assets/animation/block_long_side.anim

@@ -0,0 +1,83 @@
+{
+  "__type__": "cc.AnimationClip",
+  "_name": "block_long_side",
+  "_objFlags": 0,
+  "_native": "",
+  "_duration": 3,
+  "sample": 60,
+  "speed": 1,
+  "wrapMode": 1,
+  "curveData": {
+    "props": {
+      "y": [
+        {
+          "frame": 0,
+          "value": 400,
+          "curve": "constant"
+        },
+        {
+          "frame": 1,
+          "value": -190
+        }
+      ],
+      "height": [
+        {
+          "frame": 0,
+          "value": 0
+        },
+        {
+          "frame": 1,
+          "value": 590
+        },
+        {
+          "frame": 2,
+          "value": 590
+        },
+        {
+          "frame": 3,
+          "value": 0
+        }
+      ],
+      "anchorY": [
+        {
+          "frame": 0,
+          "value": 1,
+          "curve": "constant"
+        },
+        {
+          "frame": 1,
+          "value": 0
+        }
+      ]
+    },
+    "paths": {
+      "face": {
+        "props": {
+          "y": [
+            {
+              "frame": 0,
+              "value": -590,
+              "curve": "constant"
+            },
+            {
+              "frame": 1,
+              "value": 0
+            }
+          ]
+        }
+      }
+    }
+  },
+  "events": [
+    {
+      "frame": 1,
+      "func": "reach",
+      "params": []
+    },
+    {
+      "frame": 3,
+      "func": "leave",
+      "params": []
+    }
+  ]
+}

+ 5 - 0
RhythmMaster/assets/animation/block_long_side.anim.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "2.1.0",
+  "uuid": "67799789-7c3d-41ce-a4ad-a053669d3dfa",
+  "subMetas": {}
+}

+ 12 - 0
RhythmMaster/assets/dragonbone.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "a77f75ae-17bb-4ddf-8d1e-4eccc574d90e",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 12 - 0
RhythmMaster/assets/dragonbone/collision1.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "9b978781-7034-4b25-b43f-9c80ff0470e4",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
RhythmMaster/assets/dragonbone/collision1/collision1_ske.json


+ 5 - 0
RhythmMaster/assets/dragonbone/collision1/collision1_ske.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.1",
+  "uuid": "c6e4a1e3-64ec-4943-bb8b-7167ecb19e00",
+  "subMetas": {}
+}

+ 1 - 0
RhythmMaster/assets/dragonbone/collision1/collision1_tex.json

@@ -0,0 +1 @@
+{"width":512,"imagePath":"collision1_tex.png","height":512,"name":"collision1","SubTexture":[{"width":90,"y":165,"height":90,"name":"01","x":183},{"width":96,"y":258,"height":96,"name":"02","x":326},{"width":124,"y":1,"height":124,"name":"03","x":326},{"width":180,"y":206,"height":180,"name":"glown1","x":1},{"y":257,"frameX":-53,"frameHeight":120,"frameY":-38,"width":128,"frameWidth":241,"height":45,"name":"glown2","x":183},{"y":1,"frameX":-3,"frameHeight":204,"frameY":0,"width":160,"frameWidth":163,"height":203,"name":"kuai1","x":1},{"y":258,"frameX":-2,"frameHeight":36,"frameY":0,"width":53,"frameWidth":55,"height":36,"name":"kuai4","x":424},{"y":1,"frameX":-2,"frameHeight":162,"frameY":0,"width":161,"frameWidth":163,"height":162,"name":"glown3","x":163},{"width":115,"y":127,"height":129,"name":"kuai2","x":326}]}

+ 5 - 0
RhythmMaster/assets/dragonbone/collision1/collision1_tex.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.1",
+  "uuid": "98f8eb3e-2bdb-49eb-92f5-b0dcc12fb777",
+  "subMetas": {}
+}

BIN
RhythmMaster/assets/dragonbone/collision1/collision1_tex.png


+ 36 - 0
RhythmMaster/assets/dragonbone/collision1/collision1_tex.png.meta

@@ -0,0 +1,36 @@
+{
+  "ver": "2.3.5",
+  "uuid": "a849bd61-ab3d-4ab9-a5f3-e7cd94bd84c4",
+  "type": "sprite",
+  "wrapMode": "clamp",
+  "filterMode": "bilinear",
+  "premultiplyAlpha": false,
+  "genMipmaps": false,
+  "packable": true,
+  "width": 512,
+  "height": 512,
+  "platformSettings": {},
+  "subMetas": {
+    "collision1_tex": {
+      "ver": "1.0.4",
+      "uuid": "6346c619-1a2b-43a6-b31f-5cc7ba0a16c4",
+      "rawTextureUuid": "a849bd61-ab3d-4ab9-a5f3-e7cd94bd84c4",
+      "trimType": "auto",
+      "trimThreshold": 1,
+      "rotated": false,
+      "offsetX": -17,
+      "offsetY": 62.5,
+      "trimX": 1,
+      "trimY": 1,
+      "width": 476,
+      "height": 385,
+      "rawWidth": 512,
+      "rawHeight": 512,
+      "borderTop": 0,
+      "borderBottom": 0,
+      "borderLeft": 0,
+      "borderRight": 0,
+      "subMetas": {}
+    }
+  }
+}

+ 12 - 0
RhythmMaster/assets/dragonbone/collision2.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "8d271988-2ff3-4d7f-92c3-85ef9c800fbc",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
RhythmMaster/assets/dragonbone/collision2/collision2_ske.json


+ 5 - 0
RhythmMaster/assets/dragonbone/collision2/collision2_ske.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.1",
+  "uuid": "335d82c3-8212-40dd-9630-e4871cfe009d",
+  "subMetas": {}
+}

+ 1 - 0
RhythmMaster/assets/dragonbone/collision2/collision2_tex.json

@@ -0,0 +1 @@
+{"width":512,"SubTexture":[{"width":90,"y":486,"height":90,"name":"01","x":1},{"width":96,"y":388,"height":96,"name":"02","x":1},{"width":124,"y":347,"height":124,"name":"03","x":345},{"width":180,"y":183,"height":180,"name":"glown1","x":163},{"frameX":-53,"y":473,"frameY":-38,"frameWidth":241,"width":128,"frameHeight":120,"height":45,"name":"glown2","x":280},{"frameX":-3,"y":183,"frameY":0,"frameWidth":163,"width":160,"frameHeight":204,"height":203,"name":"kuai1","x":1},{"frameX":-2,"y":365,"frameY":0,"frameWidth":55,"width":53,"frameHeight":36,"height":36,"name":"kuai4","x":280},{"frameX":-2,"y":183,"frameY":0,"frameWidth":163,"width":161,"frameHeight":162,"height":162,"name":"glown3","x":345},{"width":115,"y":365,"height":129,"name":"kuai2","x":163},{"width":419,"y":1,"height":180,"name":"sanguang","x":1}],"height":1024,"name":"collision2","imagePath":"collision2_tex.png"}

+ 5 - 0
RhythmMaster/assets/dragonbone/collision2/collision2_tex.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.1",
+  "uuid": "aa0c3343-9e0d-466b-8356-376b76ff53ce",
+  "subMetas": {}
+}

BIN
RhythmMaster/assets/dragonbone/collision2/collision2_tex.png


+ 36 - 0
RhythmMaster/assets/dragonbone/collision2/collision2_tex.png.meta

@@ -0,0 +1,36 @@
+{
+  "ver": "2.3.5",
+  "uuid": "d5ad3be1-7d17-4520-8428-729079d546db",
+  "type": "sprite",
+  "wrapMode": "clamp",
+  "filterMode": "bilinear",
+  "premultiplyAlpha": false,
+  "genMipmaps": false,
+  "packable": true,
+  "width": 512,
+  "height": 1024,
+  "platformSettings": {},
+  "subMetas": {
+    "collision2_tex": {
+      "ver": "1.0.4",
+      "uuid": "29bcdce3-1366-4a2d-a1c1-c5ffb9807ed6",
+      "rawTextureUuid": "d5ad3be1-7d17-4520-8428-729079d546db",
+      "trimType": "auto",
+      "trimThreshold": 1,
+      "rotated": false,
+      "offsetX": -4.5,
+      "offsetY": 223,
+      "trimX": 1,
+      "trimY": 2,
+      "width": 501,
+      "height": 574,
+      "rawWidth": 512,
+      "rawHeight": 1024,
+      "borderTop": 0,
+      "borderBottom": 0,
+      "borderLeft": 0,
+      "borderRight": 0,
+      "subMetas": {}
+    }
+  }
+}

+ 12 - 0
RhythmMaster/assets/dragonbone/glown.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "99624d05-7151-4ce0-b441-ad573a6a46b0",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 1 - 0
RhythmMaster/assets/dragonbone/glown/glown_10_ske.json

@@ -0,0 +1 @@
+{"armature":[{"aabb":{"width":512,"y":-50,"height":100,"x":-256},"skin":[{"name":"","slot":[{"display":[{"path":"diguang","type":"image","name":"diguang","transform":{}}],"blendMode":"add","name":"diguang"}]}],"type":"Armature","frameRate":24,"bone":[{"name":"root","transform":{}},{"transform":{},"name":"bone","parent":"root"}],"slot":[{"blendMode":"add","parent":"bone","name":"diguang","color":{}}],"defaultActions":[{"gotoAndPlay":"01"}],"animation":[{"bone":[{"translateFrame":[],"rotateFrame":[],"scaleFrame":[],"name":"root"},{"translateFrame":[],"rotateFrame":[],"scaleFrame":[{"curve":[0.16341463414634147,0,0.8219512195121951,1],"y":0.3,"duration":2,"x":0.3},{"curve":[0.16341463414634147,0,0.8219512195121951,1],"y":1.3555,"duration":8},{"y":0.6988,"duration":0,"x":1.405}],"name":"bone"}],"ffd":[],"duration":10,"playTimes":0,"frame":[],"slot":[{"colorFrame":[{"tweenEasing":0,"duration":2,"color":{"aM":52,"bM":92,"rM":0}},{"tweenEasing":0,"duration":2,"color":{"bM":33}},{"tweenEasing":0,"duration":2,"color":{"gM":43,"bM":43}},{"tweenEasing":0,"duration":2,"color":{"aM":69,"gM":60,"bM":98}},{"tweenEasing":0,"duration":2,"color":{"aM":34,"gM":48,"rM":46}},{"duration":0,"color":{"aM":0}}],"name":"diguang","displayFrame":[]}],"name":"01","ik":[]}],"name":"glown_10","ik":[]}],"frameRate":24,"name":"glown_10","version":"5.5","isGlobal":0}

+ 5 - 0
RhythmMaster/assets/dragonbone/glown/glown_10_ske.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.1",
+  "uuid": "8a9cf7fb-38c4-4b7c-a011-54804c2c4f8d",
+  "subMetas": {}
+}

+ 1 - 0
RhythmMaster/assets/dragonbone/glown/glown_10_tex.json

@@ -0,0 +1 @@
+{"width":1024,"imagePath":"glown_10_tex.png","name":"glown_10","SubTexture":[{"width":512,"y":1,"height":100,"name":"diguang","x":1}],"height":128}

+ 5 - 0
RhythmMaster/assets/dragonbone/glown/glown_10_tex.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.1",
+  "uuid": "2f76ad2a-441b-46fc-a2b8-d8eff334fb2d",
+  "subMetas": {}
+}

BIN
RhythmMaster/assets/dragonbone/glown/glown_10_tex.png


+ 36 - 0
RhythmMaster/assets/dragonbone/glown/glown_10_tex.png.meta

@@ -0,0 +1,36 @@
+{
+  "ver": "2.3.5",
+  "uuid": "c7fc14a8-4b2b-4425-baad-6f84005fae69",
+  "type": "sprite",
+  "wrapMode": "clamp",
+  "filterMode": "bilinear",
+  "premultiplyAlpha": false,
+  "genMipmaps": false,
+  "packable": true,
+  "width": 1024,
+  "height": 128,
+  "platformSettings": {},
+  "subMetas": {
+    "glown_10_tex": {
+      "ver": "1.0.4",
+      "uuid": "22e912ac-a4c8-4101-ac4d-5b8802e21c9f",
+      "rawTextureUuid": "c7fc14a8-4b2b-4425-baad-6f84005fae69",
+      "trimType": "auto",
+      "trimThreshold": 1,
+      "rotated": false,
+      "offsetX": -255,
+      "offsetY": 13,
+      "trimX": 1,
+      "trimY": 1,
+      "width": 512,
+      "height": 100,
+      "rawWidth": 1024,
+      "rawHeight": 128,
+      "borderTop": 0,
+      "borderBottom": 0,
+      "borderLeft": 0,
+      "borderRight": 0,
+      "subMetas": {}
+    }
+  }
+}

+ 12 - 0
RhythmMaster/assets/dragonbone/stage.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "3b4f1cf9-fccb-449e-a3d4-cdd12d81682d",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
RhythmMaster/assets/dragonbone/stage/stage_ske.json


+ 5 - 0
RhythmMaster/assets/dragonbone/stage/stage_ske.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.1",
+  "uuid": "150ee801-2a37-47fb-8413-3357c2b31a00",
+  "subMetas": {}
+}

+ 1 - 0
RhythmMaster/assets/dragonbone/stage/stage_tex.json

@@ -0,0 +1 @@
+{"width":512,"imagePath":"stage_tex.png","height":1024,"name":"stage","SubTexture":[{"width":60,"y":490,"height":60,"name":"di","x":127},{"y":1,"frameX":0,"frameHeight":481,"frameY":-21,"width":481,"frameWidth":481,"height":412,"name":"bankuai","x":1},{"y":415,"frameX":0,"frameHeight":329,"frameY":-78,"width":62,"frameWidth":62,"height":172,"name":"beijing (1)","x":1},{"y":589,"frameX":-39,"frameHeight":64,"frameY":0,"width":145,"frameWidth":227,"height":64,"name":"beijing (2)","x":1},{"y":415,"frameX":-2,"frameHeight":73,"frameY":0,"width":107,"frameWidth":113,"height":73,"name":"beijing (3)","x":65},{"y":1,"frameX":0,"frameHeight":241,"frameY":-30,"width":9,"frameWidth":9,"height":179,"name":"xian","x":484},{"width":60,"y":490,"height":60,"name":"dian","x":65},{"width":54,"y":552,"height":28,"name":"LOGO","x":65}]}

+ 5 - 0
RhythmMaster/assets/dragonbone/stage/stage_tex.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.1",
+  "uuid": "3a4c7265-5769-416f-9254-50724e29d4e6",
+  "subMetas": {}
+}

BIN
RhythmMaster/assets/dragonbone/stage/stage_tex.png


+ 36 - 0
RhythmMaster/assets/dragonbone/stage/stage_tex.png.meta

@@ -0,0 +1,36 @@
+{
+  "ver": "2.3.5",
+  "uuid": "fb601e61-ebd9-48b5-8128-38e40f9bde59",
+  "type": "sprite",
+  "wrapMode": "clamp",
+  "filterMode": "bilinear",
+  "premultiplyAlpha": false,
+  "genMipmaps": false,
+  "packable": true,
+  "width": 512,
+  "height": 1024,
+  "platformSettings": {},
+  "subMetas": {
+    "stage_tex": {
+      "ver": "1.0.4",
+      "uuid": "b237205b-6230-471e-a1ae-619d219d6848",
+      "rawTextureUuid": "fb601e61-ebd9-48b5-8128-38e40f9bde59",
+      "trimType": "auto",
+      "trimThreshold": 1,
+      "rotated": false,
+      "offsetX": -9,
+      "offsetY": 184.5,
+      "trimX": 1,
+      "trimY": 2,
+      "width": 492,
+      "height": 651,
+      "rawWidth": 512,
+      "rawHeight": 1024,
+      "borderTop": 0,
+      "borderBottom": 0,
+      "borderLeft": 0,
+      "borderRight": 0,
+      "subMetas": {}
+    }
+  }
+}

+ 12 - 0
RhythmMaster/assets/font.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "cedad7f9-4231-4f11-99ec-f211b9ff2a03",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 14 - 0
RhythmMaster/assets/font/double_hit_dark.fnt

@@ -0,0 +1,14 @@
+info face="Arial" size=200 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1 outline=0
+common lineHeight=198 base=160 scaleW=1024 scaleH=1024 pages=1 packed=0 alphaChnl=1 redChnl=0 greenChnl=0 blueChnl=0
+page id=0 file="double_hit_dark_0.png"
+chars count=10
+char id=48   x=0     y=0     width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=49   x=151   y=0     width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=50   x=302   y=0     width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=51   x=453   y=0     width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=52   x=604   y=0     width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=53   x=755   y=0     width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=54   x=0     y=201   width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=55   x=151   y=201   width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=56   x=302   y=201   width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=57   x=453   y=201   width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15

+ 7 - 0
RhythmMaster/assets/font/double_hit_dark.fnt.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "2.1.0",
+  "uuid": "8954f49a-b385-429c-b8aa-97523599ffc8",
+  "textureUuid": "1ec59dcd-243a-40ab-a207-53372de732e3",
+  "fontSize": 200,
+  "subMetas": {}
+}

BIN
RhythmMaster/assets/font/double_hit_dark_0.png


+ 36 - 0
RhythmMaster/assets/font/double_hit_dark_0.png.meta

@@ -0,0 +1,36 @@
+{
+  "ver": "2.3.5",
+  "uuid": "1ec59dcd-243a-40ab-a207-53372de732e3",
+  "type": "sprite",
+  "wrapMode": "clamp",
+  "filterMode": "bilinear",
+  "premultiplyAlpha": false,
+  "genMipmaps": false,
+  "packable": true,
+  "width": 1024,
+  "height": 1024,
+  "platformSettings": {},
+  "subMetas": {
+    "double_hit_dark_0": {
+      "ver": "1.0.4",
+      "uuid": "cb1ec4fe-8fe7-4ccb-9a75-a0e822a6761f",
+      "rawTextureUuid": "1ec59dcd-243a-40ab-a207-53372de732e3",
+      "trimType": "auto",
+      "trimThreshold": 1,
+      "rotated": false,
+      "offsetX": -61,
+      "offsetY": 311.5,
+      "trimX": 34,
+      "trimY": 36,
+      "width": 834,
+      "height": 329,
+      "rawWidth": 1024,
+      "rawHeight": 1024,
+      "borderTop": 0,
+      "borderBottom": 0,
+      "borderLeft": 0,
+      "borderRight": 0,
+      "subMetas": {}
+    }
+  }
+}

+ 14 - 0
RhythmMaster/assets/font/double_hit_light.fnt

@@ -0,0 +1,14 @@
+info face="Arial" size=200 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1 outline=0
+common lineHeight=198 base=160 scaleW=1024 scaleH=1024 pages=1 packed=0 alphaChnl=1 redChnl=0 greenChnl=0 blueChnl=0
+page id=0 file="double_hit_light_0.png"
+chars count=10
+char id=48   x=0     y=0     width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=49   x=151   y=0     width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=50   x=302   y=0     width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=51   x=453   y=0     width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=52   x=604   y=0     width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=53   x=755   y=0     width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=54   x=0     y=201   width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=55   x=151   y=201   width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=56   x=302   y=201   width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15
+char id=57   x=453   y=201   width=150   height=200   xoffset=0     yoffset=0     xadvance=150   page=0  chnl=15

+ 7 - 0
RhythmMaster/assets/font/double_hit_light.fnt.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "2.1.0",
+  "uuid": "af10fc0e-9dd7-45e2-a117-f9359c437a69",
+  "textureUuid": "19397ffc-c8f9-45f7-a268-3f05b0b7baea",
+  "fontSize": 200,
+  "subMetas": {}
+}

BIN
RhythmMaster/assets/font/double_hit_light_0.png


+ 36 - 0
RhythmMaster/assets/font/double_hit_light_0.png.meta

@@ -0,0 +1,36 @@
+{
+  "ver": "2.3.5",
+  "uuid": "19397ffc-c8f9-45f7-a268-3f05b0b7baea",
+  "type": "sprite",
+  "wrapMode": "clamp",
+  "filterMode": "bilinear",
+  "premultiplyAlpha": false,
+  "genMipmaps": false,
+  "packable": true,
+  "width": 1024,
+  "height": 1024,
+  "platformSettings": {},
+  "subMetas": {
+    "double_hit_light_0": {
+      "ver": "1.0.4",
+      "uuid": "0566dbe9-ee34-4373-8d83-caee5ff56713",
+      "rawTextureUuid": "19397ffc-c8f9-45f7-a268-3f05b0b7baea",
+      "trimType": "auto",
+      "trimThreshold": 1,
+      "rotated": false,
+      "offsetX": -59.5,
+      "offsetY": 311.5,
+      "trimX": 0,
+      "trimY": 0,
+      "width": 905,
+      "height": 401,
+      "rawWidth": 1024,
+      "rawHeight": 1024,
+      "borderTop": 0,
+      "borderBottom": 0,
+      "borderLeft": 0,
+      "borderRight": 0,
+      "subMetas": {}
+    }
+  }
+}

BIN
RhythmMaster/assets/font/font_light.png


+ 36 - 0
RhythmMaster/assets/font/font_light.png.meta

@@ -0,0 +1,36 @@
+{
+  "ver": "2.3.5",
+  "uuid": "9325bf54-b0b2-4e8f-880c-60866fff14ce",
+  "type": "sprite",
+  "wrapMode": "clamp",
+  "filterMode": "bilinear",
+  "premultiplyAlpha": false,
+  "genMipmaps": false,
+  "packable": true,
+  "width": 750,
+  "height": 211,
+  "platformSettings": {},
+  "subMetas": {
+    "font_light": {
+      "ver": "1.0.4",
+      "uuid": "994578ba-ecda-49d5-9a1e-3e7f8c83b257",
+      "rawTextureUuid": "9325bf54-b0b2-4e8f-880c-60866fff14ce",
+      "trimType": "auto",
+      "trimThreshold": 1,
+      "rotated": false,
+      "offsetX": 0,
+      "offsetY": 0,
+      "trimX": 0,
+      "trimY": 0,
+      "width": 750,
+      "height": 211,
+      "rawWidth": 750,
+      "rawHeight": 211,
+      "borderTop": 0,
+      "borderBottom": 0,
+      "borderLeft": 0,
+      "borderRight": 0,
+      "subMetas": {}
+    }
+  }
+}

+ 14 - 0
RhythmMaster/assets/font/fx.fnt

@@ -0,0 +1,14 @@
+info face="Arial" size=201 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1 outline=0
+common lineHeight=201 base=162 scaleW=1024 scaleH=1024 pages=1 packed=0 alphaChnl=1 redChnl=0 greenChnl=0 blueChnl=0
+page id=0 file="fx_0.png"
+chars count=10
+char id=48   x=620   y=0     width=164   height=206   xoffset=0     yoffset=0     xadvance=164   page=0  chnl=15
+char id=49   x=467   y=208   width=117   height=195   xoffset=0     yoffset=0     xadvance=117   page=0  chnl=15
+char id=50   x=314   y=0     width=152   height=207   xoffset=0     yoffset=0     xadvance=152   page=0  chnl=15
+char id=51   x=467   y=0     width=152   height=207   xoffset=0     yoffset=0     xadvance=152   page=0  chnl=15
+char id=52   x=307   y=208   width=159   height=195   xoffset=0     yoffset=0     xadvance=159   page=0  chnl=15
+char id=53   x=160   y=0     width=153   height=207   xoffset=0     yoffset=0     xadvance=153   page=0  chnl=15
+char id=54   x=785   y=0     width=159   height=201   xoffset=0     yoffset=0     xadvance=159   page=0  chnl=15
+char id=55   x=160   y=208   width=146   height=201   xoffset=0     yoffset=0     xadvance=146   page=0  chnl=15
+char id=56   x=0     y=0     width=159   height=207   xoffset=0     yoffset=0     xadvance=159   page=0  chnl=15
+char id=57   x=0     y=208   width=159   height=201   xoffset=0     yoffset=0     xadvance=159   page=0  chnl=15

+ 7 - 0
RhythmMaster/assets/font/fx.fnt.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "2.1.0",
+  "uuid": "8218870c-476d-4687-ac6d-8665f996019e",
+  "textureUuid": "d9b3d8ed-3288-44ef-8b79-ff027989b13c",
+  "fontSize": 201,
+  "subMetas": {}
+}

BIN
RhythmMaster/assets/font/fx_0.png


+ 36 - 0
RhythmMaster/assets/font/fx_0.png.meta

@@ -0,0 +1,36 @@
+{
+  "ver": "2.3.5",
+  "uuid": "d9b3d8ed-3288-44ef-8b79-ff027989b13c",
+  "type": "sprite",
+  "wrapMode": "clamp",
+  "filterMode": "bilinear",
+  "premultiplyAlpha": false,
+  "genMipmaps": false,
+  "packable": true,
+  "width": 1024,
+  "height": 1024,
+  "platformSettings": {},
+  "subMetas": {
+    "fx_0": {
+      "ver": "1.0.4",
+      "uuid": "f9e0652d-865f-4300-b93f-d28b343576b7",
+      "rawTextureUuid": "d9b3d8ed-3288-44ef-8b79-ff027989b13c",
+      "trimType": "auto",
+      "trimThreshold": 1,
+      "rotated": false,
+      "offsetX": -40,
+      "offsetY": 307.5,
+      "trimX": 0,
+      "trimY": 0,
+      "width": 944,
+      "height": 409,
+      "rawWidth": 1024,
+      "rawHeight": 1024,
+      "borderTop": 0,
+      "borderBottom": 0,
+      "borderLeft": 0,
+      "borderRight": 0,
+      "subMetas": {}
+    }
+  }
+}

+ 14 - 0
RhythmMaster/assets/font/sequence.fnt

@@ -0,0 +1,14 @@
+info face="Arial" size=32 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1 outline=0
+common lineHeight=32 base=26 scaleW=256 scaleH=256 pages=1 packed=0 alphaChnl=1 redChnl=0 greenChnl=0 blueChnl=0
+page id=0 file="sequence_0.png"
+chars count=10
+char id=48   x=106   y=0     width=24    height=32    xoffset=0     yoffset=0     xadvance=24    page=0  chnl=15
+char id=49   x=0     y=0     width=27    height=32    xoffset=0     yoffset=0     xadvance=27    page=0  chnl=15
+char id=50   x=28    y=0     width=25    height=32    xoffset=0     yoffset=0     xadvance=25    page=0  chnl=15
+char id=51   x=54    y=0     width=25    height=32    xoffset=0     yoffset=0     xadvance=25    page=0  chnl=15
+char id=52   x=131   y=0     width=24    height=32    xoffset=0     yoffset=0     xadvance=24    page=0  chnl=15
+char id=53   x=80    y=0     width=25    height=32    xoffset=0     yoffset=0     xadvance=25    page=0  chnl=15
+char id=54   x=231   y=0     width=23    height=32    xoffset=0     yoffset=0     xadvance=23    page=0  chnl=15
+char id=55   x=156   y=0     width=24    height=32    xoffset=0     yoffset=0     xadvance=24    page=0  chnl=15
+char id=56   x=181   y=0     width=24    height=32    xoffset=0     yoffset=0     xadvance=24    page=0  chnl=15
+char id=57   x=206   y=0     width=24    height=32    xoffset=0     yoffset=0     xadvance=24    page=0  chnl=15

+ 7 - 0
RhythmMaster/assets/font/sequence.fnt.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "2.1.0",
+  "uuid": "4b9e59d9-e3cf-42c6-82df-ddb55ba60fce",
+  "textureUuid": "ebf13e09-310a-4db1-970c-5347d17e34f0",
+  "fontSize": 32,
+  "subMetas": {}
+}

BIN
RhythmMaster/assets/font/sequence_0.png


+ 36 - 0
RhythmMaster/assets/font/sequence_0.png.meta

@@ -0,0 +1,36 @@
+{
+  "ver": "2.3.5",
+  "uuid": "ebf13e09-310a-4db1-970c-5347d17e34f0",
+  "type": "sprite",
+  "wrapMode": "clamp",
+  "filterMode": "bilinear",
+  "premultiplyAlpha": false,
+  "genMipmaps": false,
+  "packable": true,
+  "width": 256,
+  "height": 256,
+  "platformSettings": {},
+  "subMetas": {
+    "sequence_0": {
+      "ver": "1.0.4",
+      "uuid": "0d5bb1ce-ad32-4f63-826c-8486ae723a01",
+      "rawTextureUuid": "ebf13e09-310a-4db1-970c-5347d17e34f0",
+      "trimType": "auto",
+      "trimThreshold": 1,
+      "rotated": false,
+      "offsetX": 1,
+      "offsetY": 112,
+      "trimX": 4,
+      "trimY": 0,
+      "width": 250,
+      "height": 32,
+      "rawWidth": 256,
+      "rawHeight": 256,
+      "borderTop": 0,
+      "borderBottom": 0,
+      "borderLeft": 0,
+      "borderRight": 0,
+      "subMetas": {}
+    }
+  }
+}

+ 12 - 0
RhythmMaster/assets/prefab.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "3cc81dd2-4959-4c71-b641-1af81a4c0942",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 223 - 0
RhythmMaster/assets/prefab/block.prefab

@@ -0,0 +1,223 @@
+[
+  {
+    "__type__": "cc.Prefab",
+    "_name": "",
+    "_objFlags": 0,
+    "_native": "",
+    "data": {
+      "__id__": 1
+    },
+    "optimizationPolicy": 0,
+    "asyncLoadAssets": false,
+    "readonly": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "block",
+    "_objFlags": 0,
+    "_parent": null,
+    "_children": [
+      {
+        "__id__": 2
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 5
+      }
+    ],
+    "_prefab": {
+      "__id__": 6
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 0,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "face",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 3
+      }
+    ],
+    "_prefab": {
+      "__id__": 4
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 0,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": null,
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "169b0dc9-69c9-4883-b8fd-922d6bd038c5"
+    },
+    "fileId": "426jTeAJpEupCXZMUK9yt2",
+    "sync": false
+  },
+  {
+    "__type__": "a370bY7RIZEMYFKm6MtfDTL",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "face": {
+      "__id__": 3
+    },
+    "face_sp": [
+      {
+        "__uuid__": "6b0830bd-393b-4cb4-9d3d-bd93d6b05245"
+      },
+      {
+        "__uuid__": "f6d6d968-9cb7-4b52-821d-4388dec9b27c"
+      },
+      {
+        "__uuid__": "56157d89-0017-419e-8c2c-abdae1a75766"
+      },
+      {
+        "__uuid__": "26bdb786-4d23-4d29-9543-8f5ab995becd"
+      }
+    ],
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "169b0dc9-69c9-4883-b8fd-922d6bd038c5"
+    },
+    "fileId": "dd5jKixgdNmYNii2Y5+VVX",
+    "sync": false
+  }
+]

+ 8 - 0
RhythmMaster/assets/prefab/block.prefab.meta

@@ -0,0 +1,8 @@
+{
+  "ver": "1.2.7",
+  "uuid": "169b0dc9-69c9-4883-b8fd-922d6bd038c5",
+  "optimizationPolicy": "AUTO",
+  "asyncLoadAssets": false,
+  "readonly": false,
+  "subMetas": {}
+}

+ 3199 - 0
RhythmMaster/assets/prefab/game_page.prefab

@@ -0,0 +1,3199 @@
+[
+  {
+    "__type__": "cc.Prefab",
+    "_name": "",
+    "_objFlags": 0,
+    "_native": "",
+    "data": {
+      "__id__": 1
+    },
+    "optimizationPolicy": 0,
+    "asyncLoadAssets": false,
+    "readonly": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "game_page",
+    "_objFlags": 0,
+    "_parent": null,
+    "_children": [
+      {
+        "__id__": 2
+      },
+      {
+        "__id__": 5
+      },
+      {
+        "__id__": 8
+      },
+      {
+        "__id__": 11
+      },
+      {
+        "__id__": 14
+      },
+      {
+        "__id__": 17
+      },
+      {
+        "__id__": 20
+      },
+      {
+        "__id__": 23
+      },
+      {
+        "__id__": 26
+      },
+      {
+        "__id__": 29
+      },
+      {
+        "__id__": 31
+      },
+      {
+        "__id__": 33
+      },
+      {
+        "__id__": 35
+      },
+      {
+        "__id__": 43
+      },
+      {
+        "__id__": 51
+      },
+      {
+        "__id__": 54
+      },
+      {
+        "__id__": 57
+      },
+      {
+        "__id__": 59
+      },
+      {
+        "__id__": 62
+      },
+      {
+        "__id__": 65
+      },
+      {
+        "__id__": 68
+      },
+      {
+        "__id__": 71
+      },
+      {
+        "__id__": 74
+      },
+      {
+        "__id__": 77
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 83
+      },
+      {
+        "__id__": 84
+      }
+    ],
+    "_prefab": {
+      "__id__": 85
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 720,
+      "height": 1600
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        360,
+        800,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "on",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 3
+      }
+    ],
+    "_prefab": {
+      "__id__": 4
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 189.71,
+      "height": 240.64
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1.11,
+        1.11,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "Armature",
+    "_animationName": "on",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": 0,
+    "premultipliedAlpha": false,
+    "_armatureKey": "150ee801-2a37-47fb-8413-3357c2b31a00#3a4c7265-5769-416f-9254-50724e29d4e6",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "150ee801-2a37-47fb-8413-3357c2b31a00"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "3a4c7265-5769-416f-9254-50724e29d4e6"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 3,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 1,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "041xRD2D5EE5Rb8Ekq9J5h",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "bg",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 6
+      }
+    ],
+    "_prefab": {
+      "__id__": 7
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 189.71,
+      "height": 240.64
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1.11,
+        1.11,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 5
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "Armature",
+    "_animationName": "bg",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": 0,
+    "premultipliedAlpha": false,
+    "_armatureKey": "150ee801-2a37-47fb-8413-3357c2b31a00#3a4c7265-5769-416f-9254-50724e29d4e6",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "150ee801-2a37-47fb-8413-3357c2b31a00"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "3a4c7265-5769-416f-9254-50724e29d4e6"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 1,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 1,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "90cDVQhFRKXblVpQgQMAaz",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "logo",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 9
+      }
+    ],
+    "_prefab": {
+      "__id__": 10
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 189.71,
+      "height": 240.64
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1.11,
+        1.11,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 8
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "Armature",
+    "_animationName": "logo",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": 0,
+    "premultipliedAlpha": false,
+    "_armatureKey": "150ee801-2a37-47fb-8413-3357c2b31a00#3a4c7265-5769-416f-9254-50724e29d4e6",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "150ee801-2a37-47fb-8413-3357c2b31a00"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "3a4c7265-5769-416f-9254-50724e29d4e6"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 2,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 1,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "6354HdAOlJIKqurwd2TXIh",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "road_light_left",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 12
+      }
+    ],
+    "_prefab": {
+      "__id__": 13
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 290,
+      "height": 570
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -155,
+        -175,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 1.5,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 11
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "caef7a77-add3-47c0-b82f-1b8a40eb6c1c"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "22Ki7Fr+xF0IiUCzu7tCPv",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "road_light_right",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 15
+      }
+    ],
+    "_prefab": {
+      "__id__": 16
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 290,
+      "height": 570
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        155,
+        -175,
+        0,
+        0,
+        0,
+        0,
+        1,
+        -1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 1.5,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 14
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "caef7a77-add3-47c0-b82f-1b8a40eb6c1c"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "ccvpqlwG9P4LnUS16hke3l",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "road_light_center",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 18
+      }
+    ],
+    "_prefab": {
+      "__id__": 19
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 193,
+      "height": 570
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -175,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 17
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "c3cf1b13-ff99-4796-8058-d9023ee00688"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "beric+08FMwbtzXbdT7R3p",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "key_left",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 21
+      }
+    ],
+    "_prefab": {
+      "__id__": 22
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 240,
+      "height": 105
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -219,
+        -218,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 20
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "459df30b-e550-4d39-bc06-6d8f7c176fe3"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "7eU7LQN/VLSJn3vSpvhnUr",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "key_right",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 24
+      }
+    ],
+    "_prefab": {
+      "__id__": 25
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 240,
+      "height": 105
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        219,
+        -218,
+        0,
+        0,
+        0,
+        0,
+        1,
+        -1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 23
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "459df30b-e550-4d39-bc06-6d8f7c176fe3"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "311afD69pFU5XaFzPe35ZK",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "key_center",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 27
+      }
+    ],
+    "_prefab": {
+      "__id__": 28
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 222,
+      "height": 108
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -218,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 26
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "74f299ae-1248-45ef-b387-f34a55f5f80c"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "bfbTAUSqpLBqQsxOU9mwiB",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "key_check_left",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 30
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 240,
+      "height": 1600
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -240,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "195+VogcRCz5dH2uRrjOUG",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "key_check_right",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 32
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 240,
+      "height": 1600
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        240,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "31y3RHxh5Juor2sj5PtXE9",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "key_check_center",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 34
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 240,
+      "height": 1600
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "69KxqBNqRDcL8l7znguTnV",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "block_long",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 36
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 39
+      },
+      {
+        "__id__": 40
+      },
+      {
+        "__id__": 41
+      }
+    ],
+    "_prefab": {
+      "__id__": 42
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 190,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 1
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        400,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "face",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 35
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 37
+      }
+    ],
+    "_prefab": {
+      "__id__": 38
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 155,
+      "height": 590
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -590,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 36
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "6b2e6497-e8a9-4fb7-9fac-3caadd4f0605"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "20bwfihetJRL+qiDOYc1Ej",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Mask",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 35
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_spriteFrame": null,
+    "_type": 0,
+    "_segments": 64,
+    "_N$alphaThreshold": 0.1,
+    "_N$inverted": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Animation",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 35
+    },
+    "_enabled": true,
+    "_defaultClip": {
+      "__uuid__": "195f188e-cbc5-4dfe-882f-7ec254e84bb3"
+    },
+    "_clips": [
+      {
+        "__uuid__": "195f188e-cbc5-4dfe-882f-7ec254e84bb3"
+      }
+    ],
+    "playOnLoad": false,
+    "_id": ""
+  },
+  {
+    "__type__": "407e6WKtQFK4YOkENLaxzl7",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 35
+    },
+    "_enabled": true,
+    "animation": {
+      "__id__": 40
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "faBi1CIsZPOoD8XaqEP0mL",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "block_long_side",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 44
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 47
+      },
+      {
+        "__id__": 48
+      },
+      {
+        "__id__": 49
+      }
+    ],
+    "_prefab": {
+      "__id__": 50
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 300,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 1
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -165,
+        422,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "face",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 43
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 45
+      }
+    ],
+    "_prefab": {
+      "__id__": 46
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 230,
+      "height": 550
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -590,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 30,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 3.8,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 44
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "91033db5-3efe-4d9e-87b5-846e970a5f43"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "1bw15lQGVKKaDYVdZaxduO",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Mask",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 43
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_spriteFrame": null,
+    "_type": 0,
+    "_segments": 64,
+    "_N$alphaThreshold": 0.1,
+    "_N$inverted": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Animation",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 43
+    },
+    "_enabled": true,
+    "_defaultClip": {
+      "__uuid__": "67799789-7c3d-41ce-a4ad-a053669d3dfa"
+    },
+    "_clips": [
+      {
+        "__uuid__": "67799789-7c3d-41ce-a4ad-a053669d3dfa"
+      }
+    ],
+    "playOnLoad": false,
+    "_id": ""
+  },
+  {
+    "__type__": "407e6WKtQFK4YOkENLaxzl7",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 43
+    },
+    "_enabled": true,
+    "animation": {
+      "__id__": 48
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "05Nxpi4gNG2ZiXCsg/vyj9",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "font_glown",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 52
+      }
+    ],
+    "_prefab": {
+      "__id__": 53
+    },
+    "_opacity": 0,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 512,
+      "height": 100
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        60,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 51
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "glown_10",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": -1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "8a9cf7fb-38c4-4b7c-a011-54804c2c4f8d#2f76ad2a-441b-46fc-a2b8-d8eff334fb2d",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "8a9cf7fb-38c4-4b7c-a011-54804c2c4f8d"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "2f76ad2a-441b-46fc-a2b8-d8eff334fb2d"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 1,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "1b9DLl2FlP0JzzqDN//aWY",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "double_hit",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 55
+      }
+    ],
+    "_prefab": {
+      "__id__": 56
+    },
+    "_opacity": 0,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 74,
+      "height": 40
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        60,
+        0,
+        0,
+        0,
+        0,
+        1,
+        4,
+        2.5,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 54
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": true,
+    "_string": "123",
+    "_N$string": "123",
+    "_fontSize": 40,
+    "_lineHeight": 40,
+    "_enableWrapText": true,
+    "_N$file": {
+      "__uuid__": "8954f49a-b385-429c-b8aa-97523599ffc8"
+    },
+    "_isSystemFontUsed": false,
+    "_spacingX": -8,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "52wjDVV0BO2YugL8FtHobX",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "blocks",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 58
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 0,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "58rkj4vxtOq4wl55oBL5Lm",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "collision2_left",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 60
+      }
+    ],
+    "_prefab": {
+      "__id__": 61
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 263.33,
+      "height": 217
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -222,
+        -300,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1.3,
+        1.3,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 59
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "EF_02",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": 1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "335d82c3-8212-40dd-9630-e4871cfe009d#aa0c3343-9e0d-466b-8356-376b76ff53ce",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "335d82c3-8212-40dd-9630-e4871cfe009d"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "aa0c3343-9e0d-466b-8356-376b76ff53ce"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 2,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "c1TfsMfItGE4Yt3PKjDhPm",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "collision2_right",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 63
+      }
+    ],
+    "_prefab": {
+      "__id__": 64
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 263.33,
+      "height": 217
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        222,
+        -300,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1.3,
+        1.3,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 62
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "EF_02",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": 1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "335d82c3-8212-40dd-9630-e4871cfe009d#aa0c3343-9e0d-466b-8356-376b76ff53ce",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "335d82c3-8212-40dd-9630-e4871cfe009d"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "aa0c3343-9e0d-466b-8356-376b76ff53ce"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 2,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "8fuMf2N1tAZZnnqsjoqKWJ",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "collision2_center",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 66
+      }
+    ],
+    "_prefab": {
+      "__id__": 67
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 263.33,
+      "height": 217
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -290,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 65
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "EF_02",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": 1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "335d82c3-8212-40dd-9630-e4871cfe009d#aa0c3343-9e0d-466b-8356-376b76ff53ce",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "335d82c3-8212-40dd-9630-e4871cfe009d"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "aa0c3343-9e0d-466b-8356-376b76ff53ce"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 2,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "ee1CYkgqtEmry+Klrq9jK9",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "collision1_left",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 69
+      }
+    ],
+    "_prefab": {
+      "__id__": 70
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 419.24,
+      "height": 214.31
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -222,
+        -300,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1.3,
+        1.3,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 68
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "EF_01",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": 1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "c6e4a1e3-64ec-4943-bb8b-7167ecb19e00#98f8eb3e-2bdb-49eb-92f5-b0dcc12fb777",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "c6e4a1e3-64ec-4943-bb8b-7167ecb19e00"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "98f8eb3e-2bdb-49eb-92f5-b0dcc12fb777"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 2,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "cfJX2rmYtM4IAOZFb2l/Lr",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "collision1_right",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 72
+      }
+    ],
+    "_prefab": {
+      "__id__": 73
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 263.33,
+      "height": 217
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        222,
+        -300,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1.3,
+        1.3,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 71
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "EF_01",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": 1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "c6e4a1e3-64ec-4943-bb8b-7167ecb19e00#98f8eb3e-2bdb-49eb-92f5-b0dcc12fb777",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "c6e4a1e3-64ec-4943-bb8b-7167ecb19e00"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "98f8eb3e-2bdb-49eb-92f5-b0dcc12fb777"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 2,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "bcBF8JYxFGw4EqAxAdxxn9",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "collision1_center",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 75
+      }
+    ],
+    "_prefab": {
+      "__id__": 76
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 263.33,
+      "height": 217
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -290,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 74
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "EF_01",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": 1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "c6e4a1e3-64ec-4943-bb8b-7167ecb19e00#98f8eb3e-2bdb-49eb-92f5-b0dcc12fb777",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "c6e4a1e3-64ec-4943-bb8b-7167ecb19e00"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "98f8eb3e-2bdb-49eb-92f5-b0dcc12fb777"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 2,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "cb9rv/XcZPU7ABmNM9uT4w",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "btn_back",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 78
+      },
+      {
+        "__id__": 79
+      },
+      {
+        "__id__": 80
+      }
+    ],
+    "_prefab": {
+      "__id__": 82
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 72,
+      "height": 72
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -284,
+        724,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        0
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 77
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "39085558-07f9-4824-a45f-e4cb98a0ab65"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 77
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": null,
+    "_alignFlags": 9,
+    "_left": 40,
+    "_right": 0,
+    "_top": 40,
+    "_bottom": 0,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Button",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 77
+    },
+    "_enabled": true,
+    "_normalMaterial": {
+      "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+    },
+    "_grayMaterial": null,
+    "duration": 0.1,
+    "zoomScale": 1.1,
+    "clickEvents": [
+      {
+        "__id__": 81
+      }
+    ],
+    "_N$interactable": true,
+    "_N$enableAutoGrayEffect": false,
+    "_N$transition": 3,
+    "transition": 3,
+    "_N$normalColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_N$pressedColor": {
+      "__type__": "cc.Color",
+      "r": 211,
+      "g": 211,
+      "b": 211,
+      "a": 255
+    },
+    "pressedColor": {
+      "__type__": "cc.Color",
+      "r": 211,
+      "g": 211,
+      "b": 211,
+      "a": 255
+    },
+    "_N$hoverColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "hoverColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_N$disabledColor": {
+      "__type__": "cc.Color",
+      "r": 124,
+      "g": 124,
+      "b": 124,
+      "a": 255
+    },
+    "_N$normalSprite": null,
+    "_N$pressedSprite": null,
+    "pressedSprite": null,
+    "_N$hoverSprite": null,
+    "hoverSprite": null,
+    "_N$disabledSprite": null,
+    "_N$target": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.ClickEvent",
+    "target": {
+      "__id__": 1
+    },
+    "component": "",
+    "_componentId": "a5040De6pNP6JnSyRwXQ9z/",
+    "handler": "back",
+    "customEventData": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "8fut3hTwhL4JXRN8VLkEOO",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": null,
+    "_alignFlags": 45,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "a5040De6pNP6JnSyRwXQ9z/",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "block_prefab": {
+      "__uuid__": "169b0dc9-69c9-4883-b8fd-922d6bd038c5"
+    },
+    "blocks_node": {
+      "__id__": 57
+    },
+    "collision1s": [
+      {
+        "__id__": 69
+      },
+      {
+        "__id__": 75
+      },
+      {
+        "__id__": 72
+      }
+    ],
+    "collision2s": [
+      {
+        "__id__": 60
+      },
+      {
+        "__id__": 66
+      },
+      {
+        "__id__": 63
+      }
+    ],
+    "road_lights": [
+      {
+        "__id__": 11
+      },
+      {
+        "__id__": 17
+      },
+      {
+        "__id__": 14
+      }
+    ],
+    "keys": [
+      {
+        "__id__": 21
+      },
+      {
+        "__id__": 27
+      },
+      {
+        "__id__": 24
+      }
+    ],
+    "key_checks": [
+      {
+        "__id__": 29
+      },
+      {
+        "__id__": 33
+      },
+      {
+        "__id__": 31
+      }
+    ],
+    "keys_on": [
+      {
+        "__uuid__": "75bdbe65-34b5-4a83-935a-11ede2d4020c"
+      },
+      {
+        "__uuid__": "843aa179-08fc-4518-8b0b-063a3454b751"
+      },
+      {
+        "__uuid__": "75bdbe65-34b5-4a83-935a-11ede2d4020c"
+      }
+    ],
+    "keys_out": [
+      {
+        "__uuid__": "459df30b-e550-4d39-bc06-6d8f7c176fe3"
+      },
+      {
+        "__uuid__": "74f299ae-1248-45ef-b387-f34a55f5f80c"
+      },
+      {
+        "__uuid__": "459df30b-e550-4d39-bc06-6d8f7c176fe3"
+      }
+    ],
+    "block_long": {
+      "__id__": 41
+    },
+    "font_glown": {
+      "__id__": 52
+    },
+    "double_hit": {
+      "__id__": 55
+    },
+    "double_hit_fonts": [
+      {
+        "__uuid__": "8954f49a-b385-429c-b8aa-97523599ffc8"
+      },
+      {
+        "__uuid__": "af10fc0e-9dd7-45e2-a117-f9359c437a69"
+      }
+    ],
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "fileId": "58neyMoGhK+JyWaMJMemGa",
+    "sync": false
+  }
+]

+ 8 - 0
RhythmMaster/assets/prefab/game_page.prefab.meta

@@ -0,0 +1,8 @@
+{
+  "ver": "1.2.7",
+  "uuid": "80f9922c-0761-46d7-a192-85aae91da47d",
+  "optimizationPolicy": "AUTO",
+  "asyncLoadAssets": false,
+  "readonly": false,
+  "subMetas": {}
+}

+ 1054 - 0
RhythmMaster/assets/prefab/main_page.prefab

@@ -0,0 +1,1054 @@
+[
+  {
+    "__type__": "cc.Prefab",
+    "_name": "",
+    "_objFlags": 0,
+    "_native": "",
+    "data": {
+      "__id__": 1
+    },
+    "optimizationPolicy": 0,
+    "asyncLoadAssets": false,
+    "readonly": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "main_page",
+    "_objFlags": 0,
+    "_parent": null,
+    "_children": [
+      {
+        "__id__": 2
+      },
+      {
+        "__id__": 5
+      },
+      {
+        "__id__": 16
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 28
+      },
+      {
+        "__id__": 29
+      }
+    ],
+    "_prefab": {
+      "__id__": 30
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 720,
+      "height": 1600
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        360,
+        800,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "bg",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 3
+      }
+    ],
+    "_prefab": {
+      "__id__": 4
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 720,
+      "height": 1600
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "6cc0ac63-7eb2-42f8-8fd9-c141f9c97a11"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "1de54ac4-6bb5-413d-93ac-af764584a496"
+    },
+    "fileId": "84knCe9sVO7LtrLKD1QRSF",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "cover_flow",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 6
+      }
+    ],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 13
+      },
+      {
+        "__id__": 14
+      }
+    ],
+    "_prefab": {
+      "__id__": 15
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 686,
+      "height": 1167.2
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "mask",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [
+      {
+        "__id__": 7
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 10
+      },
+      {
+        "__id__": 11
+      }
+    ],
+    "_prefab": {
+      "__id__": 12
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 686,
+      "height": 1167.2
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "content",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 6
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 8
+      }
+    ],
+    "_prefab": {
+      "__id__": 9
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 686,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 7
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": null,
+    "_alignFlags": 40,
+    "_left": 0,
+    "_right": 0,
+    "_top": 583.6,
+    "_bottom": 583.6,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 300,
+    "_originalHeight": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "1de54ac4-6bb5-413d-93ac-af764584a496"
+    },
+    "fileId": "b6GRmJzP1GzY10v5aarAhv",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Mask",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 6
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_spriteFrame": null,
+    "_type": 0,
+    "_segments": 64,
+    "_N$alphaThreshold": 0.1,
+    "_N$inverted": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 6
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": null,
+    "_alignFlags": 45,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 686,
+    "_originalHeight": 1230,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "1de54ac4-6bb5-413d-93ac-af764584a496"
+    },
+    "fileId": "c1yDPPUIhKQ4t4bmdBecEl",
+    "sync": false
+  },
+  {
+    "__type__": "e49d7JL9ItHJbh3QIy5cHEs",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 5
+    },
+    "_enabled": true,
+    "content": {
+      "__id__": 7
+    },
+    "song_item": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.ScrollView",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 5
+    },
+    "_enabled": true,
+    "horizontal": false,
+    "vertical": true,
+    "inertia": true,
+    "brake": 0.75,
+    "elastic": false,
+    "bounceDuration": 0.23,
+    "scrollEvents": [],
+    "cancelInnerEvents": true,
+    "_N$content": {
+      "__id__": 7
+    },
+    "content": {
+      "__id__": 7
+    },
+    "_N$horizontalScrollBar": null,
+    "_N$verticalScrollBar": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "1de54ac4-6bb5-413d-93ac-af764584a496"
+    },
+    "fileId": "9fqsdRlCBJHqAjPwes7qVH",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "lock_test",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 17
+      }
+    ],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 24
+      },
+      {
+        "__id__": 26
+      }
+    ],
+    "_prefab": {
+      "__id__": 27
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 120,
+      "height": 60
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -290,
+        760,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Background",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 16
+    },
+    "_children": [
+      {
+        "__id__": 18
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 21
+      },
+      {
+        "__id__": 22
+      }
+    ],
+    "_prefab": {
+      "__id__": 23
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 120,
+      "height": 60
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Label",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 17
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 19
+      }
+    ],
+    "_prefab": {
+      "__id__": 20
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 0,
+      "g": 0,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 40
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 18
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "解锁",
+    "_N$string": "解锁",
+    "_fontSize": 24,
+    "_lineHeight": 40,
+    "_enableWrapText": false,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 1,
+    "_N$cacheMode": 1,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "1de54ac4-6bb5-413d-93ac-af764584a496"
+    },
+    "fileId": "0aLqLcmcJCHoOEA57H+EFA",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 17
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952"
+    },
+    "_type": 1,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 17
+    },
+    "_enabled": true,
+    "alignMode": 0,
+    "_target": null,
+    "_alignFlags": 45,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 100,
+    "_originalHeight": 40,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "1de54ac4-6bb5-413d-93ac-af764584a496"
+    },
+    "fileId": "7dC3QbzMNMSbDfs6yWqlBf",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Button",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 16
+    },
+    "_enabled": true,
+    "_normalMaterial": null,
+    "_grayMaterial": null,
+    "duration": 0.1,
+    "zoomScale": 1.2,
+    "clickEvents": [
+      {
+        "__id__": 25
+      }
+    ],
+    "_N$interactable": true,
+    "_N$enableAutoGrayEffect": false,
+    "_N$transition": 2,
+    "transition": 2,
+    "_N$normalColor": {
+      "__type__": "cc.Color",
+      "r": 230,
+      "g": 230,
+      "b": 230,
+      "a": 255
+    },
+    "_N$pressedColor": {
+      "__type__": "cc.Color",
+      "r": 200,
+      "g": 200,
+      "b": 200,
+      "a": 255
+    },
+    "pressedColor": {
+      "__type__": "cc.Color",
+      "r": 200,
+      "g": 200,
+      "b": 200,
+      "a": 255
+    },
+    "_N$hoverColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "hoverColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_N$disabledColor": {
+      "__type__": "cc.Color",
+      "r": 120,
+      "g": 120,
+      "b": 120,
+      "a": 200
+    },
+    "_N$normalSprite": {
+      "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952"
+    },
+    "_N$pressedSprite": {
+      "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+    },
+    "pressedSprite": {
+      "__uuid__": "e9ec654c-97a2-4787-9325-e6a10375219a"
+    },
+    "_N$hoverSprite": {
+      "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952"
+    },
+    "hoverSprite": {
+      "__uuid__": "f0048c10-f03e-4c97-b9d3-3506e1d58952"
+    },
+    "_N$disabledSprite": {
+      "__uuid__": "29158224-f8dd-4661-a796-1ffab537140e"
+    },
+    "_N$target": {
+      "__id__": 17
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.ClickEvent",
+    "target": {
+      "__id__": 5
+    },
+    "component": "",
+    "_componentId": "e49d7JL9ItHJbh3QIy5cHEs",
+    "handler": "tapSongLock",
+    "customEventData": ""
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 16
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": null,
+    "_alignFlags": 9,
+    "_left": 10,
+    "_right": 10,
+    "_top": 10,
+    "_bottom": 0,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "1de54ac4-6bb5-413d-93ac-af764584a496"
+    },
+    "fileId": "cdyxmWlRJMBYumL2B077q0",
+    "sync": false
+  },
+  {
+    "__type__": "18302pQ4xhJQo+7DDqSSh8s",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": null,
+    "_alignFlags": 45,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "1de54ac4-6bb5-413d-93ac-af764584a496"
+    },
+    "fileId": "39bdBZ8N5K0bMrqXYyTDYB",
+    "sync": false
+  }
+]

+ 8 - 0
RhythmMaster/assets/prefab/main_page.prefab.meta

@@ -0,0 +1,8 @@
+{
+  "ver": "1.2.7",
+  "uuid": "1de54ac4-6bb5-413d-93ac-af764584a496",
+  "optimizationPolicy": "AUTO",
+  "asyncLoadAssets": false,
+  "readonly": false,
+  "subMetas": {}
+}

+ 5174 - 0
RhythmMaster/assets/prefab/settle_page.prefab

@@ -0,0 +1,5174 @@
+[
+  {
+    "__type__": "cc.Prefab",
+    "_name": "",
+    "_objFlags": 0,
+    "_native": "",
+    "data": {
+      "__id__": 1
+    },
+    "optimizationPolicy": 0,
+    "asyncLoadAssets": false,
+    "readonly": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "settle_page",
+    "_objFlags": 0,
+    "_parent": null,
+    "_children": [
+      {
+        "__id__": 2
+      },
+      {
+        "__id__": 5
+      },
+      {
+        "__id__": 13
+      },
+      {
+        "__id__": 16
+      },
+      {
+        "__id__": 61
+      },
+      {
+        "__id__": 129
+      },
+      {
+        "__id__": 132
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 137
+      },
+      {
+        "__id__": 138
+      }
+    ],
+    "_prefab": {
+      "__id__": 139
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 720,
+      "height": 1600
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        360,
+        800,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "bg",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 3
+      }
+    ],
+    "_prefab": {
+      "__id__": 4
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 720,
+      "height": 1600
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "6cc0ac63-7eb2-42f8-8fd9-c141f9c97a11"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "afa7oGhx1GqIwzVrpQgh3v",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "titles",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 6
+      },
+      {
+        "__id__": 9
+      }
+    ],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 12
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 367,
+      "height": 195
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        442,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "title_win",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 7
+      }
+    ],
+    "_prefab": {
+      "__id__": 8
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 367,
+      "height": 195
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 6
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "0b10c2bc-562d-45bc-a7cf-d31f90a21900"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "88KoDDBJFCib7J2pmtNLl+",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "title_fail",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 10
+      }
+    ],
+    "_prefab": {
+      "__id__": 11
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 368,
+      "height": 195
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 9
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "e16f143f-803c-4280-b9ed-47b335b13edf"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "f9KjnoCelGLoNwS0JUQrr0",
+    "sync": false
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "4ae+fXGO5P04NAOtHervrV",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "point",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 14
+      }
+    ],
+    "_prefab": {
+      "__id__": 15
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 96,
+      "height": 17
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -310,
+        363.05,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 13
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "f8d41ecf-4cb5-4a06-85f2-03caabb48ba1"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "28KhoTYuZPBqp42op82/K+",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "topbar",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 17
+      },
+      {
+        "__id__": 23
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 59
+      }
+    ],
+    "_prefab": {
+      "__id__": 60
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 686,
+      "height": 238
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        215.05,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "photo",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 16
+    },
+    "_children": [
+      {
+        "__id__": 18
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 21
+      }
+    ],
+    "_prefab": {
+      "__id__": 22
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 183,
+      "height": 182
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        223,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "border",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 17
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 19
+      }
+    ],
+    "_prefab": {
+      "__id__": 20
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 201,
+      "height": 201
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 18
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "5b6314e6-5523-4968-88ee-5fd3b3903a59"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "cbggF4un1N07RWjV0whVbR",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 17
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "d92d2ea7-8d1f-458e-82ce-384e4bca5b91"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "a6v0yMHTpFV4j8tF+UZIGz",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "layout",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 16
+    },
+    "_children": [
+      {
+        "__id__": 24
+      },
+      {
+        "__id__": 31
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 57
+      }
+    ],
+    "_prefab": {
+      "__id__": 58
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 83.75,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -293,
+        55,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "sequence",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 23
+    },
+    "_children": [
+      {
+        "__id__": 25
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 28
+      },
+      {
+        "__id__": 29
+      }
+    ],
+    "_prefab": {
+      "__id__": 30
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 63.75,
+      "height": 51
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        31.875,
+        -25.821,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "label",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 24
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 26
+      }
+    ],
+    "_prefab": {
+      "__id__": 27
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 33.75,
+      "height": 40
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 25
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": true,
+    "_string": "1",
+    "_N$string": "1",
+    "_fontSize": 40,
+    "_lineHeight": 40,
+    "_enableWrapText": true,
+    "_N$file": {
+      "__uuid__": "4b9e59d9-e3cf-42c6-82df-ddb55ba60fce"
+    },
+    "_isSystemFontUsed": false,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 0,
+    "_N$verticalAlign": 0,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "fa9eJ9GC9EYY0vQyS2X55r",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 24
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "b0c29965-ae92-45d4-b11b-8c7c4d764713"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Layout",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 24
+    },
+    "_enabled": true,
+    "_layoutSize": {
+      "__type__": "cc.Size",
+      "width": 63.75,
+      "height": 51
+    },
+    "_resize": 1,
+    "_N$layoutType": 1,
+    "_N$cellSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 40
+    },
+    "_N$startAxis": 0,
+    "_N$paddingLeft": 15,
+    "_N$paddingRight": 15,
+    "_N$paddingTop": 0,
+    "_N$paddingBottom": 0,
+    "_N$spacingX": 0,
+    "_N$spacingY": 0,
+    "_N$verticalDirection": 1,
+    "_N$horizontalDirection": 0,
+    "_N$affectedByScale": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "82vI3OJupGN7QoT9p2Fr+s",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "song_stars",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 23
+    },
+    "_children": [
+      {
+        "__id__": 32
+      },
+      {
+        "__id__": 35
+      },
+      {
+        "__id__": 38
+      }
+    ],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 56
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 0,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        83.75,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "song",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 31
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 33
+      }
+    ],
+    "_prefab": {
+      "__id__": 34
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 283.44,
+      "height": 40.32
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -0.75,
+        -25.821,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 32
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "Not A Song For You",
+    "_N$string": "Not A Song For You",
+    "_fontSize": 32,
+    "_lineHeight": 32,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "aeOLM7Ar1FpLFlbg1KcNm6",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "starts_title",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 31
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 36
+      }
+    ],
+    "_prefab": {
+      "__id__": 37
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 63.78,
+      "height": 35.28
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -88,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 35
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "难度:",
+    "_N$string": "难度:",
+    "_fontSize": 28,
+    "_lineHeight": 28,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "a0I1zHy29BLpzuf/NP25s3",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "stars",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 31
+    },
+    "_children": [
+      {
+        "__id__": 39
+      },
+      {
+        "__id__": 42
+      },
+      {
+        "__id__": 45
+      },
+      {
+        "__id__": 48
+      },
+      {
+        "__id__": 51
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 54
+      }
+    ],
+    "_prefab": {
+      "__id__": 55
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 165,
+      "height": 29
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        72,
+        -90,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "star",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 38
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 40
+      }
+    ],
+    "_prefab": {
+      "__id__": 41
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 29,
+      "height": 29
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        14.5,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 39
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "cd128c9f-0c80-432d-a34d-10bcdb1bee87"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "16cjE3qlRPpZsRQcIaVC5u",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "star",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 38
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 43
+      }
+    ],
+    "_prefab": {
+      "__id__": 44
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 29,
+      "height": 29
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        48.5,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 42
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "cd128c9f-0c80-432d-a34d-10bcdb1bee87"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "9bpi7FtaVDXat7Er083mKJ",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "star",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 38
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 46
+      }
+    ],
+    "_prefab": {
+      "__id__": 47
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 29,
+      "height": 29
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        82.5,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 45
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "cd128c9f-0c80-432d-a34d-10bcdb1bee87"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "f4kvyqLfRFM4KT2049gk09",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "star",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 38
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 49
+      }
+    ],
+    "_prefab": {
+      "__id__": 50
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 29,
+      "height": 29
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        116.5,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 48
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "cd128c9f-0c80-432d-a34d-10bcdb1bee87"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "3eTSJV1WdNoYbkP7UvD4EM",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "star",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 38
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 52
+      }
+    ],
+    "_prefab": {
+      "__id__": 53
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 29,
+      "height": 29
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        150.5,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 51
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "cd128c9f-0c80-432d-a34d-10bcdb1bee87"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "acKc0lyn9NRbkDUgLSHwgu",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Layout",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 38
+    },
+    "_enabled": true,
+    "_layoutSize": {
+      "__type__": "cc.Size",
+      "width": 165,
+      "height": 29
+    },
+    "_resize": 1,
+    "_N$layoutType": 1,
+    "_N$cellSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 40
+    },
+    "_N$startAxis": 0,
+    "_N$paddingLeft": 0,
+    "_N$paddingRight": 0,
+    "_N$paddingTop": 0,
+    "_N$paddingBottom": 0,
+    "_N$spacingX": 5,
+    "_N$spacingY": 0,
+    "_N$verticalDirection": 1,
+    "_N$horizontalDirection": 0,
+    "_N$affectedByScale": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "591kne8ApMP6vR+FzMtSud",
+    "sync": false
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "d08LuNHX1CLrF9wG43Akl8",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Layout",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 23
+    },
+    "_enabled": true,
+    "_layoutSize": {
+      "__type__": "cc.Size",
+      "width": 83.75,
+      "height": 0
+    },
+    "_resize": 1,
+    "_N$layoutType": 1,
+    "_N$cellSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 40
+    },
+    "_N$startAxis": 0,
+    "_N$paddingLeft": 0,
+    "_N$paddingRight": 0,
+    "_N$paddingTop": 0,
+    "_N$paddingBottom": 0,
+    "_N$spacingX": 20,
+    "_N$spacingY": 0,
+    "_N$verticalDirection": 1,
+    "_N$horizontalDirection": 0,
+    "_N$affectedByScale": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "24hCBPQ6xJw4XPpyWEgyIh",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 16
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "a806e7f1-a14f-4ded-af84-2577fbec45b6"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "9euqn48FZHSYzrK7Mu3taL",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "panel",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 62
+      },
+      {
+        "__id__": 88
+      },
+      {
+        "__id__": 91
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 127
+      }
+    ],
+    "_prefab": {
+      "__id__": 128
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 686,
+      "height": 437
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -144.95,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "biref",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 61
+    },
+    "_children": [
+      {
+        "__id__": 63
+      },
+      {
+        "__id__": 66
+      },
+      {
+        "__id__": 68
+      },
+      {
+        "__id__": 71
+      },
+      {
+        "__id__": 73
+      },
+      {
+        "__id__": 76
+      },
+      {
+        "__id__": 78
+      },
+      {
+        "__id__": 81
+      },
+      {
+        "__id__": 83
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 86
+      }
+    ],
+    "_prefab": {
+      "__id__": 87
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 280.94,
+      "height": 80
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        85.839,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "score",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 62
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 64
+      }
+    ],
+    "_prefab": {
+      "__id__": 65
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 35.59,
+      "height": 50.4
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -122.675,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 63
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "0",
+    "_N$string": "0",
+    "_fontSize": 64,
+    "_lineHeight": 40,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "8dFTclnNlC7IAVp7GSzlb+",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "space",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 62
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 67
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 10,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -99.88,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "26X66dQCdFR5xkhkkfk2KJ",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "score_suffix",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 62
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 69
+      }
+    ],
+    "_prefab": {
+      "__id__": 70
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 28,
+      "height": 35.28
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -80.88,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 68
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "分",
+    "_N$string": "分",
+    "_fontSize": 28,
+    "_lineHeight": 28,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "c1COPuiANF3b5/2M7i/qlX",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "space",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 62
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 72
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 30,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -51.879999999999995,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "f5a+/d8WBAr7nyRWx2Jc4x",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "score_max_prefix",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 62
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 74
+      }
+    ],
+    "_prefab": {
+      "__id__": 75
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 120,
+      "height": 30.24
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        23.120000000000005,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 73
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "一历史最高",
+    "_N$string": "一历史最高",
+    "_fontSize": 24,
+    "_lineHeight": 24,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "05v0gfaElFiLQotga6QOgT",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "space",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 62
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 77
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 15,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        90.62,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "52Y21ekBlEkptsmue7JVse",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "score_max",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 62
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 79
+      }
+    ],
+    "_prefab": {
+      "__id__": 80
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 13.35,
+      "height": 30.24
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        104.795,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 78
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "0",
+    "_N$string": "0",
+    "_fontSize": 24,
+    "_lineHeight": 24,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "64+cIrPzpAz6Vgg4Qm9wOB",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "space",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 62
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 82
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 5,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        113.97,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "ee8mPzEOdOYYPVelGfZ8rW",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "score_max_suffix",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 62
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 84
+      }
+    ],
+    "_prefab": {
+      "__id__": 85
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 24,
+      "height": 30.24
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        128.47,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 83
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "分",
+    "_N$string": "分",
+    "_fontSize": 24,
+    "_lineHeight": 24,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "84A8piIWVBrKcUuU0Me5Vj",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Layout",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 62
+    },
+    "_enabled": true,
+    "_layoutSize": {
+      "__type__": "cc.Size",
+      "width": 280.94,
+      "height": 80
+    },
+    "_resize": 1,
+    "_N$layoutType": 1,
+    "_N$cellSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 40
+    },
+    "_N$startAxis": 0,
+    "_N$paddingLeft": 0,
+    "_N$paddingRight": 0,
+    "_N$paddingTop": 0,
+    "_N$paddingBottom": 0,
+    "_N$spacingX": 0,
+    "_N$spacingY": 0,
+    "_N$verticalDirection": 1,
+    "_N$horizontalDirection": 0,
+    "_N$affectedByScale": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "2dOpcrbCdAnJKuDMU15wUk",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "song",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 61
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 89
+      }
+    ],
+    "_prefab": {
+      "__id__": 90
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 283.44,
+      "height": 40.32
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        25,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 88
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "Not A Song For You",
+    "_N$string": "Not A Song For You",
+    "_fontSize": 32,
+    "_lineHeight": 32,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "5a5eiyL5ND6p7GPSKYCHsn",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "detail",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 61
+    },
+    "_children": [
+      {
+        "__id__": 92
+      },
+      {
+        "__id__": 101
+      },
+      {
+        "__id__": 104
+      },
+      {
+        "__id__": 113
+      },
+      {
+        "__id__": 116
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 125
+      }
+    ],
+    "_prefab": {
+      "__id__": 126
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 403,
+      "height": 70.48
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -80,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "item",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 91
+    },
+    "_children": [
+      {
+        "__id__": 93
+      },
+      {
+        "__id__": 96
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 99
+      }
+    ],
+    "_prefab": {
+      "__id__": 100
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 133,
+      "height": 70.47999999999999
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -135,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "key",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 92
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 94
+      }
+    ],
+    "_prefab": {
+      "__id__": 95
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 48,
+      "height": 30.24
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -1.0649999999999977,
+        20.119999999999997,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 93
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "击中",
+    "_N$string": "击中",
+    "_fontSize": 24,
+    "_lineHeight": 24,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "bcGm6Jja1ODa4ixugCwwjX",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "value",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 92
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 97
+      }
+    ],
+    "_prefab": {
+      "__id__": 98
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 13.35,
+      "height": 30.24
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -20.12,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 96
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "0",
+    "_N$string": "0",
+    "_fontSize": 24,
+    "_lineHeight": 24,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "a5grow6ONOvLAe1IWJl5p3",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Layout",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 92
+    },
+    "_enabled": true,
+    "_layoutSize": {
+      "__type__": "cc.Size",
+      "width": 133,
+      "height": 70.47999999999999
+    },
+    "_resize": 1,
+    "_N$layoutType": 2,
+    "_N$cellSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 40
+    },
+    "_N$startAxis": 0,
+    "_N$paddingLeft": 0,
+    "_N$paddingRight": 0,
+    "_N$paddingTop": 0,
+    "_N$paddingBottom": 0,
+    "_N$spacingX": 0,
+    "_N$spacingY": 10,
+    "_N$verticalDirection": 1,
+    "_N$horizontalDirection": 0,
+    "_N$affectedByScale": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "32X0WlunJJc6FtlUPQRELL",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "line",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 91
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 102
+      }
+    ],
+    "_prefab": {
+      "__id__": 103
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 2,
+      "height": 55
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -67.5,
+        -3,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 101
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "58jUcmQWlPPoYO+VL9zp4J",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "item",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 91
+    },
+    "_children": [
+      {
+        "__id__": 105
+      },
+      {
+        "__id__": 108
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 111
+      }
+    ],
+    "_prefab": {
+      "__id__": 112
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 133,
+      "height": 70.47999999999999
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "key",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 104
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 106
+      }
+    ],
+    "_prefab": {
+      "__id__": 107
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 48,
+      "height": 30.24
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -1.0649999999999977,
+        20.119999999999997,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 105
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "失误",
+    "_N$string": "失误",
+    "_fontSize": 24,
+    "_lineHeight": 24,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "24pwrvsYtJi4znfNt8ROWg",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "value",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 104
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 109
+      }
+    ],
+    "_prefab": {
+      "__id__": 110
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 13.35,
+      "height": 30.24
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -20.12,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 108
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "0",
+    "_N$string": "0",
+    "_fontSize": 24,
+    "_lineHeight": 24,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "42mZt8wPpMiZzXA2BUplB1",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Layout",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 104
+    },
+    "_enabled": true,
+    "_layoutSize": {
+      "__type__": "cc.Size",
+      "width": 133,
+      "height": 70.47999999999999
+    },
+    "_resize": 1,
+    "_N$layoutType": 2,
+    "_N$cellSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 40
+    },
+    "_N$startAxis": 0,
+    "_N$paddingLeft": 0,
+    "_N$paddingRight": 0,
+    "_N$paddingTop": 0,
+    "_N$paddingBottom": 0,
+    "_N$spacingX": 0,
+    "_N$spacingY": 10,
+    "_N$verticalDirection": 1,
+    "_N$horizontalDirection": 0,
+    "_N$affectedByScale": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "ab6Yn9gmNFL6Nx+OaCe0Q4",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "line",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 91
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 114
+      }
+    ],
+    "_prefab": {
+      "__id__": 115
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 2,
+      "height": 55
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        67.5,
+        -3,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 113
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "b3jQJhSuVG1Km+WdM0bo/D",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "item",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 91
+    },
+    "_children": [
+      {
+        "__id__": 117
+      },
+      {
+        "__id__": 120
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 123
+      }
+    ],
+    "_prefab": {
+      "__id__": 124
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 133,
+      "height": 70.47999999999999
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        135,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "key",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 116
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 118
+      }
+    ],
+    "_prefab": {
+      "__id__": 119
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 72,
+      "height": 30.24
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -1.0649999999999977,
+        20.119999999999997,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 117
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "卡路里",
+    "_N$string": "卡路里",
+    "_fontSize": 24,
+    "_lineHeight": 24,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "cbZ4AgnLRLtYBdX0mWmLiO",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "value",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 116
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 121
+      }
+    ],
+    "_prefab": {
+      "__id__": 122
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 215,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 13.35,
+      "height": 30.24
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -20.12,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 120
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "0",
+    "_N$string": "0",
+    "_fontSize": 24,
+    "_lineHeight": 24,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "42RNu8LpFHQ4hlNRB+8mi+",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Layout",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 116
+    },
+    "_enabled": true,
+    "_layoutSize": {
+      "__type__": "cc.Size",
+      "width": 133,
+      "height": 70.47999999999999
+    },
+    "_resize": 1,
+    "_N$layoutType": 2,
+    "_N$cellSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 40
+    },
+    "_N$startAxis": 0,
+    "_N$paddingLeft": 0,
+    "_N$paddingRight": 0,
+    "_N$paddingTop": 0,
+    "_N$paddingBottom": 0,
+    "_N$spacingX": 0,
+    "_N$spacingY": 10,
+    "_N$verticalDirection": 1,
+    "_N$horizontalDirection": 0,
+    "_N$affectedByScale": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "ddzsiZj1BPQIyb+Gu56X9n",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Layout",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 91
+    },
+    "_enabled": true,
+    "_layoutSize": {
+      "__type__": "cc.Size",
+      "width": 403,
+      "height": 70.48
+    },
+    "_resize": 1,
+    "_N$layoutType": 1,
+    "_N$cellSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 40
+    },
+    "_N$startAxis": 0,
+    "_N$paddingLeft": 0,
+    "_N$paddingRight": 0,
+    "_N$paddingTop": 0,
+    "_N$paddingBottom": 0,
+    "_N$spacingX": 0,
+    "_N$spacingY": 0,
+    "_N$verticalDirection": 1,
+    "_N$horizontalDirection": 0,
+    "_N$affectedByScale": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "e8eIwvlpxAa7Py7DlvarHI",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 61
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "6f8b8082-e168-4380-8fab-f2e867d7345b"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "f0YPBOr2JLQJermqFFaysy",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "point",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 130
+      }
+    ],
+    "_prefab": {
+      "__id__": 131
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 96,
+      "height": 17
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 1,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        310,
+        -387.95,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 129
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "f8d41ecf-4cb5-4a06-85f2-03caabb48ba1"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "c0JLSIlKtCTJ4DNKE3DFV6",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "back",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 133
+      },
+      {
+        "__id__": 134
+      }
+    ],
+    "_prefab": {
+      "__id__": 136
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 472,
+      "height": 115
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -464.95,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        0
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 132
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "6c4d2bb2-7f9c-467b-8b23-705368cb6370"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Button",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 132
+    },
+    "_enabled": true,
+    "_normalMaterial": {
+      "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+    },
+    "_grayMaterial": null,
+    "duration": 0.1,
+    "zoomScale": 1.1,
+    "clickEvents": [
+      {
+        "__id__": 135
+      }
+    ],
+    "_N$interactable": true,
+    "_N$enableAutoGrayEffect": false,
+    "_N$transition": 3,
+    "transition": 3,
+    "_N$normalColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_N$pressedColor": {
+      "__type__": "cc.Color",
+      "r": 211,
+      "g": 211,
+      "b": 211,
+      "a": 255
+    },
+    "pressedColor": {
+      "__type__": "cc.Color",
+      "r": 211,
+      "g": 211,
+      "b": 211,
+      "a": 255
+    },
+    "_N$hoverColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "hoverColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_N$disabledColor": {
+      "__type__": "cc.Color",
+      "r": 124,
+      "g": 124,
+      "b": 124,
+      "a": 255
+    },
+    "_N$normalSprite": null,
+    "_N$pressedSprite": null,
+    "pressedSprite": null,
+    "_N$hoverSprite": null,
+    "hoverSprite": null,
+    "_N$disabledSprite": null,
+    "_N$target": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.ClickEvent",
+    "target": {
+      "__id__": 1
+    },
+    "component": "",
+    "_componentId": "4888cr1MxxP04Naik9j27Lj",
+    "handler": "back",
+    "customEventData": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "52bWGtEORLZpUA73f/RQ5Q",
+    "sync": false
+  },
+  {
+    "__type__": "4888cr1MxxP04Naik9j27Lj",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "score_label": {
+      "__id__": 64
+    },
+    "score_max_label": {
+      "__id__": 79
+    },
+    "hit_label": {
+      "__id__": 97
+    },
+    "miss_label": {
+      "__id__": 109
+    },
+    "calorie_label": {
+      "__id__": 121
+    },
+    "sequence_label": {
+      "__id__": 26
+    },
+    "song_labels": [
+      {
+        "__id__": 33
+      },
+      {
+        "__id__": 89
+      }
+    ],
+    "stars_node": {
+      "__id__": 38
+    },
+    "photo_sprite": {
+      "__id__": 21
+    },
+    "titles": {
+      "__id__": 5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": null,
+    "_alignFlags": 45,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "fileId": "4d3vWg7ddPvYZO6Ny86wRQ",
+    "sync": false
+  }
+]

+ 8 - 0
RhythmMaster/assets/prefab/settle_page.prefab.meta

@@ -0,0 +1,8 @@
+{
+  "ver": "1.2.7",
+  "uuid": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f",
+  "optimizationPolicy": "AUTO",
+  "asyncLoadAssets": false,
+  "readonly": false,
+  "subMetas": {}
+}

+ 2112 - 0
RhythmMaster/assets/prefab/song_item.prefab

@@ -0,0 +1,2112 @@
+[
+  {
+    "__type__": "cc.Prefab",
+    "_name": "",
+    "_objFlags": 0,
+    "_native": "",
+    "data": {
+      "__id__": 1
+    },
+    "optimizationPolicy": 0,
+    "asyncLoadAssets": false,
+    "readonly": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "song_item",
+    "_objFlags": 0,
+    "_parent": null,
+    "_children": [
+      {
+        "__id__": 2
+      },
+      {
+        "__id__": 14
+      },
+      {
+        "__id__": 50
+      },
+      {
+        "__id__": 53
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 56
+      }
+    ],
+    "_prefab": {
+      "__id__": 57
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 686,
+      "height": 238
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "photo",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 3
+      },
+      {
+        "__id__": 6
+      },
+      {
+        "__id__": 9
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 12
+      }
+    ],
+    "_prefab": {
+      "__id__": 13
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 183,
+      "height": 182
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        223,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "border",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 2
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 4
+      }
+    ],
+    "_prefab": {
+      "__id__": 5
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 201,
+      "height": 201
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 3
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "5b6314e6-5523-4968-88ee-5fd3b3903a59"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "14X0IyuidFzqhEy/aB62CU",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "mask",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 2
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 7
+      }
+    ],
+    "_prefab": {
+      "__id__": 8
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 183,
+      "height": 182
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 6
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "9332a50e-3c59-4e70-a373-27f9ae01b877"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "3aJiUni6ZFl7JsobM42E22",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "lock",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 2
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 10
+      }
+    ],
+    "_prefab": {
+      "__id__": 11
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 48,
+      "height": 53
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 9
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "8ef60e89-5408-4336-bed1-066813f91540"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "9699J40x9F1rFHbus44rnu",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "d92d2ea7-8d1f-458e-82ce-384e4bca5b91"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "2a7rhKurJHrqWmeQhLRL/6",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "layout",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 15
+      },
+      {
+        "__id__": 22
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 48
+      }
+    ],
+    "_prefab": {
+      "__id__": 49
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 83.75,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -293,
+        80.821,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "sequence",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 14
+    },
+    "_children": [
+      {
+        "__id__": 16
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 19
+      },
+      {
+        "__id__": 20
+      }
+    ],
+    "_prefab": {
+      "__id__": 21
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 63.75,
+      "height": 51
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        31.875,
+        -25.821,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "label",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 15
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 17
+      }
+    ],
+    "_prefab": {
+      "__id__": 18
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 33.75,
+      "height": 40
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 16
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": true,
+    "_string": "1",
+    "_N$string": "1",
+    "_fontSize": 40,
+    "_lineHeight": 40,
+    "_enableWrapText": true,
+    "_N$file": {
+      "__uuid__": "4b9e59d9-e3cf-42c6-82df-ddb55ba60fce"
+    },
+    "_isSystemFontUsed": false,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 0,
+    "_N$verticalAlign": 0,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "b0+7vmOJ1JV56cgdtu0ekI",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 15
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "b0c29965-ae92-45d4-b11b-8c7c4d764713"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Layout",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 15
+    },
+    "_enabled": true,
+    "_layoutSize": {
+      "__type__": "cc.Size",
+      "width": 63.75,
+      "height": 51
+    },
+    "_resize": 1,
+    "_N$layoutType": 1,
+    "_N$cellSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 40
+    },
+    "_N$startAxis": 0,
+    "_N$paddingLeft": 15,
+    "_N$paddingRight": 15,
+    "_N$paddingTop": 0,
+    "_N$paddingBottom": 0,
+    "_N$spacingX": 0,
+    "_N$spacingY": 0,
+    "_N$verticalDirection": 1,
+    "_N$horizontalDirection": 0,
+    "_N$affectedByScale": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "3d9SufUShJSaxxOOLQlh+j",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "song_stars",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 14
+    },
+    "_children": [
+      {
+        "__id__": 23
+      },
+      {
+        "__id__": 26
+      },
+      {
+        "__id__": 29
+      }
+    ],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 47
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 0,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        83.75,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "song",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 22
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 24
+      }
+    ],
+    "_prefab": {
+      "__id__": 25
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 283.44,
+      "height": 40.32
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -0.75,
+        -25.821,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 23
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "Not A Song For You",
+    "_N$string": "Not A Song For You",
+    "_fontSize": 32,
+    "_lineHeight": 32,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "27jsaClZZKpZbsSn+9Lz7R",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "starts_title",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 22
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 27
+      }
+    ],
+    "_prefab": {
+      "__id__": 28
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 63.78,
+      "height": 35.28
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -79,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 26
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "难度:",
+    "_N$string": "难度:",
+    "_fontSize": 28,
+    "_lineHeight": 28,
+    "_enableWrapText": true,
+    "_N$file": null,
+    "_isSystemFontUsed": true,
+    "_spacingX": 0,
+    "_batchAsBitmap": false,
+    "_styleFlags": 0,
+    "_underlineHeight": 0,
+    "_N$horizontalAlign": 1,
+    "_N$verticalAlign": 1,
+    "_N$fontFamily": "Arial",
+    "_N$overflow": 0,
+    "_N$cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "42OD7AxGRKuqrdcPsy61/7",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "stars",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 22
+    },
+    "_children": [
+      {
+        "__id__": 30
+      },
+      {
+        "__id__": 33
+      },
+      {
+        "__id__": 36
+      },
+      {
+        "__id__": 39
+      },
+      {
+        "__id__": 42
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 45
+      }
+    ],
+    "_prefab": {
+      "__id__": 46
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 165,
+      "height": 29
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        72,
+        -80.821,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "star",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 29
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 31
+      }
+    ],
+    "_prefab": {
+      "__id__": 32
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 29,
+      "height": 29
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        14.5,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 30
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "cd128c9f-0c80-432d-a34d-10bcdb1bee87"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "984Hp790VFkZfFZetIfoHc",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "star",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 29
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 34
+      }
+    ],
+    "_prefab": {
+      "__id__": 35
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 29,
+      "height": 29
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        48.5,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 33
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "cd128c9f-0c80-432d-a34d-10bcdb1bee87"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "cfcdFgXbJEpKrbWrtWmGWH",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "star",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 29
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 37
+      }
+    ],
+    "_prefab": {
+      "__id__": 38
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 29,
+      "height": 29
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        82.5,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 36
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "cd128c9f-0c80-432d-a34d-10bcdb1bee87"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "d5zSmROK5MzIqcV8CvThoq",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "star",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 29
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 40
+      }
+    ],
+    "_prefab": {
+      "__id__": 41
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 29,
+      "height": 29
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        116.5,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 39
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "cd128c9f-0c80-432d-a34d-10bcdb1bee87"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "73FvgSkUBOgL1hcmYlNfSo",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "star",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 29
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 43
+      }
+    ],
+    "_prefab": {
+      "__id__": 44
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 29,
+      "height": 29
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        150.5,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 42
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "cd128c9f-0c80-432d-a34d-10bcdb1bee87"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "e1NR/RTbVO96re85PM0fal",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Layout",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 29
+    },
+    "_enabled": true,
+    "_layoutSize": {
+      "__type__": "cc.Size",
+      "width": 165,
+      "height": 29
+    },
+    "_resize": 1,
+    "_N$layoutType": 1,
+    "_N$cellSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 40
+    },
+    "_N$startAxis": 0,
+    "_N$paddingLeft": 0,
+    "_N$paddingRight": 0,
+    "_N$paddingTop": 0,
+    "_N$paddingBottom": 0,
+    "_N$spacingX": 5,
+    "_N$spacingY": 0,
+    "_N$verticalDirection": 1,
+    "_N$horizontalDirection": 0,
+    "_N$affectedByScale": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "96JNb1xNpOgaWgkd8YtTDx",
+    "sync": false
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "2c/+a0qwhE37a7nW/tI1Vx",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Layout",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 14
+    },
+    "_enabled": true,
+    "_layoutSize": {
+      "__type__": "cc.Size",
+      "width": 83.75,
+      "height": 0
+    },
+    "_resize": 1,
+    "_N$layoutType": 1,
+    "_N$cellSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 40
+    },
+    "_N$startAxis": 0,
+    "_N$paddingLeft": 0,
+    "_N$paddingRight": 0,
+    "_N$paddingTop": 0,
+    "_N$paddingBottom": 0,
+    "_N$spacingX": 20,
+    "_N$spacingY": 0,
+    "_N$verticalDirection": 1,
+    "_N$horizontalDirection": 0,
+    "_N$affectedByScale": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "a5oy8ReRNAkpoGe29nKRnu",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "point",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 51
+      }
+    ],
+    "_prefab": {
+      "__id__": 52
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 96,
+      "height": 17
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        200,
+        130,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 50
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "f8d41ecf-4cb5-4a06-85f2-03caabb48ba1"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "7cXEPpMzdDkpprXqtzhsKC",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "start",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 54
+      }
+    ],
+    "_prefab": {
+      "__id__": 55
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 472,
+      "height": 115
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -96,
+        -50,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 53
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "e1088328-2398-48ac-a458-1b7710ae4939"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "daF8+IJStHfpxaeEd1lgMX",
+    "sync": false
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "a806e7f1-a14f-4ded-af84-2577fbec45b6"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "5272b805-3158-4707-b940-ab34a292272b"
+    },
+    "fileId": "5089HtwbZO8aDfZq0zju1G",
+    "sync": false
+  }
+]

+ 8 - 0
RhythmMaster/assets/prefab/song_item.prefab.meta

@@ -0,0 +1,8 @@
+{
+  "ver": "1.2.7",
+  "uuid": "5272b805-3158-4707-b940-ab34a292272b",
+  "optimizationPolicy": "AUTO",
+  "asyncLoadAssets": false,
+  "readonly": false,
+  "subMetas": {}
+}

+ 12 - 0
RhythmMaster/assets/scene.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "65f9fa94-43df-4143-b382-746730bde72f",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 327 - 0
RhythmMaster/assets/scene/game.fire

@@ -0,0 +1,327 @@
+[
+  {
+    "__type__": "cc.SceneAsset",
+    "_name": "",
+    "_objFlags": 0,
+    "_native": "",
+    "scene": {
+      "__id__": 1
+    }
+  },
+  {
+    "__type__": "cc.Scene",
+    "_objFlags": 0,
+    "_parent": null,
+    "_children": [
+      {
+        "__id__": 2
+      }
+    ],
+    "_active": false,
+    "_components": [],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 0,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_is3DNode": true,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "autoReleaseAssets": false,
+    "_id": "99f984a4-a3da-4dd2-b091-ef398cf1a248"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Canvas",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 3
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 5
+      },
+      {
+        "__id__": 6
+      },
+      {
+        "__id__": 7
+      },
+      {
+        "__id__": 8
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 720,
+      "height": 1600
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        360,
+        800,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": "bcyyMb63xO+I5b8jKKv+Oo"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Main Camera",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 2
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 4
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 0,
+      "height": 0
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        341.8527186837586,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": "ddfgRdCR9P+4++PQk7lBX8"
+  },
+  {
+    "__type__": "cc.Camera",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 3
+    },
+    "_enabled": true,
+    "_cullingMask": 4294967295,
+    "_clearFlags": 7,
+    "_backgroundColor": {
+      "__type__": "cc.Color",
+      "r": 0,
+      "g": 0,
+      "b": 0,
+      "a": 255
+    },
+    "_depth": -1,
+    "_zoomRatio": 1,
+    "_targetTexture": null,
+    "_fov": 60,
+    "_orthoSize": 10,
+    "_nearClip": 1,
+    "_farClip": 4096,
+    "_ortho": true,
+    "_rect": {
+      "__type__": "cc.Rect",
+      "x": 0,
+      "y": 0,
+      "width": 1,
+      "height": 1
+    },
+    "_renderStages": 1,
+    "_alignWithScreen": true,
+    "_id": "35f7X25W9IcYRzT6vROI/4"
+  },
+  {
+    "__type__": "cc.Canvas",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_designResolution": {
+      "__type__": "cc.Size",
+      "width": 720,
+      "height": 1600
+    },
+    "_fitWidth": true,
+    "_fitHeight": false,
+    "_id": "3flT7SqWpPKay4k4zLG4Uh"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": null,
+    "_alignFlags": 45,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_id": "4aG/v3G5FN8I69r15Zfa5C"
+  },
+  {
+    "__type__": "b24dc91ziVFZrNWla3eHQQK",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "main_page": {
+      "__uuid__": "1de54ac4-6bb5-413d-93ac-af764584a496"
+    },
+    "game_page": {
+      "__uuid__": "80f9922c-0761-46d7-a192-85aae91da47d"
+    },
+    "settle_page": {
+      "__uuid__": "3ca13665-0f4b-4ddc-a9e4-0b95e10c618f"
+    },
+    "bg_music": {
+      "__uuid__": "0093befa-9b8e-47e9-8da5-834a7b8ecb85"
+    },
+    "button_effect": {
+      "__uuid__": "3d454151-69e9-4ed0-8d77-554a56ea3301"
+    },
+    "hit_effect": {
+      "__uuid__": "9101ea3e-e290-40cd-bfd1-17a8a7a98f1e"
+    },
+    "style": {
+      "__uuid__": "acc4ee21-9007-4286-b179-6b0dde5fa4a8"
+    },
+    "loading": {
+      "__uuid__": "cc8459eb-5885-43f3-83c5-e633b5146b10"
+    },
+    "song": null,
+    "debug": false,
+    "allSongRelease": false,
+    "_id": "aaPco+ffZEC74biaYK1Upa"
+  },
+  {
+    "__type__": "5c3dfXrw1tOUKZI8OrLnn++",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_id": "26mD3ObSVObpkF1/t9yfbV"
+  }
+]

+ 7 - 0
RhythmMaster/assets/scene/game.fire.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "1.2.8",
+  "uuid": "99f984a4-a3da-4dd2-b091-ef398cf1a248",
+  "asyncLoadAssets": false,
+  "autoReleaseAssets": false,
+  "subMetas": {}
+}

+ 12 - 0
RhythmMaster/assets/script.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "502aa642-a383-4da4-893f-9e346ee393d9",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 274 - 0
RhythmMaster/assets/script/GameConfig.ts

@@ -0,0 +1,274 @@
+import GamePage from "./page/GamePage";
+
+/**游戏全局配置 */
+export default class GameConfig {
+    /**歌曲资源-远程地址(OSS) */
+    // static remote_res: string = "https://yichael.oss-cn-beijing.aliyuncs.com/song/";
+    static remote_res: string = "http://110.43.54.43:888/msc/";
+    /**歌曲资源-版本号 */
+    static song_res_version: number = 4;
+    /**歌曲分数记录-版本号 */
+    static song_record_version: number = 4;
+
+    /**三个通道上的方块配置 */
+    static block_configs: BlockConfig[] = [
+        {
+            first_pos: cc.v2(-2, 405), 
+            final_pos: cc.v2(-495, -1150), 
+            first_scale: cc.v2(0, 0), 
+            final_scale: cc.v2(-2, 2), 
+            base_height: 0, 
+            random_height: 0,
+            move_time: 1.7,
+            float_time: 1,
+            ease_rate: 3
+        },
+        {
+            first_pos: cc.v2(0, 405), 
+            final_pos: cc.v2(0, -1150), 
+            first_scale: cc.v2(0, 0), 
+            final_scale: cc.v2(2, 2), 
+            base_height: 0, 
+            random_height: 0,
+            move_time: 1.7,
+            float_time: 1,
+            ease_rate: 3
+        },
+        {
+            first_pos: cc.v2(2, 405), 
+            final_pos: cc.v2(495, -1150), 
+            first_scale: cc.v2(0, 0), 
+            final_scale: cc.v2(2, 2), 
+            base_height: 0, 
+            random_height: 0,
+            move_time: 1.7,
+            float_time: 1,
+            ease_rate: 3
+        }
+    ];
+    /** 方块从出现直到击打线所需时间(过来时间)*/
+    static block_come_time: number = 1.3;
+
+    /**长条从出现直到击打线所需时间(过待机时间) */
+    static long_come_time: number = 1;
+    /**长条完全覆盖道路的时间(简称待机时间) */
+    static long_idle_time: number = 1;
+    /**长条逐渐变短直到消失的时间(离开时间) */
+    static long_out_time: number = 1;
+    /**长条出现的间隔时间 */
+    static beat_long_interval: number = 7.5;
+
+    /**击打区域的起始Y轴坐标 */
+    static end_line_y: number = -235;
+    /**击打区域的结束Y轴坐标 */
+    static fianl_line_y: number = -345;
+
+    /**击打碰撞特效配置 */
+    static collision_configs: CollisionConfig[] = [
+        {
+            posX_long: -195,
+            posY_long: -168,
+            scaleX: -1,
+            scaleY: 1
+        },
+        {
+            posX_long: 0,
+            posY_long: -168,
+            scaleX: 1,
+            scaleY: 1
+        },
+        {
+            posX_long: 195,
+            posY_long: -168,
+            scaleX: 1,
+            scaleY: 1
+        }
+    ];
+
+    /**歌曲列表信息 */
+    static song_infos: SongInfo[] = [
+        {id: 0, name: "Alf Deep", stars: 1},
+        {id: 1, name: "Pink Pineapple", stars: 1},
+        {id: 2, name: "LBOO", stars: 2},
+        {id: 3, name: "Bombs Away", stars: 2},
+        {id: 4, name: "Spice Girls", stars: 3},
+        {id: 5, name: "Corona", stars: 3},
+        {id: 6, name: "Groove Coverage", stars: 3},
+        {id: 7, name: "DJMuchY", stars: 4},
+        {id: 8, name: "Glee Cast", stars: 4},
+        {id: 9, name: "Michael Jackson", stars: 4},
+        {id: 10, name: "Diana Boncheva", stars: 5},
+    ];
+
+     /**根据歌曲难度限制节拍最小时间间隔(歌曲星数:节拍最小时间间隔) */
+    static song_star_limit_beat_min_interval = {
+        "1": 1.1,
+        "2": 0.9,
+        "3": 0.7,
+        "4": 0.5,
+        "5": 0.3
+    }
+
+    /**解锁下一首歌需要当前歌曲达到多少分 */
+    static song_unlock_need_score: number = 95; 
+
+    /**
+     * 方块运动类型
+     * -1:变加速(cocos缓动函数)
+     * 0:匀加速(音乐进度时间算位置)(时间复杂度O1)
+     * 1:变加速(音乐进度时间算位置)(时间复杂度Ot)
+     */
+    static block_motion_type: number = -1;
+
+    static init() {
+        for (let blockConfig of this.block_configs) {
+            let firstPos = blockConfig.first_pos;
+            let finalPos = blockConfig.final_pos;
+            let k = (firstPos.x - finalPos.x) / (firstPos.y - finalPos.y);
+            let y = this.end_line_y;
+            let x = firstPos.x - k * (firstPos.y - this.end_line_y);
+            //方块运动轨迹与击打线的交点
+            let linePos = cc.v2(x, y);
+            blockConfig.linePos = linePos;
+            //起点到击打线的位移
+            let toLineDistance = linePos.sub(firstPos).mag();
+            blockConfig.acc = this.findBestAcc(toLineDistance, this.block_come_time);
+        }
+    }
+
+    /**寻找最佳的加速度 */
+    static findBestAcc(distance: number, time: number): number {
+        if (this.block_motion_type == 0) {
+            return distance / Math.pow(time, 2) * 2;
+        } 
+        //为了后面减少运算量,先粗略找到比较接近的区间
+        let accRangeMin = null;
+        let accRangeMax = null;
+        for (let acc = 0; acc < 10000; acc += 10) {
+            let result = this.seekDistance(acc, time);
+            let dx = result - distance;
+            if (dx < 0) {
+                accRangeMin = acc;
+            } else if (dx > 0) {
+                accRangeMax = acc;
+                break;
+            } else {
+                return acc;
+            }
+        }
+        if (accRangeMin == null || accRangeMax == null) {
+            throw "寻找区间失败"
+        }
+        //在指定区间寻找最佳结果
+        for (let acc = accRangeMin; acc <= accRangeMax; acc += 0.001) {
+            let result = this.seekDistance(acc, time);
+            let dx = result - distance;
+            if (Math.abs(dx) < 0.1) {
+                return acc;
+            }
+        }
+        throw "找不到最佳加速度";
+    }
+
+    /**积分求变加速直线运动位移 */
+    static seekDistance(acc: number, time: number): number {
+        if (this.block_motion_type == 0) {
+            return 1 / 2 * acc * Math.pow(time, 2);
+        }
+        let dt = 0.001;
+        let v0 = 0;
+        let sum = 0;
+        for (let t = dt; t <= time; t += dt) {
+            let dv = 1 / 2 * acc * dt;
+            sum += v0 * dt + dv * dt;
+            v0 += dv;
+            //提高加速度
+            acc += dt * acc * 2;
+        }
+        return sum;
+    }
+
+    static getSongInfo(song_id: number): SongInfo {
+        let songInfo = null;
+        for (let song_info of this.song_infos) {
+            if (song_info.id == song_id) {
+                songInfo = song_info;
+                break;
+            }
+        }
+        return songInfo;
+    }
+
+    static getSongInfoIndex(song_id: number): number {
+        let index = -1;
+        for (let i = 0; i < this.song_infos.length; i++) {
+            if (this.song_infos[i].id == song_id) {
+                index = i;
+                break;
+            }
+        }
+        return index;
+    }
+}
+declare global {
+    /**Window全局变量配置 */
+    interface Window {
+        //游戏界面 */
+        game_page: GamePage;
+        /**游戏击打全中-暴露调试接口 */
+        game_all_hit: Function;
+        /**游戏加速完成-暴露调试接口 */
+        game_acc_finish: Function;
+        /**总得分-对接app接口 */
+        total_score: number;
+        /**总消耗卡路里-对接app接口 */
+        total_calorie: number;
+        /**卡路里消耗系数-对接app接口 */
+        calorieUnit: number;
+    }
+    /**方块配置 */
+    interface BlockConfig {
+        /**起始坐标 */
+        first_pos: cc.Vec2;
+        /**最终坐标,即方块消失时的坐标,屏幕外 */
+        final_pos: cc.Vec2;
+        /**起始缩放比率 */
+        first_scale: cc.Vec2;
+        /**最终缩放比率 */
+        final_scale: cc.Vec2;
+        /**基本高度,0则与地面齐平 */
+        base_height: number;
+        /**随机高度增量,方块的最终高度为基本高度+随机高度增量 */
+        random_height: number;
+        /**方块从起始坐标到最终坐标所需要的时间 */
+        move_time: number;
+        /**方块从地面飘到最终高度所需时间 */
+        float_time: number;
+        /**缓动缩放比率 */
+        ease_rate: number;
+        /**加速度 */
+        acc?: number;
+        /**方块运动轨迹与击打线的交点 */
+        linePos?: cc.Vec2;
+    }
+    /**击打碰撞特效配置 */
+    interface CollisionConfig {
+        //长条击打特效-X轴坐标
+        posX_long: number;
+        //长条极大特效-Y轴坐标
+        posY_long: number;
+        /**特效通用X轴缩放 */
+        scaleX: number;
+        /**特效通用Y轴缩放 */
+        scaleY: number;
+    }
+    /**歌曲信息 */
+    interface SongInfo {
+        /**歌曲ID */
+        id: number;
+        /**歌曲名称 */
+        name: string;
+        /**歌曲难度(星数表示) */
+        stars: number;
+    }
+}

+ 9 - 0
RhythmMaster/assets/script/GameConfig.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "8b385380-7970-438e-b81e-00e31b90bfbc",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 100 - 0
RhythmMaster/assets/script/GameMgr.ts

@@ -0,0 +1,100 @@
+import GameConfig from "./GameConfig";
+
+const {ccclass, property} = cc._decorator;
+
+@ccclass
+export default class GameMgr extends cc.Component {
+    @property({type: cc.Prefab})
+    main_page: cc.Prefab = null;
+    @property({type: cc.Prefab})
+    game_page: cc.Prefab = null;
+    @property({type: cc.Prefab})
+    settle_page: cc.Prefab = null;
+    @property({type: cc.AudioClip})
+    bg_music: cc.AudioClip = null;
+    @property({type: cc.AudioClip})
+    button_effect: cc.AudioClip = null;
+    @property({type: cc.AudioClip})
+    hit_effect: cc.AudioClip = null;
+    @property({type: cc.TextAsset})
+    style: cc.TextAsset = null;
+    @property({type: cc.TextAsset})
+    loading: cc.TextAsset = null;
+
+    @property({type: cc.AudioClip})
+    song: cc.AudioClip = null;
+    song_id: number = 0;
+    beats: number[] = [0.341,1.029,1.915,2.507,2.933,3.371,3.84,4.288,4.725,5.168,5.605,6.048,6.933,7.371,7.813,8.251,8.699,9.136,9.792,11.344,11.781,12.224,13.109,13.989,14.432,14.875,15.312,15.755,16.197,16.635,17.52,18.4,18.843,19.285,19.723,20.16,21.051,21.488,21.931,22.373,22.816,23.253,23.696,24.581,25.019,25.461,25.904,26.784,27.227,27.669,28.549,28.992,29.435,30.347,30.843,31.275,31.728,32.08,32.517,32.96,33.403,33.84,34.283,35.168,35.605,36.048,36.491,36.933,37.392,37.899,38.32,38.789,41.077,42.416];
+
+    @property
+    debug: boolean = false;
+    @property({tooltip: "是否解锁所有歌曲"})
+    allSongRelease: boolean = true;
+
+    static instance: GameMgr;
+
+    onLoad() {
+        GameMgr.instance = this;
+
+        GameConfig.init();
+        if (this.debug) {
+            this.addPage(this.game_page);
+        } else {
+            this.addPage(this.main_page);
+        }
+    }
+
+    start() {
+        document.head.innerHTML += this.style.text;
+        let splash = document.getElementById("splash");
+        splash.style.background = "none";
+        splash.innerHTML = this.loading.text;
+    }
+
+    addPage(page: cc.Prefab) {
+        let node = cc.instantiate(page);
+        this.node.addChild(node);
+    }
+
+    playEffect(sound: Sound, loop: boolean = false) {
+        cc.audioEngine.playEffect(this[sound], loop);
+    }
+
+    playMusic(sound: Sound, loop: boolean = true) {
+        cc.audioEngine.playMusic(this[sound], loop);
+    }
+
+    static getStorageScore(song_id: number): number {
+        let score = cc.sys.localStorage.getItem("song_id_" + song_id + "_v" + GameConfig.song_record_version);
+        if (score == null) {
+            score = 0;
+        } else {
+            try {
+                score = parseInt(score);
+            } catch(e) {
+                score = 0;
+            }
+            if (isNaN(score)) {
+                score = 0;
+            }
+        }
+        return score;
+    }
+
+    static setStorageScore(song_id: number, score: number) {
+        //如果该歌曲未解锁,则不保存成绩
+        let songIndex = GameConfig.getSongInfoIndex(song_id);
+        if (songIndex > 0) {
+            let lastSongScore = this.getStorageScore(GameConfig.song_infos[songIndex - 1].id);
+            if (lastSongScore < GameConfig.song_unlock_need_score) {
+                return;
+            }
+        }
+        cc.sys.localStorage.setItem("song_id_" + song_id  + "_v" + GameConfig.song_record_version, score);
+    }
+}
+export enum Sound {
+    bg_music = "bg_music",
+    button_effect = "button_effect",
+    hit_effect = "hit_effect"
+}

+ 9 - 0
RhythmMaster/assets/script/GameMgr.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "b24dcf75-ce25-4566-b356-95adde1d040a",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
RhythmMaster/assets/script/page.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "91cac7a4-1e4b-420d-8f4c-b5741d65356a",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 366 - 0
RhythmMaster/assets/script/page/GamePage.ts

@@ -0,0 +1,366 @@
+import GameConfig from "../GameConfig";
+import GameMgr, { Sound } from "../GameMgr";
+import Block from "./game_page/Block";
+import BlockLong from "./game_page/BlockLong";
+
+const {ccclass, property} = cc._decorator;
+
+@ccclass
+export default class GamePage extends cc.Component {
+    @property({type: cc.Prefab})
+    block_prefab: cc.Prefab = null;
+    @property({type: cc.Node})
+    blocks_node: cc.Node = null;
+    @property({type: dragonBones.ArmatureDisplay})
+    collision1s: dragonBones.ArmatureDisplay[] = [];
+    @property({type: dragonBones.ArmatureDisplay})
+    collision2s: dragonBones.ArmatureDisplay[] = [];
+    @property({type: cc.Node})
+    road_lights: cc.Node[] = [];
+    @property({type: cc.Sprite})
+    keys: cc.Sprite[] = [];
+    @property({type: cc.Node})
+    key_checks: cc.Node[] = [];
+    @property({type: cc.SpriteFrame})
+    keys_on: cc.SpriteFrame[] = [];
+    @property({type: cc.SpriteFrame})
+    keys_out: cc.SpriteFrame[] = [];
+    @property({type: BlockLong})
+    block_long: BlockLong = null;
+    @property({type: dragonBones.ArmatureDisplay})
+    font_glown: dragonBones.ArmatureDisplay = null;
+    @property({type: cc.Label})
+    double_hit: cc.Label = null;
+    @property({type: cc.Font})
+    double_hit_fonts: cc.Font[] = [];
+
+    //连击数
+    hitCount: number = 0;
+    //成功击中的节拍数
+    hitBeat: number = 0;
+    //已经消失的节拍数
+    overBeat: number = 0;
+    //开始时间
+    startTime: number;
+
+    music: cc.AudioClip;
+    music_id: number;
+    beats_index: number = 0;
+    beats: number[];
+    beats_long: number[];
+
+    static instance: GamePage;
+
+    onLoad() {
+        GamePage.instance = this;
+        
+        window.game_page = this;
+        window.game_all_hit = () => {
+            this.hitBeat = this.beats.length;
+        };
+        window.game_acc_finish = () => {
+            this.overBeat = this.beats.length;
+            this.gameOver();
+        };
+
+        this.music = GameMgr.instance.song;
+        this.beats = GameMgr.instance.beats;
+        
+        this.initBlockPool(5);
+
+        for (let collision of this.collision1s) {
+            collision.addEventListener(dragonBones.EventObject.COMPLETE, () => {
+                collision.node.active = false;
+            });
+        }
+
+        for (let i = 0; i < this.key_checks.length; i++) {
+            this.key_checks[i].on(cc.Node.EventType.TOUCH_START, () => {
+                this.onRoad(i);
+            });
+            this.key_checks[i].on(cc.Node.EventType.TOUCH_END, () => {
+                this.outRoad(i);
+            });
+            this.key_checks[i].on(cc.Node.EventType.TOUCH_CANCEL, () => {
+                this.outRoad(i);
+            });
+        }
+
+        //初始化发光动画监听
+        this.font_glown.addEventListener(dragonBones.EventObject.START, () => {
+            this.font_glown.node.opacity = 255;
+        });
+        this.font_glown.addEventListener(dragonBones.EventObject.COMPLETE, () => {
+            this.font_glown.node.opacity = 0;
+        });
+    }
+
+    onDestroy() {
+        window.game_page = null;
+    }
+
+    start() {
+        // //剔除紧密的节拍,控制节拍间最小间隔
+        // let beat_min_interval = GameConfig.song_star_limit_beat_min_interval[GameConfig.song_infos[GameMgr.instance.song_id].stars];
+        // for (let i = 1; i < this.beats.length; i++) {
+        //     if (this.beats[i] == undefined) {
+        //         break;
+        //     }
+        //     while (this.beats[i] != undefined && this.beats[i] - this.beats[i - 1] < beat_min_interval) {
+        //         this.beats.splice(i, 1);
+        //     }
+        // }
+
+        //动态设立长节拍触发点
+        this.beats_long = JSON.parse(JSON.stringify(this.beats));
+        // let var_time = 0;
+        // let record_indexes = [];
+        // for (let i = 1; i < this.beats_long.length; i++) {
+        //     let last_time = this.beats_long[i - 1]; 
+        //     if (var_time > GameConfig.beat_long_interval) {
+        //         // this.beats_long[i - 1] = -1;
+        //         var_time = 0;
+        //         record_indexes.push(i - 1);
+        //     }
+        //     var_time += this.beats_long[i] - last_time;
+        // }
+        // //新增需求,长条出现1~2次就好,那就取两次
+        // let beat_long_indexes = [];
+        // if (record_indexes.length >= 3) {
+        //     let record_pos1 = Math.floor(record_indexes.length * 1 / 3);
+        //     let record_pos2 = Math.floor(record_indexes.length * 2 / 3);
+        //     beat_long_indexes.push(record_indexes[record_pos1]);
+        //     beat_long_indexes.push(record_indexes[record_pos2]);
+        // } else {
+        //     beat_long_indexes = record_indexes;
+        // }
+        // for (let beat_long_index of beat_long_indexes) {
+        //     this.beats_long[beat_long_index] = -1;
+        // }
+
+        this.startTime = Date.now();
+        let first_time = this.beats[0] - GameConfig.block_come_time;
+        if (first_time < 0) {
+            for (let i = 0; i < this.beats.length; i++) {
+                let beat = this.beats[i];
+                if (beat - GameConfig.block_come_time < 0) {
+                    this.scheduleOnce(() => {
+                        this.addBlock(beat);
+                        this.beats_index++;
+                    }, (beat - GameConfig.block_come_time) - first_time);
+                } else {
+                    break;
+                }
+            }
+            this.scheduleOnce(() => {
+                this.music_id = cc.audioEngine.playMusic(this.music, false);
+            }, -first_time);
+        } else {
+            this.music_id = cc.audioEngine.playMusic(this.music, false);
+        }
+    }
+
+    update() {
+        if (this.music_id > -1) {
+            let music_progress_time = cc.audioEngine.getCurrentTime(this.music_id);
+            let beat_long = this.beats_long[this.beats_index];
+            if (beat_long < 0) {//当前节拍触发长条
+                if (this.beats[this.beats_index] - music_progress_time <= GameConfig.long_come_time) {
+                    let count = 0;
+                    let first_beat = this.beats[this.beats_index];
+                    for (let i = this.beats_index; i < this.beats.length; i++) {
+                        let d_value = this.beats[i] - first_beat
+                        // 退出时间x2,能够让长条退场过程中不会出现别的方块
+                        if (d_value <= GameConfig.long_idle_time + GameConfig.long_out_time * 2) {
+                            this.beats_index++;
+                            count++;
+                        } else {
+                            break;
+                        }
+                    }
+                    if (count > 0) {
+                        this.block_long.initCount = count;
+                        this.block_long.count = count;
+                        this.block_long.release();
+                    }
+                }
+            } else {
+                while (this.beats_index < this.beats.length && this.beats[this.beats_index] - music_progress_time <= GameConfig.block_come_time) {
+                    this.addBlock(this.beats[this.beats_index]);
+                    this.beats_index++;
+                }
+            }
+        }
+    }
+
+    block_pool: cc.NodePool = new cc.NodePool();
+
+    initBlockPool(count: number) {
+        for (let i = 0; i < count; ++i) {
+            let block = cc.instantiate(this.block_prefab);
+            this.block_pool.put(block);
+        }
+    }
+
+    getBlock(): cc.Node {
+        let block = null;
+        if (this.block_pool.size() > 0) {
+            block = this.block_pool.get();
+        } else { 
+            block = cc.instantiate(this.block_prefab);
+        }
+        return block;
+    }
+
+    putBlock(block: cc.Node) {
+        this.block_pool.put(block);
+    }
+
+    addBlock(beat: number) {
+        let node = this.getBlock();
+        this.blocks_node.addChild(node);
+        node.getComponent(Block).init(beat);
+    }
+
+    /**
+     * 拳击袋攻击次数统计,用于计算卡路里
+     */
+    checkHit_count: number = 0;
+    /**
+     * 拳击袋专用接口
+     */
+    checkHit() {
+        this.checkHit_count++;
+
+        let index = -1;
+        if (this.block_long.canHit) {
+            index = this.block_long.index;
+        } else {
+            let block = this.findBestBlock();
+            if (block) {
+                index = block.index;
+            }
+        } 
+        if (index > -1) {
+            this.key_checks[index].emit(cc.Node.EventType.TOUCH_START);
+            this.scheduleOnce(() => {
+                this.key_checks[index].emit(cc.Node.EventType.TOUCH_END);
+            }, 0.05);
+        }
+    }
+
+    /**寻找最佳的击打方块,目前是以离检测区域中点最近的为佳 */
+    findBestBlock(index?: number): Block {
+        let bestBlock = null;
+        let deltaY = 1 << 12;
+        let end_center_y = (GameConfig.end_line_y + GameConfig.fianl_line_y) / 2;
+        for (let node of this.blocks_node.children) {
+            let block = node.getComponent(Block);
+            if ((index == undefined || block.index == index) && block.existTime > 0.5) {
+                let dy = Math.abs(node.y - end_center_y);
+                if (dy < deltaY) {
+                    bestBlock = block;
+                    deltaY = dy;
+                }
+            }
+        }
+        return bestBlock;
+    }
+
+    checkHitRoad(index: number) {
+        let blockExplode = this.findBestBlock(index);
+        if (blockExplode instanceof Block) {
+            if (blockExplode.canHit(index)) {
+                this.hit();
+                this.countHitBeat(1);
+            }
+            blockExplode.addCollision();
+            return;
+        }
+        //长条击打检测
+        if (this.block_long.canHit && index == this.block_long.index) {
+            this.hit();
+            if (this.block_long.count > 0) {
+                this.countHitBeat(1);
+            }
+            this.block_long.count--;
+            let c: dragonBones.ArmatureDisplay = this.collision2s[this.block_long.index];
+            c.node.active = true;
+            let config = GameConfig.collision_configs[this.block_long.index];
+            c.node.setPosition(config.posX_long, config.posY_long);
+            c.node.setScale(config.scaleX, config.scaleY);
+            c.playAnimation("02", 1);
+        }
+    }
+
+    onRoad(index: number) {
+        this.keys[index].spriteFrame = this.keys_on[index];
+        this.road_lights[index].active = true;
+        this.checkHitRoad(index);
+    }
+
+    outRoad(index: number) {
+        this.keys[index].spriteFrame = this.keys_out[index];
+        this.road_lights[index].active = false;
+    }
+
+    miss() {
+        //新增,需求说连击不要断
+        // this.hitCount = 0;
+    }
+
+    hit() {
+        this.hitCount++;
+
+        let targetScale = [12, 7.5];
+        let targetScaleStartRate = 0.2;
+        let targetScaleEndRate = 0.25;
+        this.double_hit.node.opacity = 255;
+        this.double_hit.node.setScale(targetScale[0] * targetScaleStartRate, targetScale[1] * targetScaleStartRate);
+        this.double_hit.string = this.hitCount.toString();
+        this.double_hit.font = this.double_hit_fonts[1];
+        this.double_hit.node.stopAllActions();
+        this.double_hit.node.runAction(cc.sequence(
+            cc.scaleTo(0.1, targetScale[0], targetScale[1]),
+            cc.scaleTo(0.1, targetScale[0] * targetScaleEndRate, targetScale[1] * targetScaleEndRate),
+            cc.callFunc(() => {
+                this.double_hit.font = this.double_hit_fonts[0];
+            }),
+            cc.delayTime(0.23),
+            cc.fadeOut(0.23)
+        ));
+        
+        this.font_glown.timeScale = 2;
+        this.font_glown.playAnimation("01", 1);
+
+        // GameMgr.instance.playEffect(Sound.hit_effect);
+    }
+
+    countHitBeat(plus_value: number) {
+        this.hitBeat += plus_value;
+    }
+
+    countOverBeat(plus_value: number) {
+        this.overBeat += plus_value;
+        if (this.overBeat == this.beats.length) {
+            this.gameOver();
+        }
+    }
+
+    gameOver() {
+        cc.audioEngine.stopMusic();
+        this.scheduleOnce(() => {
+            GameMgr.instance.addPage(GameMgr.instance.settle_page);
+        }, 0.5);
+    } 
+
+    back() {
+        if (GameMgr.instance.debug) {
+            alert("如需重复测试,请关闭网页重新打开!")
+            return;
+        }
+        this.node.destroy();
+        GameMgr.instance.playEffect(Sound.button_effect);
+        GameMgr.instance.addPage(GameMgr.instance.main_page);
+    }
+}

+ 9 - 0
RhythmMaster/assets/script/page/GamePage.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "a50400de-ea93-4fe8-99d2-c91c1743dcff",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 48 - 0
RhythmMaster/assets/script/page/MainPage.ts

@@ -0,0 +1,48 @@
+import GameMgr, { Sound } from "../GameMgr";
+import GameConfig from "../GameConfig";
+
+const {ccclass, property} = cc._decorator;
+
+@ccclass
+export default class MainPage extends cc.Component {
+    static instance: MainPage;
+
+    onLoad() {
+        MainPage.instance = this;
+        GameMgr.instance.playMusic(Sound.bg_music);
+
+        cc.assetManager.loadRemote(GameConfig.remote_res + "songs.json?v=" + Date.now(), (err, res: cc.JsonAsset) => {
+            if (!err) {
+                GameConfig.song_infos = res.json;
+            }
+            this.node.getChildByName('cover_flow').active = true;
+        });
+    }
+
+    startGame(song_id: number) {
+        GameMgr.instance.song_id = song_id;
+        document.getElementById("splash").style.display = "block";
+        let completeCount = 0;
+        this.schedule(() => {
+            completeCount++;
+            document.getElementById("loading-text-div").innerHTML = "音乐加载中(" + completeCount + "%)";
+        }, 0.08, 98, 0);
+        let audio_url = GameConfig.remote_res + song_id + ".mp3?v=" + GameConfig.song_res_version;
+        let json_url = GameConfig.remote_res + song_id + ".json?v=" + GameConfig.song_res_version;
+        cc.loader.load([audio_url, json_url], (err) => {
+            if (!err) {
+                this.unscheduleAllCallbacks();
+                document.getElementById("loading-text-div").innerHTML = "音乐加载中(100%)";
+                this.scheduleOnce(() => {
+                    document.getElementById("splash").style.display = "none";
+                    GameMgr.instance.song = cc.loader.getRes(audio_url);
+                    GameMgr.instance.beats = cc.loader.getRes(json_url);
+                    GameMgr.instance.addPage(GameMgr.instance.game_page);
+                    cc.audioEngine.stopMusic();        
+                    this.node.destroy();
+                }, 0.3);
+            }
+        });
+        GameMgr.instance.playEffect(Sound.button_effect);
+    }
+}

+ 9 - 0
RhythmMaster/assets/script/page/MainPage.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "18302a50-e318-4942-8fbb-0c3a924a1f2c",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 122 - 0
RhythmMaster/assets/script/page/SettlePage.ts

@@ -0,0 +1,122 @@
+import GameMgr, { Sound } from "../GameMgr";
+import GamePage from "./GamePage";
+import GameConfig from "../GameConfig";
+
+const {ccclass, property} = cc._decorator;
+
+@ccclass
+export default class SettlePage extends cc.Component {
+    @property({type: cc.Label})
+    score_label: cc.Label = null;
+    @property({type: cc.Label})
+    score_max_label: cc.Label = null;
+    @property({type: cc.Label})
+    hit_label: cc.Label = null;
+    @property({type: cc.Label})
+    miss_label: cc.Label = null;
+    @property({type: cc.Label})
+    calorie_label: cc.Label = null;
+    @property({type: cc.Label})
+    sequence_label: cc.Label = null;
+    @property({type: cc.Label})
+    song_labels: cc.Label[] = [];
+    @property({type: cc.Node})
+    stars_node: cc.Node = null;
+    @property({type: cc.Sprite})
+    photo_sprite: cc.Sprite = null;
+    @property({type: cc.Node})
+    titles: cc.Node = null;
+
+    score: number = 0;
+    score_max: number = 0;
+    hit: number = 0;
+    miss: number = 0;
+    calorie: number = 0;
+
+    score_target: number = 0;
+    score_max_target: number = 0;
+    hit_target: number = 0;
+    miss_target: number = 0;
+    calorie_target: number = 0;
+
+    onLoad() {
+        let song_info = GameConfig.getSongInfo(GameMgr.instance.song_id);
+        this.sequence_label.string = (GameConfig.getSongInfoIndex(song_info.id) + 1).toString();
+        for (let label of this.song_labels) {
+            label.string = song_info.name;
+        }
+        for (let i = 0; i < this.stars_node.childrenCount; i++) {
+            if (i < song_info.stars) {
+                this.stars_node.children[i].active = true;
+            } else {
+                this.stars_node.children[i].active = false;
+            }
+        }
+        let imgUrl = GameConfig.remote_res + song_info.id + ".jpg?v=" + GameConfig.song_res_version;
+        cc.loader.load({url: imgUrl, type: "jpg"}, (err, texture) => {
+            if (!err) {
+                let photo_size = this.photo_sprite.node.getContentSize();
+                this.photo_sprite.spriteFrame = new cc.SpriteFrame(texture);
+                this.photo_sprite.node.setContentSize(photo_size);
+            }
+        });
+
+        this.score_target = Math.floor(GamePage.instance.hitBeat / GamePage.instance.overBeat * 100);
+        if (this.score_target < GameConfig.song_unlock_need_score) {
+            this.titles.children[1].active = true;
+        } else {
+            this.titles.children[0].active = true;
+        }
+        let score_max_storage = GameMgr.getStorageScore(GameMgr.instance.song_id);
+        if (this.score_target > score_max_storage) {
+            this.score_max_target = this.score_target; 
+            GameMgr.setStorageScore(GameMgr.instance.song_id, this.score_max_target);
+        } else {
+            this.score_max_target = score_max_storage;
+        }
+        this.hit_target = GamePage.instance.hitBeat;
+        this.miss_target = GamePage.instance.overBeat - GamePage.instance.hitBeat;
+        this.calorie_target = GamePage.instance.checkHit_count * window.calorieUnit;
+        this.calorie_target = parseFloat(this.calorie_target.toFixed(2));
+
+        cc.tween(this).to(1, {
+            score: this.score_target, 
+            score_max: this.score_max_target, 
+            hit: this.hit_target, 
+            miss: this.miss_target, 
+            calorie: this.calorie_target
+        } as any).start();
+
+        //app接口变量,计算得分
+        if (window.total_score === undefined) {
+            window.total_score = 1;
+        } else {
+            window.total_score += 1;
+        }
+        //app接口变量,计算卡路里
+        if (window.total_calorie === undefined) {
+            window.total_calorie = this.calorie_target;
+        } else {
+            window.total_calorie += this.calorie_target;
+        }
+    }
+
+    update() {
+        this.score_label.string = (this.score << 0).toString();
+        this.score_max_label.string = (this.score_max << 0).toString();
+        this.hit_label.string = (this.hit << 0).toString();
+        this.miss_label.string = (this.miss << 0).toString();
+        this.calorie_label.string = this.calorie.toFixed(2);
+    }
+
+    back() {
+        if (GameMgr.instance.debug) {
+            alert("如需重复测试,请关闭网页重新打开!")
+            return;
+        }
+        cc.find("Canvas/game_page").destroy();
+        cc.find("Canvas/settle_page").destroy();
+        GameMgr.instance.playEffect(Sound.button_effect);
+        GameMgr.instance.addPage(GameMgr.instance.main_page);
+    }
+}

+ 9 - 0
RhythmMaster/assets/script/page/SettlePage.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "4888caf5-331c-4fd3-835a-8a4f63dbb2e3",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
RhythmMaster/assets/script/page/game_page.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "ae7ef94e-ecd7-4551-b28e-1984384ce107",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 172 - 0
RhythmMaster/assets/script/page/game_page/Block.ts

@@ -0,0 +1,172 @@
+import GamePage from "../GamePage";
+import GameConfig from "../../GameConfig";
+
+const {ccclass, property} = cc._decorator;
+
+/**方块基类 */
+@ccclass
+export default class Block extends cc.Component {
+    @property({type: cc.Sprite})
+    private face: cc.Sprite = null;
+    @property({type: cc.SpriteFrame})
+    private face_sp: cc.SpriteFrame[] = [];
+
+    private type: Type;
+    private config: BlockConfig;
+
+    beat: number;//节奏时间点
+    index: number;
+    startTime: number = 0;
+    existTime: number = 0;
+    hasLogReachTime: boolean = false;
+
+    static seed: number = 0;
+
+    init(beat: number) {
+        this.beat = beat;
+        let random = Math.random();
+        this.index = random < 0.3 ? 0 : (random < 0.8 ? 1 : 2);
+        this.startTime = beat - GameConfig.block_come_time;
+        this.existTime = 0;
+        this.hasLogReachTime = false;
+
+        //如果长节拍存在,之后的方块节拍会在别的道路产出,不会占用同一道路
+        if (GamePage.instance.block_long.visiable) {
+            let indexes = [];
+            for (let i = 0; i < 3; i++) {
+                if (i != GamePage.instance.block_long.index) {
+                    indexes.push(i);
+                } 
+            }
+            this.index = indexes[Math.random() * indexes.length << 0];
+        }
+
+        this.config = GameConfig.block_configs[this.index];
+
+        this.type = Block.seed % 2 == 0 ? Type.blue : Type.orange;
+        Block.seed++;
+
+        if (this.index == 1) {
+            if (this.type == Type.blue) {
+                this.face.spriteFrame = this.face_sp[0];
+                this.face.node.setPosition(21.216, -104.576); //纠正新美术资源偏差
+            } else if (this.type == Type.orange) {
+                this.face.spriteFrame = this.face_sp[2];
+                this.face.node.setPosition(0, -97.419); //纠正新美术资源偏差
+            }
+        } else {
+            if (this.type == Type.blue) {
+                this.face.spriteFrame = this.face_sp[1];
+                this.face.node.setPosition(-8, -104.69); //纠正新美术资源偏差
+            } else if (this.type == Type.orange) {
+                this.face.spriteFrame = this.face_sp[3];
+                this.face.node.setPosition(0, -97.69); //纠正新美术资源偏差
+            }
+        }
+        
+        this.node.setPosition(this.config.first_pos);
+        this.node.setScale(this.config.first_scale);
+
+        if (GameConfig.block_motion_type < 0) {
+            this.node.runAction(cc.sequence(
+                cc.spawn(
+                    cc.moveTo(
+                        this.config.move_time, 
+                        this.config.final_pos
+                    ).easing(cc.easeIn(this.config.ease_rate)),
+                    cc.scaleTo(
+                        this.config.move_time, 
+                        this.config.final_scale.x, 
+                        this.config.final_scale.y
+                    ).easing(cc.easeIn(this.config.ease_rate))
+                ),
+                cc.callFunc(this.removeSelf, this)
+            ));
+        }
+    }
+
+    update(dt: number) {
+        this.existTime += dt;
+        this.node.zIndex = cc.winSize.height / 2 - this.node.y;
+
+        if (GameConfig.block_motion_type >= 0) {
+            let audioCurrentTime = cc.audioEngine.getCurrentTime(GamePage.instance.music_id);
+            let t = 0;
+            if (audioCurrentTime == 0) {
+                t = Date.now() - GamePage.instance.startTime - this.startTime;   
+            } else {
+                t = audioCurrentTime - this.startTime;
+            }
+            let distance = GameConfig.seekDistance(this.config.acc, t);
+            let vector = this.config.final_pos.sub(this.config.first_pos);
+            let mul = distance / vector.mag();
+            if (mul < 1) {
+                this.node.setPosition(this.config.first_pos.add(vector.mul(mul)));
+                this.node.setScale(this.config.final_scale.sub(this.config.first_scale).mul(mul));
+                if (this.existTime > 5) {
+                    this.removeSelf();
+                }
+            } else {
+                this.removeSelf();
+            }
+        }
+        
+        //输出方块到达击打线的所需时间
+        if (CC_DEBUG && !this.hasLogReachTime && this.node.y <= GameConfig.end_line_y + 3) {
+            this.hasLogReachTime = true;
+            // console.log(this.existTime);
+        }
+    }
+
+    removeSelf() {
+        GamePage.instance.putBlock(this.node);
+        GamePage.instance.miss();
+        GamePage.instance.countOverBeat(1);
+    }
+
+    /**判断是否在击打区域 */
+    canHit(index: number) {
+        let faultTolerance = 120;//容错距离
+        if (
+            this.index == index && 
+            this.node.y <= GameConfig.end_line_y + faultTolerance * 1.5 && 
+            this.node.y > GameConfig.fianl_line_y - faultTolerance * 0.5
+        ) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**添加打击碰撞特效 */
+    addCollision() {
+        this.node.stopAllActions();
+        GamePage.instance.putBlock(this.node);
+        // GamePage.instance.hit();
+        // GamePage.instance.countHitBeat(1);
+        GamePage.instance.countOverBeat(1);
+        
+        let c: dragonBones.ArmatureDisplay = null;
+        if (this.type == Type.blue) {
+            c = GamePage.instance.collision1s[this.index];
+        } else if (this.type == Type.orange) {
+            c = GamePage.instance.collision2s[this.index];
+        }
+        c.node.active = true;
+        let config = GameConfig.collision_configs[this.index];
+        // let rate = (GameConfig.end_line_y - this.node.y) / (GameConfig.end_line_y + cc.winSize.height / 2);
+        // let scale = rate * 0.2 + 1;
+        // c.node.setPosition(this.node.getPosition());
+        // c.node.setScale(config.scaleX * scale, config.scaleY * scale);
+
+        // c.node.setScale(config.scaleX, config.scaleY);
+        // c.node.setPosition(this.node.x, GameConfig.end_line_y);
+        c.node.setScale(config.scaleX * this.node.scaleY, config.scaleY * this.node.scaleY);
+        c.node.setPosition(this.node.x, this.node.y + 50 * this.node.scaleY);
+        c.playAnimation("01", 1);
+    }
+}
+enum Type {
+    blue,
+    orange
+}

+ 9 - 0
RhythmMaster/assets/script/page/game_page/Block.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "a370b63b-4486-4431-814a-9ba32d7c34cb",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 69 - 0
RhythmMaster/assets/script/page/game_page/BlockLong.ts

@@ -0,0 +1,69 @@
+import GamePage from "../GamePage";
+
+const {ccclass, property} = cc._decorator;
+
+/**长条基类 */
+@ccclass
+export default class BlockLong extends cc.Component {
+    @property({type: cc.Animation})
+    animation: cc.Animation = null;
+
+    /**是否可见 */
+    visiable: boolean = false;
+    /**能否被打击 */
+    canHit: boolean = false;
+    /**初始次数 */
+    initCount: number = 0;
+    /**剩余可击打次数 */
+    count: number = 0;
+    /**位置索引 */
+    index: number;
+
+    /**播放动画,开始该对象的逻辑 */
+    release() {
+        this.index = Math.random() * 3 << 0;
+
+        let block_long: BlockLong;
+        let animation_name: string;
+
+        if (this.index == 1) {
+            block_long = this.node.parent.getChildByName("block_long").getComponent(BlockLong);
+            animation_name = "block_long";
+        } else {
+            block_long = this.node.parent.getChildByName("block_long_side").getComponent(BlockLong);
+            animation_name = "block_long_side";
+        }
+
+        if (this.index == 0) {
+            block_long.node.x = -Math.abs(block_long.node.x);
+            block_long.node.scaleX = 1;
+        } else if (this.index == 2) {
+            block_long.node.x = Math.abs(block_long.node.x);
+            block_long.node.scaleX = -1;
+        }
+        
+        GamePage.instance.block_long = block_long;
+
+        block_long.index = this.index;
+        block_long.canHit = this.canHit;
+        block_long.initCount = this.initCount;
+        block_long.count = this.count;
+        block_long.visiable = true;
+        block_long.animation.play(animation_name);
+    }
+
+    /**刚进入击打线触发 */
+    reach() {
+        this.canHit = true;
+    }
+
+    /**完全离开击打线触发 */
+    leave() {
+        if (this.initCount == this.count) {
+            GamePage.instance.miss();
+        }
+        GamePage.instance.countOverBeat(this.initCount);
+        this.visiable = false;
+        this.canHit = false;
+    }
+}

+ 9 - 0
RhythmMaster/assets/script/page/game_page/BlockLong.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "407e658a-b501-4ae1-83a4-10d2dac7397b",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
RhythmMaster/assets/script/page/main_page.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "bc3b9ee5-9d6d-4ed9-8c94-e74cd6d50f52",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 228 - 0
RhythmMaster/assets/script/page/main_page/CoverFlow.ts

@@ -0,0 +1,228 @@
+import GameConfig from "../../GameConfig";
+import MainPage from "../MainPage";
+import GameMgr from "../../GameMgr";
+
+const {ccclass, property} = cc._decorator;
+
+@ccclass
+export default class CoverFlow extends cc.Component {
+    @property({type: cc.Node})
+    content: cc.Node = null;
+    @property({type: cc.Prefab})
+    song_item: cc.Prefab = null;
+
+    private sample_item: cc.Node;
+    private list_count: number;
+    private min_scale: number = 0.8;
+    private var_scale: number = 0.2;
+    private space_y: number = 30;
+
+    onLoad() {
+        this.allSongRelease = GameMgr.instance.allSongRelease;
+        this.content.height = 3000;
+
+        this.sample_item = cc.instantiate(this.song_item);
+        this.list_count = GameConfig.song_infos.length
+        for (let i = 0; i < 3; i++) {
+            this.addItem(GameConfig.song_infos[i], -1);
+        }
+        for (let i = GameConfig.song_infos.length - 1; i >= GameConfig.song_infos.length - 2; i--) {
+            this.addItem(GameConfig.song_infos[i], 1);
+        }
+    }
+
+    update() {
+        let max_node = this.getMaxNode();
+        if (max_node.y + this.content.y < this.node.height / 2) {
+            let id = parseInt(max_node.name);
+            if (id == GameConfig.song_infos[0].id) {
+                id = GameConfig.song_infos[this.list_count - 1].id;
+            } else {
+                let index = GameConfig.getSongInfoIndex(id);
+                id = GameConfig.song_infos[index - 1].id;
+            }
+            this.addItem(GameConfig.getSongInfo(id), 1);
+        }
+
+        let min_node = this.getMinNode();
+        if (min_node.y + this.content.y > -(this.node.height / 2)) {
+            let id = parseInt(min_node.name);
+            if (id == GameConfig.song_infos[this.list_count - 1].id) {
+                id = GameConfig.song_infos[0].id;
+            } else {
+                let index = GameConfig.getSongInfoIndex(id);
+                id = GameConfig.song_infos[index + 1].id;
+            }
+            this.addItem(GameConfig.getSongInfo(id), -1);
+        }
+
+        for (let child of this.content.children) {
+            if (
+                child.y + this.content.y > this.node.height / 2 + child.height + this.space_y ||
+                child.y + this.content.y < -this.node.height / 2 - child.height - this.space_y
+            ) {
+                child.destroy();
+            }
+        }
+
+        let item_start = {node: null, offset_y_abs: 10000};
+        let bounder_top_y = -(this.sample_item.height / 2);
+        let bounder_center_y = -(this.node.height / 2);
+        let bounder_bottom_y = -this.node.height + this.sample_item.height / 2;
+        this.content.children.forEach((child: cc.Node) => {
+            let view_y = child.y + this.content.y - this.node.height / 2;
+            if (view_y > bounder_center_y && view_y <= bounder_top_y) {
+                let rate = (bounder_top_y - view_y) / (bounder_top_y - bounder_center_y);
+                child.setScale(this.min_scale + rate * this.var_scale);
+                child.opacity = 155 + 100 * rate;
+            } else if (view_y > bounder_bottom_y && view_y <= bounder_center_y) {
+                let rate = (view_y - bounder_bottom_y) / (bounder_center_y - bounder_bottom_y);
+                child.setScale(this.min_scale + rate * this.var_scale);
+                child.opacity = 155 + 100 * rate;
+            } else {
+                child.setScale(this.min_scale);
+                child.opacity = 155;
+            }
+            let offset_y_abs = Math.abs(view_y - bounder_center_y);
+            if (offset_y_abs < item_start.offset_y_abs) {
+                item_start.node = child;
+                item_start.offset_y_abs = offset_y_abs;
+            }
+        });
+        for (let child of this.content.children) {
+            if (child == item_start.node && (!child.getChildByName("photo").getChildByName("lock").active || this.allSongRelease)) {
+                child.getChildByName("point").active = true;
+                child.getChildByName("start").active = true;
+            } else {
+                child.getChildByName("point").active = false;
+                child.getChildByName("start").active = false;
+            }
+        }
+
+        let rankList: cc.Node[] = [];
+        for (let child of this.content.children) {
+            rankList.push(child);
+        }
+        rankList.sort((a, b) => {
+            return a.y - b.y;
+        });
+        let main_index = rankList.indexOf(item_start.node);
+        for (let i = main_index - 1; i >= 0; i--) {
+            let a = rankList[i + 1];
+            let b = rankList[i];
+            b.y = a.y - a.height / 2 * a.scaleY - this.space_y - b.height / 2 * b.scaleY;  
+        }
+        for (let i = main_index + 1; i < rankList.length; i++) {
+            let a = rankList[i - 1];
+            let b = rankList[i];
+            b.y = a.y + a.height / 2 * a.scaleY + this.space_y + b.height / 2 * b.scaleY;  
+        }
+    }
+
+    addItem(song_info: SongInfo, directionY: number) {
+        let song_index = GameConfig.getSongInfoIndex(song_info.id); 
+        let item = cc.instantiate(this.song_item);
+        item.name = song_info.id.toString();
+        if (this.content.childrenCount == 0) {
+            item.setPosition(0, 0);
+        } else if (directionY < 0) {
+            item.setPosition(0, this.getMinNode().y - item.height - this.space_y);
+        } else if (directionY > 0) {
+            item.setPosition(0, this.getMaxNode().y + item.height + this.space_y);
+        }
+        item.setScale(this.min_scale);
+        item.getChildByName("layout").getChildByName("sequence").getChildByName("label").getComponent(cc.Label).string = 
+            (song_index + 1).toString();
+        item.getChildByName("layout").getChildByName("song_stars").getChildByName("song").getComponent(cc.Label).string = song_info.name;
+        let stars = item.getChildByName("layout").getChildByName("song_stars").getChildByName("stars");
+        for (let j = 0; j < stars.childrenCount; j++) {
+            if (j < song_info.stars) {
+                stars.children[j].active = true;
+            } else {
+                stars.children[j].active = false;
+            }
+        }
+        let imgUrl = GameConfig.remote_res + song_info.id + ".jpg?v=" + GameConfig.song_res_version;
+        cc.loader.load({url: imgUrl, type: "jpg"}, (err, texture) => {
+            if (!err) {
+                let photo = item.getChildByName("photo");
+                let photo_size = photo.getContentSize();
+                photo.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture);
+                photo.setContentSize(photo_size);
+            }
+        });
+        item.getChildByName("start").on(cc.Node.EventType.TOUCH_END, () => {
+            MainPage.instance.startGame(song_info.id);
+        });
+
+        //第一首歌默认解锁,后面的歌解锁要求上一首歌达到要求分数
+        let song_lock = false;
+        if (song_index > 0) {
+            let last_song_id = GameConfig.song_infos[song_index - 1].id;
+            song_lock = (GameMgr.getStorageScore(last_song_id) < GameConfig.song_unlock_need_score);
+        }
+        item.getChildByName("photo").getChildByName("mask").active = this.allSongRelease ? false : song_lock;
+        item.getChildByName("photo").getChildByName("lock").active = this.allSongRelease ? false : song_lock;
+
+        this.content.addChild(item);
+
+        this.resetHeight();
+    }
+
+    getMinNode() {
+        let node: cc.Node = null;
+        for (let child of this.content.children) {
+            if (node == null || child.y < node.y) {
+                node = child;
+            }
+        }
+        return node;
+    }
+
+    getMaxNode() {
+        let node: cc.Node = null;
+        for (let child of this.content.children) {
+            if (node == null || child.y > node.y) {
+                node = child;
+            }
+        }
+        return node;
+    }
+
+    resetHeight() {
+        let minY = this.getMinNode().y;
+        let maxY = this.getMaxNode().y;
+        let bestY = Math.abs(minY) < Math.abs(maxY) ? Math.abs(maxY) : Math.abs(minY);
+        let height = bestY * 2 + this.sample_item.height + 100;
+        this.content.height = height;
+    }
+
+    //是否解锁所有歌曲
+    allSongRelease: boolean = false;
+    tapSongLock(e: cc.Event) {
+        this.allSongRelease = this.allSongRelease ? false : true;
+        e.target.getChildByName("Background").getChildByName("Label").getComponent(cc.Label).string = this.allSongRelease ? "恢复" : "解锁";
+        if (this.allSongRelease) {
+            for (let item of this.content.children) {
+                item.getChildByName("photo").getChildByName("mask").active = false;
+                item.getChildByName("photo").getChildByName("lock").active = false;
+                item.getChildByName("point").active = true;
+                item.getChildByName("start").active = true;
+            }   
+        } else {
+            for (let item of this.content.children) {
+                let song_id = parseInt(item.name);
+                let song_lock = false;
+                let song_index = GameConfig.getSongInfoIndex(song_id); 
+                if (song_index > 0) {
+                    let last_song_id = GameConfig.song_infos[song_index - 1].id;
+                    song_lock = (GameMgr.getStorageScore(last_song_id) < GameConfig.song_unlock_need_score);
+                    item.getChildByName("photo").getChildByName("mask").active = song_lock;
+                    item.getChildByName("photo").getChildByName("lock").active = song_lock;
+                    item.getChildByName("point").active = !song_lock;
+                    item.getChildByName("start").active = !song_lock;
+                }
+            }
+        }
+    }
+}

+ 9 - 0
RhythmMaster/assets/script/page/main_page/CoverFlow.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "e49d724b-f48b-4725-b877-408cb970712c",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
RhythmMaster/assets/script/sdk.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "e57a2bf7-9198-4f77-b7cc-08c4425b0ef6",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 42 - 0
RhythmMaster/assets/script/sdk/Listener.js

@@ -0,0 +1,42 @@
+let webView = require("WebView");
+
+cc.Class({
+    extends: cc.Component,
+
+    onLoad() {
+        window.calorieUnit = 0.1;
+        if (window.uni) {
+            console.log("UNI环境");
+            console.log("webView-init");
+            webView.init(this.node);
+            console.log("webView-onAddQuitModalListener");
+            webView.onAddQuitModalListener();
+            console.log("webView-onBindBoxingPost");
+            webView.onBindBoxingPost();
+            this.node.on("onGameInit", this.onGameInit, this);
+            this.node.on("onBoxingPostHit", this.onBoxingPostHit, this);
+            this.node.on("onQuitModal", this.onQuitModal, this);
+        } else {
+            console.log("非UNI环境");
+        }
+    },
+
+    onGameInit(data) {
+        window.calorieUnit = data.calorieParams.hitUnit;
+    },
+
+    onBoxingPostHit(data) {
+        if (data.ename == "hit" && window.game_page) {
+            window.game_page.checkHit();
+        }
+    },
+
+    onQuitModal(data) {
+        if (data.data.confirm) {
+            if (window.total_score && window.total_calorie) {
+                webView.uploadInfo(1, "", window.total_calorie);
+            }
+            webView.closeGame();
+        }
+    }
+});

+ 9 - 0
RhythmMaster/assets/script/sdk/Listener.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "5c3df5eb-c35b-4e50-a648-f0eacb9e7fbe",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 366 - 0
RhythmMaster/assets/script/sdk/WebView.js

@@ -0,0 +1,366 @@
+window.onWebViewMessage = function(data){
+    let name= data.funName;
+    //比如下面请求了gameInit ,这里接收app 处理返回的数据
+    if(name == "onGameInit")
+    {
+        /**
+         * onGameInit
+         * 初始化游戏数据
+         * gameData :
+         * avatarUrl:"",//头像url
+         * avatarBase64Url:"",//base64字符串头像,后面以base64为主
+         * userName:"", //名字
+         * gender: 0,//"0:男,1:女"
+         * caloriUnit:10,//每次跳动消耗的卡路里
+         * calorieParams:{runUnit:10,jumpUnit:20}, //蹦床时候的参数
+         * device:null 或 {cname:'中文名',ename:'英文名',name:'设备原有名字'}//'当前选择的设备信息,没选择就为空'
+         */
+        console.log("onGameInit ==",data.gameData);
+        webView.onGameInit(data.gameData);
+    }
+    else if(name == "onUploadInfo")
+    {
+        /**
+         * 上传分数后的返回,
+         * gameData:
+         * {}
+         */
+        console.log("onUploadInfo ==",data.gameData);
+        webView.onUploadInfo(data.gameData);
+    }
+    else if(name == "onAiRandomInfo")//获取随机AI 头像 姓名等信息
+    {
+        /**
+         * 获取ai信息的数据回调
+         * aiId: 0, //ai的id
+         * aiName: "",//ai 的名字
+         * aiGender: 0,//"0:男,1:女"
+         * aiType: "",//网名类型
+         * aiAvatarBase64: ""//base64字符串,头像
+         */
+        console.log("onAiRandomInfo ==",data.gameData);
+        webView.onAiRandomInfo(data.gameData);
+    }
+    else if(name == "onFruitInfo")//获取水果列表
+    {
+        /**
+         * 获取水果图片信息
+         * fruitBase64: "",// 水果雪碧图 base64
+         * unitWidth: 100,// 雪碧图 单张图片宽
+         * unitHeight: 100,// 雪碧图 单张图片高
+         * unit: "px",// 雪碧图 单位
+         * imageStartPosY: 0,// 雪碧图 起始图 Y方向位置
+         * imageEndPosY: -1200,// 雪碧图 结束图 Y方向位置
+         * fruitIndexArray: [0,0,0] // 输入卡路里后计算的返回结果,当前的数组
+         */
+        console.log("onFruitInfo ==",data.gameData);
+        webView.onFruitInfo(data.gameData);
+    }
+    else if(name == "onDeviceUpdateData")//蹦床每次操作后传回来的指令
+    {
+        /**
+         * 设备连接成功后的返回值
+         * 蹦床的返回数值,有可能两种格式
+         * gameData:{F:2} , {H:-1,T:0}; //F:0:左 1:右  2:起跳  3:降落  -1: 无状态   T 0--无时间   -1:超时   H 0:左手 1:右手
+         */
+        console.log("onDeviceUpdateData ==",data.gameData);
+        webView.onDeviceUpdateData(data.gameData);
+    }
+    else if(name == "onDeviceState"){
+        /**
+         * 暂时只返回设备数据连接错误信息
+         * gamedata = {state: -1, 	msg: "设备数据错误"}
+         */
+        console.log("onDeviceState ==",data.gameData);
+        webView.onDeviceUpdateData(data.gameData);
+    }
+    else if(name == "onDeviceClose"){
+
+        /**
+         * 和设备断开连接时候回调
+         * gamedata = {msg: '设备断开连接。'}
+         */
+        console.log("onDeviceClose ==",data.gameData);
+        webView.onDeviceUpdateData(data.gameData);
+    }
+    else if(name == "onUrlToBase64"){
+        console.log("onUrlToBase64 ==",data.gameData);
+        webView.onUrlToBase64(data.gameData);
+    }
+    else if (name == "onWatchAccelerometer") {
+        /**
+         * 返回加速计的数据
+         * {
+         *      xAxis
+         *      yAxis
+         *      zAxis
+         * }
+         */
+        // console.log("onWatchAcc == ", data.gameData);
+        webView.onWatchAccelerometer(data.gameData);
+    }
+    else if (name == "onWatchOrientation") {
+        /**
+         * 返回加速计的数据
+         * {
+         *      xAxis
+         *      yAxis
+         *      zAxis
+         * }
+         */
+        // console.log("onWatchOri == ", data.gameData);
+        webView.onWatchOrientation(data.gameData);
+    }
+    else if(name == "onBoxingPostHit"){
+
+        console.log("onBoxingPostHit == ", data.gameData);
+        webView.onBoxingPostHit(data.gameData);
+    }
+    else if (name == "onQuit") {
+        console.log("onQuit == ", data.gameData);
+        webView.onQuit(data.gameData);
+    } else if (name == "onQuitModal") {
+        console.log("onQuitModal == ", data.gameData);
+        webView.onQuitModal(data.gameData);
+    }
+};
+
+let webView = {
+    bValid:false,
+    avatarBase64: null,
+    avatarSpriteFrame: null,
+    avatarUrl:'',
+    userName: '',
+    gender: 0,
+    rivalavatarBase64: null,
+    rivalAvatarSpriteFrame: null,
+    rivalavatarUrl:'',
+    rivalUserName: '',
+    rivalGender: 1,
+    listenerArr: [],
+    register(listener)//注册后实现对应的回调函数 可以监听到回调
+    {
+        //TODO
+        // 要判断对象是否已经注册过,如果存在不注册
+        this.listenerArr.push(listener);
+    },
+    unRegister(listener) {
+        //TODO
+        // 要判断对象是否已经注册过,如果存在才可以删除
+        this.remove(this.listenerArr, listener);
+    },
+    dispatchEvent(eventName, data)//把所有的监听事件分发给所有接收到回调的节点
+    {
+        for (let i = 0; i < this.listenerArr.length; i++) {
+            this.listenerArr[i].emit(eventName, data);
+        }
+    },
+    init(listener) {
+        this.bValid = true;
+        this.register(listener);//初始化的时候默认直接注册对象,不需要重复注册.
+        this.gameInitEvent();
+    },
+    gameInitEvent() {
+        // 向服务器自己获取初始化信息
+        uni.postMessage({
+            data: {
+                funName: "gameInit",
+                gameData: {}
+            }
+        });
+    },
+    InitLocal(gameData)//初始化自己的头像,姓名等信息
+    {
+        this.avatarUrl = gameData.avatarUrl;
+        this.avatarBase64 = gameData.avatarBase64Url;
+        this.userName = gameData.userName;
+        this.gender = gameData.gender;
+    },
+    uploadInfo(score, gameTime, calorie) {//最后胜利把信息发给服务器记录和统计
+        uni.postMessage({
+            data: {
+                funName: "uploadInfo",
+                gameData: {
+                    gameScore: score == "" ? 100 : score,//游戏得分
+                    gameTime: gameTime == "" ? 100 : gameTime,//单位秒
+                    calorieBurned: calorie == "" ? 1000 : calorie,//消耗的卡路里
+                }
+            }
+        });
+    },
+    getAiInfo(callback) {//获取随机AI信息
+        this.callback = callback;
+        uni.postMessage({
+            data: {
+                funName: "aiRandomInfo",
+                gameData: {}
+            }
+        })
+    },
+    getFruitInfo(calorie) {//获取水果
+        uni.postMessage({
+            data: {
+                funName: "fruitInfo",
+                gameData: {
+                    calorie: 1150
+                }
+            }
+        })
+    },
+    getBase64(url){
+        uni.postMessage({
+            data:{
+                funName:"urlToBase64",
+                gameData:{
+                    url:url
+                }
+            }
+        })
+    },
+    onBind() {
+
+        uni.postMessage({
+            data: {
+                funName: "openAccelerometer",
+                gameData: {}
+
+            }
+        })
+    },
+    onUnBind() {
+        uni.postMessage({
+            data: {
+                funName: "closeAccelerometer",
+                gameData: {}
+
+            }
+        })
+    },
+    onBindBoxingPost(){
+        uni.postMessage({
+            data: {
+                funName: "bindHitBoxingPost",
+                gameData: {}
+
+            }
+        })
+    },
+    closeGame(){
+        uni.postMessage({
+            data: {
+                funName: "closeGame",
+                gameData: {}
+
+            }
+        })
+    },
+    onAddQuitModalListener(){
+        
+        uni.postMessage({
+            data: {
+                funName: "addQuitModal",
+                gameData: {}
+
+            }
+        });
+    },
+    indexOf(arr, item) {//判断元素在数组第几位
+        for (let i = 0; i < arr.length; i++) {
+            if (arr[i] == item) return i;
+        }
+        return -1;
+    },
+    remove(arr, item) {//移除数组中制定元素
+        let index = arr.indexOf(item);
+        if (index > -1) {
+            arr.splice(index, 1);
+        }
+    },
+    // callBack
+    onGameInit(data) {
+        webView.InitLocal(data);
+        webView.dispatchEvent('onGameInit',data);
+    },
+    onUploadInfo(data) {
+        webView.dispatchEvent('onUploadInfo',data);
+    },
+    onAiRandomInfo(data) {
+        this.rivalavatarBase64 = data.aiAvatarBase64Url;
+        this.rivalUserName = data.aiName;
+        this.rivalGender = data.aiGender;
+
+        webView.dispatchEvent('onAiRandomInfo',data);
+    },
+    onFruitInfo(data) {
+        // this.setImageBase64(data.fruitBase64,function (texture) {
+        //
+        // });
+        webView.dispatchEvent('onFruitInfo',data);
+    },
+    onDeviceUpdateData(data) {
+        // if(!window.gameMode) return;
+        //
+        // if(data.F == 0)
+        // {
+        //     console.log("F == 0");
+        //     window.gameMode.pConSt1.speedUp();
+        //
+        // }else  if(data.F == 1)
+        // {
+        //     console.log("F == 1");
+        //     window.gameMode.pConSt1.speedUp();
+        // }
+        // else  if(data.F == 2)
+        // {
+        //     console.log("F == 2");
+        //     window.gameMode.pConSt1.jump();
+        // }
+        webView.dispatchEvent('onDeviceUpdateData',data);
+    },
+    onDeviceState(data) {
+        webView.dispatchEvent('onDeviceState',data);
+    },
+    onDeviceClose(data) {
+        webView.dispatchEvent('onDeviceClose',data);
+    },
+    onUrlToBase64(data)
+    {
+        webView.dispatchEvent('onUrlToBase64',data);
+    },
+    onWatchAccelerometer(data) {
+        /**
+         * 返回加速计的数据
+         * {
+         *      xAxis
+         *      yAxis
+         *      zAxis
+         * }
+         */
+        webView.dispatchEvent('onWatchAccelerometer',data);
+    },
+    onWatchOrientation(data)
+    {
+        /**
+         * 返回加速计的数据
+         * {
+         *      xAxis
+         *      yAxis
+         *      zAxis
+         * }
+         */
+        webView.dispatchEvent('onWatchOrientation',data);
+    },
+    onBoxingPostHit(data)
+    {
+        webView.dispatchEvent('onBoxingPostHit',data);
+    },
+    onQuit(data)
+    {
+        webView.dispatchEvent('onQuit',data);
+    },
+    onQuitModal(data)
+    {
+        webView.dispatchEvent('onQuitModal',data);
+    }
+};
+module.exports = webView;

+ 9 - 0
RhythmMaster/assets/script/sdk/WebView.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "472eaa9d-86b5-4dca-a0d8-f4b7a6fdecbe",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
RhythmMaster/assets/sound.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "c99001bf-9303-475a-9dc3-0cf24e80dbf2",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

BIN
RhythmMaster/assets/sound/bg_music.mp3


+ 7 - 0
RhythmMaster/assets/sound/bg_music.mp3.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "2.0.1",
+  "uuid": "0093befa-9b8e-47e9-8da5-834a7b8ecb85",
+  "downloadMode": 0,
+  "duration": 21.55102,
+  "subMetas": {}
+}

BIN
RhythmMaster/assets/sound/button_effect.mp3


+ 7 - 0
RhythmMaster/assets/sound/button_effect.mp3.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "2.0.1",
+  "uuid": "3d454151-69e9-4ed0-8d77-554a56ea3301",
+  "downloadMode": 0,
+  "duration": 0.324,
+  "subMetas": {}
+}

BIN
RhythmMaster/assets/sound/hit_effect.mp3


+ 7 - 0
RhythmMaster/assets/sound/hit_effect.mp3.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "2.0.1",
+  "uuid": "9101ea3e-e290-40cd-bfd1-17a8a7a98f1e",
+  "downloadMode": 0,
+  "duration": 0.255333,
+  "subMetas": {}
+}

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor