eraser 4 anni fa
commit
a3c04bee78
100 ha cambiato i file con 17273 aggiunte e 0 eliminazioni
  1. 53 0
      .gitignore
  2. 12 0
      assets/Animation.meta
  3. 12 0
      assets/Animation/Game.meta
  4. 111 0
      assets/Animation/Game/DotLoading.anim
  5. 5 0
      assets/Animation/Game/DotLoading.anim.meta
  6. 12 0
      assets/Animation/Game/Pumpkin.meta
  7. 0 0
      assets/Animation/Game/Pumpkin/nangua_ske.json
  8. 5 0
      assets/Animation/Game/Pumpkin/nangua_ske.json.meta
  9. 1 0
      assets/Animation/Game/Pumpkin/nangua_tex.json
  10. 5 0
      assets/Animation/Game/Pumpkin/nangua_tex.json.meta
  11. BIN
      assets/Animation/Game/Pumpkin/nangua_tex.png
  12. 36 0
      assets/Animation/Game/Pumpkin/nangua_tex.png.meta
  13. 12 0
      assets/Animation/Game/ReadyGo.meta
  14. BIN
      assets/Animation/Game/ReadyGo/ready-go.mp3
  15. 7 0
      assets/Animation/Game/ReadyGo/ready-go.mp3.meta
  16. 0 0
      assets/Animation/Game/ReadyGo/ready_0926_ske.json
  17. 5 0
      assets/Animation/Game/ReadyGo/ready_0926_ske.json.meta
  18. 0 0
      assets/Animation/Game/ReadyGo/ready_0926_tex.json
  19. 5 0
      assets/Animation/Game/ReadyGo/ready_0926_tex.json.meta
  20. BIN
      assets/Animation/Game/ReadyGo/ready_0926_tex.png
  21. 36 0
      assets/Animation/Game/ReadyGo/ready_0926_tex.png.meta
  22. 12 0
      assets/Animation/Matching.meta
  23. 385 0
      assets/Animation/Matching/bubble.anim
  24. 5 0
      assets/Animation/Matching/bubble.anim.meta
  25. 111 0
      assets/Animation/Matching/dot.anim
  26. 5 0
      assets/Animation/Matching/dot.anim.meta
  27. 84 0
      assets/Animation/Matching/matching.anim
  28. 5 0
      assets/Animation/Matching/matching.anim.meta
  29. 43 0
      assets/Animation/Matching/shootingStar.anim
  30. 5 0
      assets/Animation/Matching/shootingStar.anim.meta
  31. 12 0
      assets/Audios.meta
  32. 12 0
      assets/Audios/Pairing.meta
  33. BIN
      assets/Audios/Pairing/MatchSuccess.mp3
  34. 7 0
      assets/Audios/Pairing/MatchSuccess.mp3.meta
  35. BIN
      assets/Audios/bg.mp3
  36. 7 0
      assets/Audios/bg.mp3.meta
  37. BIN
      assets/Audios/hit.mp3
  38. 7 0
      assets/Audios/hit.mp3.meta
  39. BIN
      assets/Audios/miss.mp3
  40. 7 0
      assets/Audios/miss.mp3.meta
  41. 12 0
      assets/Scenes.meta
  42. 9120 0
      assets/Scenes/Game.fire
  43. 7 0
      assets/Scenes/Game.fire.meta
  44. 3254 0
      assets/Scenes/Pairing.fire
  45. 7 0
      assets/Scenes/Pairing.fire.meta
  46. 12 0
      assets/Scripts.meta
  47. 12 0
      assets/Scripts/Game.meta
  48. 165 0
      assets/Scripts/Game/Actor.js
  49. 9 0
      assets/Scripts/Game/Actor.js.meta
  50. 59 0
      assets/Scripts/Game/AiPlayerController.js
  51. 9 0
      assets/Scripts/Game/AiPlayerController.js.meta
  52. 10 0
      assets/Scripts/Game/AiPlayerStates.js
  53. 9 0
      assets/Scripts/Game/AiPlayerStates.js.meta
  54. 129 0
      assets/Scripts/Game/AudioController.js
  55. 9 0
      assets/Scripts/Game/AudioController.js.meta
  56. 12 0
      assets/Scripts/Game/Base.meta
  57. 154 0
      assets/Scripts/Game/Base/BasePlayerController.js
  58. 9 0
      assets/Scripts/Game/Base/BasePlayerController.js.meta
  59. 12 0
      assets/Scripts/Game/Base/BasePlayerStates.js
  60. 9 0
      assets/Scripts/Game/Base/BasePlayerStates.js.meta
  61. 14 0
      assets/Scripts/Game/BloodyFlash.js
  62. 9 0
      assets/Scripts/Game/BloodyFlash.js.meta
  63. 19 0
      assets/Scripts/Game/GameConfig.js
  64. 9 0
      assets/Scripts/Game/GameConfig.js.meta
  65. 185 0
      assets/Scripts/Game/GameMode.js
  66. 9 0
      assets/Scripts/Game/GameMode.js.meta
  67. 37 0
      assets/Scripts/Game/GameStates.js
  68. 9 0
      assets/Scripts/Game/GameStates.js.meta
  69. 11 0
      assets/Scripts/Game/MaskedProgressBar.js
  70. 9 0
      assets/Scripts/Game/MaskedProgressBar.js.meta
  71. 97 0
      assets/Scripts/Game/PlayerController.js
  72. 9 0
      assets/Scripts/Game/PlayerController.js.meta
  73. 7 0
      assets/Scripts/Game/PlayerStates.js
  74. 9 0
      assets/Scripts/Game/PlayerStates.js.meta
  75. 14 0
      assets/Scripts/Game/ProgressBar.js
  76. 9 0
      assets/Scripts/Game/ProgressBar.js.meta
  77. 77 0
      assets/Scripts/Game/Result.js
  78. 9 0
      assets/Scripts/Game/Result.js.meta
  79. 107 0
      assets/Scripts/Library.js
  80. 9 0
      assets/Scripts/Library.js.meta
  81. 12 0
      assets/Scripts/Matching.meta
  82. 259 0
      assets/Scripts/Matching/PairingMode.js
  83. 9 0
      assets/Scripts/Matching/PairingMode.js.meta
  84. 256 0
      assets/Scripts/Mgobe.js
  85. 9 0
      assets/Scripts/Mgobe.js.meta
  86. 12 0
      assets/Scripts/ThirdParty.meta
  87. 12 0
      assets/Scripts/ThirdParty/MGOBE.meta
  88. 1439 0
      assets/Scripts/ThirdParty/MGOBE/MGOBE.d.ts
  89. 5 0
      assets/Scripts/ThirdParty/MGOBE/MGOBE.d.ts.meta
  90. 0 0
      assets/Scripts/ThirdParty/MGOBE/MGOBE.js
  91. 9 0
      assets/Scripts/ThirdParty/MGOBE/MGOBE.js.meta
  92. 48 0
      assets/Scripts/ThirdParty/WebSocket.js
  93. 9 0
      assets/Scripts/ThirdParty/WebSocket.js.meta
  94. 412 0
      assets/Scripts/WebView.js
  95. 9 0
      assets/Scripts/WebView.js.meta
  96. 12 0
      assets/Textures.meta
  97. 12 0
      assets/Textures/Game.meta
  98. BIN
      assets/Textures/Game/BG.jpg
  99. 36 0
      assets/Textures/Game/BG.jpg.meta
  100. 12 0
      assets/Textures/Game/Food.meta

+ 53 - 0
.gitignore

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

+ 12 - 0
assets/Animation.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "82181d4b-019b-4b3a-9bbf-61a2b023c7c9",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 12 - 0
assets/Animation/Game.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "1aca6f5e-98ca-4498-9e72-d84994b8e8ba",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 111 - 0
assets/Animation/Game/DotLoading.anim

@@ -0,0 +1,111 @@
+{
+  "__type__": "cc.AnimationClip",
+  "_name": "DotLoading",
+  "_objFlags": 0,
+  "_native": "",
+  "_duration": 3.0166666666666666,
+  "sample": 60,
+  "speed": 2,
+  "wrapMode": 2,
+  "curveData": {
+    "paths": {
+      "LoadingLeftDot": {
+        "comps": {
+          "cc.Sprite": {
+            "spriteFrame": [
+              {
+                "frame": 0,
+                "value": {
+                  "__uuid__": "a22e8422-1a0c-4c57-b911-46b492db94ad"
+                }
+              },
+              {
+                "frame": 1,
+                "value": {
+                  "__uuid__": "cb1c0948-3b73-4a11-8267-15e96b4a153b"
+                }
+              },
+              {
+                "frame": 2,
+                "value": {
+                  "__uuid__": "4318b96e-1607-4e46-bf2d-6745a1ff1e1d"
+                }
+              },
+              {
+                "frame": 3,
+                "value": {
+                  "__uuid__": "a22e8422-1a0c-4c57-b911-46b492db94ad"
+                }
+              }
+            ]
+          }
+        }
+      },
+      "LoadingMiddleDot": {
+        "comps": {
+          "cc.Sprite": {
+            "spriteFrame": [
+              {
+                "frame": 0,
+                "value": {
+                  "__uuid__": "4318b96e-1607-4e46-bf2d-6745a1ff1e1d"
+                }
+              },
+              {
+                "frame": 1,
+                "value": {
+                  "__uuid__": "a22e8422-1a0c-4c57-b911-46b492db94ad"
+                }
+              },
+              {
+                "frame": 2,
+                "value": {
+                  "__uuid__": "cb1c0948-3b73-4a11-8267-15e96b4a153b"
+                }
+              },
+              {
+                "frame": 3,
+                "value": {
+                  "__uuid__": "4318b96e-1607-4e46-bf2d-6745a1ff1e1d"
+                }
+              }
+            ]
+          }
+        }
+      },
+      "LoadingRightDot": {
+        "comps": {
+          "cc.Sprite": {
+            "spriteFrame": [
+              {
+                "frame": 0,
+                "value": {
+                  "__uuid__": "cb1c0948-3b73-4a11-8267-15e96b4a153b"
+                }
+              },
+              {
+                "frame": 1,
+                "value": {
+                  "__uuid__": "4318b96e-1607-4e46-bf2d-6745a1ff1e1d"
+                }
+              },
+              {
+                "frame": 2,
+                "value": {
+                  "__uuid__": "a22e8422-1a0c-4c57-b911-46b492db94ad"
+                }
+              },
+              {
+                "frame": 3,
+                "value": {
+                  "__uuid__": "cb1c0948-3b73-4a11-8267-15e96b4a153b"
+                }
+              }
+            ]
+          }
+        }
+      }
+    }
+  },
+  "events": []
+}

+ 5 - 0
assets/Animation/Game/DotLoading.anim.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "2.1.0",
+  "uuid": "e2cf406b-7c9d-44c3-b036-ac08327903de",
+  "subMetas": {}
+}

+ 12 - 0
assets/Animation/Game/Pumpkin.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "5aae24ef-ae38-4655-8868-b8be9647788a",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

File diff suppressed because it is too large
+ 0 - 0
assets/Animation/Game/Pumpkin/nangua_ske.json


+ 5 - 0
assets/Animation/Game/Pumpkin/nangua_ske.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.1",
+  "uuid": "2176832d-3fa3-48f3-96dd-9d72e49868d1",
+  "subMetas": {}
+}

+ 1 - 0
assets/Animation/Game/Pumpkin/nangua_tex.json

@@ -0,0 +1 @@
+{"width":512,"SubTexture":[{"width":166,"y":1,"height":67,"name":"zhuangshi2_1","x":315},{"width":165,"y":1,"height":241,"name":"liandao","x":1},{"width":145,"y":1,"height":134,"name":"shenti1","x":168},{"width":18,"y":463,"height":27,"name":"zuiba3","x":423},{"frameY":0,"y":70,"frameWidth":117,"frameHeight":60,"width":117,"height":56,"name":"zuiba1","frameX":0,"x":315},{"frameY":-2,"y":427,"frameWidth":117,"frameHeight":60,"width":93,"height":54,"name":"zuiba2","frameX":-11,"x":196},{"frameY":-4,"y":463,"frameWidth":38,"frameHeight":36,"width":35,"height":29,"name":"yanj1","frameX":-2,"x":353},{"width":37,"y":427,"height":34,"name":"yanj4","x":353},{"width":60,"y":427,"height":61,"name":"yanj8","x":291},{"width":117,"y":427,"height":76,"name":"yanzhao","x":1},{"width":189,"y":244,"height":181,"name":"maozi3","x":1},{"width":200,"y":137,"height":89,"name":"mao3","x":168},{"width":75,"y":483,"height":12,"name":"hanshui2","x":196},{"width":74,"y":427,"height":72,"name":"EF1","x":120},{"width":31,"y":463,"height":31,"name":"xingxing","x":390},{"width":6,"y":483,"height":9,"name":"hanshui1","x":273}],"height":512,"name":"nangua","imagePath":"nangua_tex.png"}

+ 5 - 0
assets/Animation/Game/Pumpkin/nangua_tex.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.1",
+  "uuid": "9c84474c-5269-4102-ac4e-7a2239b336a0",
+  "subMetas": {}
+}

BIN
assets/Animation/Game/Pumpkin/nangua_tex.png


+ 36 - 0
assets/Animation/Game/Pumpkin/nangua_tex.png.meta

@@ -0,0 +1,36 @@
+{
+  "ver": "2.3.5",
+  "uuid": "83b1ebeb-3932-4ea5-8be7-f8506bb0deb0",
+  "type": "sprite",
+  "wrapMode": "clamp",
+  "filterMode": "bilinear",
+  "premultiplyAlpha": false,
+  "genMipmaps": false,
+  "packable": true,
+  "width": 512,
+  "height": 512,
+  "platformSettings": {},
+  "subMetas": {
+    "nangua_tex": {
+      "ver": "1.0.4",
+      "uuid": "a2df83ae-de20-4811-959c-47060bedc38f",
+      "rawTextureUuid": "83b1ebeb-3932-4ea5-8be7-f8506bb0deb0",
+      "trimType": "auto",
+      "trimThreshold": 1,
+      "rotated": false,
+      "offsetX": -15,
+      "offsetY": 4,
+      "trimX": 1,
+      "trimY": 1,
+      "width": 480,
+      "height": 502,
+      "rawWidth": 512,
+      "rawHeight": 512,
+      "borderTop": 0,
+      "borderBottom": 0,
+      "borderLeft": 0,
+      "borderRight": 0,
+      "subMetas": {}
+    }
+  }
+}

+ 12 - 0
assets/Animation/Game/ReadyGo.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "dd4e7b96-364f-4fad-a31b-af248ae4ab25",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

BIN
assets/Animation/Game/ReadyGo/ready-go.mp3


+ 7 - 0
assets/Animation/Game/ReadyGo/ready-go.mp3.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "2.0.1",
+  "uuid": "1f4fd3b0-eb74-4d70-aedf-148bae717b8e",
+  "downloadMode": 0,
+  "duration": 1.676,
+  "subMetas": {}
+}

File diff suppressed because it is too large
+ 0 - 0
assets/Animation/Game/ReadyGo/ready_0926_ske.json


+ 5 - 0
assets/Animation/Game/ReadyGo/ready_0926_ske.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.1",
+  "uuid": "e78c7977-867d-4e2c-9bf2-5bd1f56db6ba",
+  "subMetas": {}
+}

File diff suppressed because it is too large
+ 0 - 0
assets/Animation/Game/ReadyGo/ready_0926_tex.json


+ 5 - 0
assets/Animation/Game/ReadyGo/ready_0926_tex.json.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "1.0.1",
+  "uuid": "42d5a8b9-ff5b-48dd-a5a6-26d8f36fa528",
+  "subMetas": {}
+}

BIN
assets/Animation/Game/ReadyGo/ready_0926_tex.png


+ 36 - 0
assets/Animation/Game/ReadyGo/ready_0926_tex.png.meta

@@ -0,0 +1,36 @@
+{
+  "ver": "2.3.5",
+  "uuid": "838e131b-ecbd-4720-8367-255bdf45b5e6",
+  "type": "sprite",
+  "wrapMode": "clamp",
+  "filterMode": "bilinear",
+  "premultiplyAlpha": false,
+  "genMipmaps": false,
+  "packable": true,
+  "width": 1024,
+  "height": 2048,
+  "platformSettings": {},
+  "subMetas": {
+    "ready_0926_tex": {
+      "ver": "1.0.4",
+      "uuid": "fe35096a-adaf-4f8b-909b-99a7328ba0f3",
+      "rawTextureUuid": "838e131b-ecbd-4720-8367-255bdf45b5e6",
+      "trimType": "auto",
+      "trimThreshold": 1,
+      "rotated": false,
+      "offsetX": -0.5,
+      "offsetY": 272,
+      "trimX": 1,
+      "trimY": 1,
+      "width": 1021,
+      "height": 1502,
+      "rawWidth": 1024,
+      "rawHeight": 2048,
+      "borderTop": 0,
+      "borderBottom": 0,
+      "borderLeft": 0,
+      "borderRight": 0,
+      "subMetas": {}
+    }
+  }
+}

+ 12 - 0
assets/Animation/Matching.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "360f8326-2f01-4d65-a713-6e76750f6708",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 385 - 0
assets/Animation/Matching/bubble.anim

@@ -0,0 +1,385 @@
+{
+  "__type__": "cc.AnimationClip",
+  "_name": "bubble",
+  "_objFlags": 0,
+  "_native": "",
+  "_duration": 5.016666666666667,
+  "sample": 60,
+  "speed": 3,
+  "wrapMode": 2,
+  "curveData": {
+    "comps": {
+      "cc.Sprite": {
+        "spriteFrame": [
+          {
+            "frame": 0,
+            "value": {
+              "__uuid__": "aa8342b8-1f07-497b-8983-78cd428c6268"
+            }
+          },
+          {
+            "frame": 0.08333333333333333,
+            "value": {
+              "__uuid__": "12fb674b-2ff1-48a1-84b0-23a7002d00ce"
+            }
+          },
+          {
+            "frame": 0.16666666666666666,
+            "value": {
+              "__uuid__": "bbab860c-8f33-4a4d-b4b5-172c5bbf22a9"
+            }
+          },
+          {
+            "frame": 0.25,
+            "value": {
+              "__uuid__": "ea419db9-f672-4f43-bf59-170ee671736c"
+            }
+          },
+          {
+            "frame": 0.3333333333333333,
+            "value": {
+              "__uuid__": "7d330fc7-1e78-4c30-9f1e-2ef73baa8c0d"
+            }
+          },
+          {
+            "frame": 0.4166666666666667,
+            "value": {
+              "__uuid__": "afe18ddf-c6fd-473c-b8d0-bb05babe0025"
+            }
+          },
+          {
+            "frame": 0.5,
+            "value": {
+              "__uuid__": "5a8e82c2-073a-4ad7-bd42-3634f76650a1"
+            }
+          },
+          {
+            "frame": 0.5833333333333334,
+            "value": {
+              "__uuid__": "29294db3-0005-41a7-9371-2bd826ed9742"
+            }
+          },
+          {
+            "frame": 0.6666666666666666,
+            "value": {
+              "__uuid__": "fffbc2cd-31a0-4813-bf88-30ab2fa9ed90"
+            }
+          },
+          {
+            "frame": 0.75,
+            "value": {
+              "__uuid__": "f107d392-5ed6-4d18-821a-cbba64ffc55d"
+            }
+          },
+          {
+            "frame": 0.8333333333333334,
+            "value": {
+              "__uuid__": "19e4fcf7-2d8a-401c-b3fc-bbdf2e152bb5"
+            }
+          },
+          {
+            "frame": 0.9166666666666666,
+            "value": {
+              "__uuid__": "27a87ed5-b244-4d9a-a669-cfbe03519d03"
+            }
+          },
+          {
+            "frame": 1,
+            "value": {
+              "__uuid__": "458b964e-439a-43be-9077-31cfcfa7a62e"
+            }
+          },
+          {
+            "frame": 1.0833333333333333,
+            "value": {
+              "__uuid__": "99787e05-ad2b-447f-b1fe-afb4b7b85b70"
+            }
+          },
+          {
+            "frame": 1.1666666666666667,
+            "value": {
+              "__uuid__": "16d5bb07-f8ce-46b9-ade8-1f1dfc5af53c"
+            }
+          },
+          {
+            "frame": 1.25,
+            "value": {
+              "__uuid__": "fcbf7bc1-1f9b-443d-822c-76a73611aa3e"
+            }
+          },
+          {
+            "frame": 1.3333333333333333,
+            "value": {
+              "__uuid__": "442a94cf-92ae-4856-b1b9-546d37575a0e"
+            }
+          },
+          {
+            "frame": 1.4166666666666667,
+            "value": {
+              "__uuid__": "3f838a12-9801-4f59-9897-d017378499f7"
+            }
+          },
+          {
+            "frame": 1.5,
+            "value": {
+              "__uuid__": "8572ddac-c665-410f-851c-f5f55e093c23"
+            }
+          },
+          {
+            "frame": 1.5833333333333333,
+            "value": {
+              "__uuid__": "6edb2523-6437-42e7-88dd-4f32dcef5902"
+            }
+          },
+          {
+            "frame": 1.6666666666666667,
+            "value": {
+              "__uuid__": "57dd6253-9393-489c-971f-a3bcaf7605bc"
+            }
+          },
+          {
+            "frame": 1.75,
+            "value": {
+              "__uuid__": "70269fd1-c7c5-43e0-a7c1-264ccb0a9e5d"
+            }
+          },
+          {
+            "frame": 1.8333333333333333,
+            "value": {
+              "__uuid__": "eb8a76a2-0519-464f-91b0-9f7b9356b941"
+            }
+          },
+          {
+            "frame": 1.9166666666666667,
+            "value": {
+              "__uuid__": "9b93b5a7-2058-4cd0-8112-4a3050a69932"
+            }
+          },
+          {
+            "frame": 2,
+            "value": {
+              "__uuid__": "7190f777-be44-4e2b-9cf5-635a6de5d223"
+            }
+          },
+          {
+            "frame": 2.0833333333333335,
+            "value": {
+              "__uuid__": "8a74afb3-17d0-4923-9b9b-ca9795ec5aa6"
+            }
+          },
+          {
+            "frame": 2.1666666666666665,
+            "value": {
+              "__uuid__": "50aa6c22-feac-4bbe-9abf-bb9f512c8ab8"
+            }
+          },
+          {
+            "frame": 2.25,
+            "value": {
+              "__uuid__": "ed8eb13a-dacc-4a35-af51-249d6b7a3e5c"
+            }
+          },
+          {
+            "frame": 2.3333333333333335,
+            "value": {
+              "__uuid__": "6d205b23-d084-4785-aa0e-39788d0b17b2"
+            }
+          },
+          {
+            "frame": 2.4166666666666665,
+            "value": {
+              "__uuid__": "0c3cb9df-9112-49ad-b77d-9d33a507be38"
+            }
+          },
+          {
+            "frame": 2.5,
+            "value": {
+              "__uuid__": "2be95c9a-7920-423f-8e2c-cfcbd15435a3"
+            }
+          },
+          {
+            "frame": 2.5833333333333335,
+            "value": {
+              "__uuid__": "221c1674-b7fa-4004-ac34-220475267c32"
+            }
+          },
+          {
+            "frame": 2.6666666666666665,
+            "value": {
+              "__uuid__": "bd7c6a1a-94f0-40e4-a197-9dda5fad22e5"
+            }
+          },
+          {
+            "frame": 2.75,
+            "value": {
+              "__uuid__": "6a7a30f6-1719-483a-a075-c31105b6b419"
+            }
+          },
+          {
+            "frame": 2.8333333333333335,
+            "value": {
+              "__uuid__": "ac698444-a773-49e1-b041-fe0d465d8943"
+            }
+          },
+          {
+            "frame": 2.9166666666666665,
+            "value": {
+              "__uuid__": "3220f622-4565-4141-8a72-5ab1eeecce61"
+            }
+          },
+          {
+            "frame": 3,
+            "value": {
+              "__uuid__": "ec905783-3f92-4de5-b8fe-50961f659bee"
+            }
+          },
+          {
+            "frame": 3.0833333333333335,
+            "value": {
+              "__uuid__": "e904f13e-29d2-4897-af1d-4795f643ffba"
+            }
+          },
+          {
+            "frame": 3.1666666666666665,
+            "value": {
+              "__uuid__": "9568a9b4-db3a-42d5-9233-529e2f0f9327"
+            }
+          },
+          {
+            "frame": 3.25,
+            "value": {
+              "__uuid__": "988555dd-f50a-4b66-b224-f97faf20fb63"
+            }
+          },
+          {
+            "frame": 3.3333333333333335,
+            "value": {
+              "__uuid__": "5325e301-29fa-482b-b81f-a6b08607df87"
+            }
+          },
+          {
+            "frame": 3.4166666666666665,
+            "value": {
+              "__uuid__": "09fc9c4e-3683-4aaf-a6bd-2fdaf960820f"
+            }
+          },
+          {
+            "frame": 3.5,
+            "value": {
+              "__uuid__": "0f979b1e-1f43-4d2b-b698-432d09bfc877"
+            }
+          },
+          {
+            "frame": 3.5833333333333335,
+            "value": {
+              "__uuid__": "5a0c2040-457b-43b8-a597-63dc46c4220f"
+            }
+          },
+          {
+            "frame": 3.6666666666666665,
+            "value": {
+              "__uuid__": "82c41d8a-bc2b-451f-9fce-3a52c1c45fef"
+            }
+          },
+          {
+            "frame": 3.75,
+            "value": {
+              "__uuid__": "7e3e2013-c4c8-4fc3-aa59-361c8e2359f2"
+            }
+          },
+          {
+            "frame": 3.8333333333333335,
+            "value": {
+              "__uuid__": "5d2edc25-28f2-402c-90d9-584045908e68"
+            }
+          },
+          {
+            "frame": 3.9166666666666665,
+            "value": {
+              "__uuid__": "4df36432-2fe8-4871-adb1-6004d3957de3"
+            }
+          },
+          {
+            "frame": 4,
+            "value": {
+              "__uuid__": "e52d5c81-3c69-46ba-aa18-a66d6d016524"
+            }
+          },
+          {
+            "frame": 4.083333333333333,
+            "value": {
+              "__uuid__": "9871247c-cb2b-4a26-a209-8ea28480ed0b"
+            }
+          },
+          {
+            "frame": 4.166666666666667,
+            "value": {
+              "__uuid__": "fee9f846-2a91-435f-8fca-3ca454332b06"
+            }
+          },
+          {
+            "frame": 4.25,
+            "value": {
+              "__uuid__": "e76a5327-6653-417f-aa97-7aee828dc10e"
+            }
+          },
+          {
+            "frame": 4.333333333333333,
+            "value": {
+              "__uuid__": "953fd1cb-5e2d-461f-bb6a-0fd9b46a870a"
+            }
+          },
+          {
+            "frame": 4.416666666666667,
+            "value": {
+              "__uuid__": "5f435daf-b2e7-40a0-9f9c-2b301f1eb57c"
+            }
+          },
+          {
+            "frame": 4.5,
+            "value": {
+              "__uuid__": "aa8342b8-1f07-497b-8983-78cd428c6268"
+            }
+          },
+          {
+            "frame": 4.583333333333333,
+            "value": {
+              "__uuid__": "28469033-6c76-4e19-b3b2-3b75d2039a4b"
+            }
+          },
+          {
+            "frame": 4.666666666666667,
+            "value": {
+              "__uuid__": "9e426e13-62ca-46d9-b83e-b5d98f968e94"
+            }
+          },
+          {
+            "frame": 4.75,
+            "value": {
+              "__uuid__": "baa26f77-3d83-451e-99b4-f64b24333cdd"
+            }
+          },
+          {
+            "frame": 4.833333333333333,
+            "value": {
+              "__uuid__": "358d21c7-4341-4dc9-81f2-c61939bbe4d2"
+            }
+          },
+          {
+            "frame": 4.916666666666667,
+            "value": {
+              "__uuid__": "ac6223ad-78a9-4e28-8955-ab57c78b68b1"
+            }
+          },
+          {
+            "frame": 5,
+            "value": {
+              "__uuid__": "24cd083d-004f-4177-86eb-a564554be1d0"
+            }
+          }
+        ]
+      }
+    }
+  },
+  "events": []
+}

+ 5 - 0
assets/Animation/Matching/bubble.anim.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "2.1.0",
+  "uuid": "a4dc8dd1-0db5-441d-bf17-3dedf5c84a43",
+  "subMetas": {}
+}

+ 111 - 0
assets/Animation/Matching/dot.anim

@@ -0,0 +1,111 @@
+{
+  "__type__": "cc.AnimationClip",
+  "_name": "dot",
+  "_objFlags": 0,
+  "_native": "",
+  "_duration": 3.0166666666666666,
+  "sample": 60,
+  "speed": 1,
+  "wrapMode": 2,
+  "curveData": {
+    "paths": {
+      "LoadingLeftDot": {
+        "comps": {
+          "cc.Sprite": {
+            "spriteFrame": [
+              {
+                "frame": 0,
+                "value": {
+                  "__uuid__": "d57e9fdf-2fbf-4d31-8170-06e8ec564c79"
+                }
+              },
+              {
+                "frame": 1,
+                "value": {
+                  "__uuid__": "6afe5901-8c94-41f1-b2a1-4d7329f77c32"
+                }
+              },
+              {
+                "frame": 2,
+                "value": {
+                  "__uuid__": "0b9e2cd7-8c98-4c4a-bce6-98ee4e4389b5"
+                }
+              },
+              {
+                "frame": 3,
+                "value": {
+                  "__uuid__": "d57e9fdf-2fbf-4d31-8170-06e8ec564c79"
+                }
+              }
+            ]
+          }
+        }
+      },
+      "LoadingMiddleDot": {
+        "comps": {
+          "cc.Sprite": {
+            "spriteFrame": [
+              {
+                "frame": 0,
+                "value": {
+                  "__uuid__": "6afe5901-8c94-41f1-b2a1-4d7329f77c32"
+                }
+              },
+              {
+                "frame": 1,
+                "value": {
+                  "__uuid__": "0b9e2cd7-8c98-4c4a-bce6-98ee4e4389b5"
+                }
+              },
+              {
+                "frame": 2,
+                "value": {
+                  "__uuid__": "d57e9fdf-2fbf-4d31-8170-06e8ec564c79"
+                }
+              },
+              {
+                "frame": 3,
+                "value": {
+                  "__uuid__": "6afe5901-8c94-41f1-b2a1-4d7329f77c32"
+                }
+              }
+            ]
+          }
+        }
+      },
+      "LoadingRightDot": {
+        "comps": {
+          "cc.Sprite": {
+            "spriteFrame": [
+              {
+                "frame": 0,
+                "value": {
+                  "__uuid__": "0b9e2cd7-8c98-4c4a-bce6-98ee4e4389b5"
+                }
+              },
+              {
+                "frame": 1,
+                "value": {
+                  "__uuid__": "d57e9fdf-2fbf-4d31-8170-06e8ec564c79"
+                }
+              },
+              {
+                "frame": 2,
+                "value": {
+                  "__uuid__": "6afe5901-8c94-41f1-b2a1-4d7329f77c32"
+                }
+              },
+              {
+                "frame": 3,
+                "value": {
+                  "__uuid__": "0b9e2cd7-8c98-4c4a-bce6-98ee4e4389b5"
+                }
+              }
+            ]
+          }
+        }
+      }
+    }
+  },
+  "events": []
+}

+ 5 - 0
assets/Animation/Matching/dot.anim.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "2.1.0",
+  "uuid": "e6eaf390-c69a-4c3b-9b04-a9a1edcb79da",
+  "subMetas": {}
+}

+ 84 - 0
assets/Animation/Matching/matching.anim

@@ -0,0 +1,84 @@
+{
+  "__type__": "cc.AnimationClip",
+  "_name": "matching",
+  "_objFlags": 0,
+  "_native": "",
+  "_duration": 4,
+  "sample": 60,
+  "speed": 1,
+  "wrapMode": 2,
+  "curveData": {
+    "paths": {
+      "Player2": {
+        "comps": {},
+        "props": {
+          "y": [
+            {
+              "frame": 0,
+              "value": 42.118
+            },
+            {
+              "frame": 1,
+              "value": -5.86
+            },
+            {
+              "frame": 3,
+              "value": 82.794
+            },
+            {
+              "frame": 4,
+              "value": 43.16
+            }
+          ]
+        }
+      },
+      "Player3": {
+        "comps": {},
+        "props": {
+          "y": [
+            {
+              "frame": 0,
+              "value": -134.619
+            },
+            {
+              "frame": 1.0166666666666666,
+              "value": -97.666
+            },
+            {
+              "frame": 3,
+              "value": -180.194
+            },
+            {
+              "frame": 4,
+              "value": -133.387
+            }
+          ]
+        }
+      },
+      "Player4": {
+        "comps": {},
+        "props": {
+          "y": [
+            {
+              "frame": 0,
+              "value": -254.711
+            },
+            {
+              "frame": 1,
+              "value": -325.992
+            },
+            {
+              "frame": 3.0166666666666666,
+              "value": -199.433
+            },
+            {
+              "frame": 4,
+              "value": -252.845
+            }
+          ]
+        }
+      }
+    }
+  },
+  "events": []
+}

+ 5 - 0
assets/Animation/Matching/matching.anim.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "2.1.0",
+  "uuid": "c254bb52-dbc5-4958-a799-3c5b560354d5",
+  "subMetas": {}
+}

+ 43 - 0
assets/Animation/Matching/shootingStar.anim

@@ -0,0 +1,43 @@
+{
+  "__type__": "cc.AnimationClip",
+  "_name": "shootingStar",
+  "_objFlags": 0,
+  "_native": "",
+  "_duration": 0.16666666666666666,
+  "sample": 60,
+  "speed": 0.3,
+  "wrapMode": 1,
+  "curveData": {
+    "paths": {
+      "UpMeteor": {
+        "props": {
+          "x": [
+            {
+              "frame": 0,
+              "value": -557
+            },
+            {
+              "frame": 0.16666666666666666,
+              "value": 161.399
+            }
+          ]
+        }
+      },
+      "DownMeteor": {
+        "props": {
+          "x": [
+            {
+              "frame": 0,
+              "value": 567
+            },
+            {
+              "frame": 0.16666666666666666,
+              "value": -156.826
+            }
+          ]
+        }
+      }
+    }
+  },
+  "events": []
+}

+ 5 - 0
assets/Animation/Matching/shootingStar.anim.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "2.1.0",
+  "uuid": "febfffa0-2a4b-4e78-9658-28b91e50c997",
+  "subMetas": {}
+}

+ 12 - 0
assets/Audios.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "354b1f04-824b-4e46-8ac7-22f15f1575d6",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 12 - 0
assets/Audios/Pairing.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "f1673cd6-b6d1-492d-a305-fcccec4b019f",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

BIN
assets/Audios/Pairing/MatchSuccess.mp3


+ 7 - 0
assets/Audios/Pairing/MatchSuccess.mp3.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "2.0.1",
+  "uuid": "cb39bc91-cbde-46ee-9597-b1d25a611d48",
+  "downloadMode": 0,
+  "duration": 3.89175,
+  "subMetas": {}
+}

BIN
assets/Audios/bg.mp3


+ 7 - 0
assets/Audios/bg.mp3.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "2.0.1",
+  "uuid": "31cb1f03-4fc0-46d5-bdcc-765deb2cfaf5",
+  "downloadMode": 0,
+  "duration": 105.101333,
+  "subMetas": {}
+}

BIN
assets/Audios/hit.mp3


+ 7 - 0
assets/Audios/hit.mp3.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "2.0.1",
+  "uuid": "d2595075-87ba-4bec-bdee-25764d742022",
+  "downloadMode": 0,
+  "duration": 0.57475,
+  "subMetas": {}
+}

BIN
assets/Audios/miss.mp3


+ 7 - 0
assets/Audios/miss.mp3.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "2.0.1",
+  "uuid": "0b33bb82-65c9-4bba-9609-7ee3370324de",
+  "downloadMode": 0,
+  "duration": 0.365714,
+  "subMetas": {}
+}

+ 12 - 0
assets/Scenes.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "d9952dee-a8d8-44a0-b8c0-751cf8b24c79",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 9120 - 0
assets/Scenes/Game.fire

@@ -0,0 +1,9120 @@
+[
+  {
+    "__type__": "cc.SceneAsset",
+    "_name": "",
+    "_objFlags": 0,
+    "_native": "",
+    "scene": {
+      "__id__": 1
+    }
+  },
+  {
+    "__type__": "cc.Scene",
+    "_objFlags": 0,
+    "_parent": null,
+    "_children": [
+      {
+        "__id__": 2
+      },
+      {
+        "__id__": 128
+      },
+      {
+        "__id__": 162
+      },
+      {
+        "__id__": 86
+      },
+      {
+        "__id__": 194
+      },
+      {
+        "__id__": 88
+      },
+      {
+        "__id__": 7
+      }
+    ],
+    "_active": true,
+    "_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": "19b84ea1-baa7-47e9-909b-df3c955e0ec1"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "GameStates",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 3
+      }
+    ],
+    "_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,
+        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": "d3fDTXHrpHVrHd10WIa1rR"
+  },
+  {
+    "__type__": "e167dm2OoNN3IS5Ex5QlXS0",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "topHole": {
+      "__id__": 4
+    },
+    "leftHole": {
+      "__id__": 79
+    },
+    "rightHole": {
+      "__id__": 130
+    },
+    "bPlayDirection": false,
+    "_id": "e6+hWzMVNNWZbvgXxgezUz"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "nangua_ske",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [
+      {
+        "__id__": 188
+      },
+      {
+        "__id__": 190
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 192
+      },
+      {
+        "__id__": 193
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 203.52384020618558,
+      "height": 248.65404853951895
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -340,
+        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": "6atcB1FPNFmJJ43pt4E/8c"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Mask",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 6
+    },
+    "_children": [
+      {
+        "__id__": 4
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 187
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 500,
+      "height": 300
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -30,
+        220,
+        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": "f9E33lEzxKta0XyE92ji2N"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "TopHole",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 7
+    },
+    "_children": [
+      {
+        "__id__": 5
+      },
+      {
+        "__id__": 184
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 186
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 167,
+      "height": 97
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        18.527,
+        -225.782,
+        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": "97zxc8z+xLbru8OkCEXi3d"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Canvas",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 8
+      },
+      {
+        "__id__": 10
+      },
+      {
+        "__id__": 13
+      },
+      {
+        "__id__": 6
+      },
+      {
+        "__id__": 77
+      },
+      {
+        "__id__": 132
+      },
+      {
+        "__id__": 153
+      },
+      {
+        "__id__": 95
+      },
+      {
+        "__id__": 93
+      },
+      {
+        "__id__": 90
+      },
+      {
+        "__id__": 143
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 182
+      },
+      {
+        "__id__": 183
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 720,
+      "height": 1280
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        360,
+        640,
+        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": "a5esZu+45LA5mBpvttspPD"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Main Camera",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 7
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 9
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 720,
+      "height": 1280
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        0,
+        541.2658773652742,
+        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": "e1WoFrQ79G7r4ZuQE3HlNb"
+  },
+  {
+    "__type__": "cc.Camera",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 8
+    },
+    "_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": "81GN3uXINKVLeW4+iKSlim"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "BG",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 7
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 11
+      },
+      {
+        "__id__": 12
+      }
+    ],
+    "_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": [
+        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": "21b9vO00dAS51wiIBroWC6"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 10
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "914f4e91-39b5-4aaf-9efc-7509fabda88b"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "3bnoGyCLRCp4ATMuLX2v8g"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 10
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": {
+      "__id__": 7
+    },
+    "_alignFlags": 18,
+    "_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": "c0G/01QTxMaZM5EcypOzUS"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "TopBar",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 7
+    },
+    "_children": [
+      {
+        "__id__": 14
+      },
+      {
+        "__id__": 41
+      },
+      {
+        "__id__": 68
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 76
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 575,
+      "height": 120
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        480,
+        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": "3fJaHk63JFIoiTxo/aHhtb"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "AvatarBG1",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 13
+    },
+    "_children": [
+      {
+        "__id__": 15
+      },
+      {
+        "__id__": 23
+      },
+      {
+        "__id__": 27
+      },
+      {
+        "__id__": 39
+      }
+    ],
+    "_active": true,
+    "_components": [],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 90,
+      "height": 90
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -260,
+        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": "7bUl/AgTBG0LZ0mJSGRfd2"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Blood",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 14
+    },
+    "_children": [
+      {
+        "__id__": 16
+      },
+      {
+        "__id__": 18
+      }
+    ],
+    "_active": true,
+    "_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.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        111,
+        5,
+        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": "85a3dwx4BOt5+/h3fjsSG5"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "BloodBG",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 15
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 17
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 216,
+      "height": 63
+    },
+    "_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": "4dgeLTjL1HA5QJAco8DIqe"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 16
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "8ba2c5e0-1c32-401e-952c-4487413c44ef"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "89jkSBVn1AbrR/szJRl2NS"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Mask",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 15
+    },
+    "_children": [
+      {
+        "__id__": 19
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 21
+      },
+      {
+        "__id__": 22
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 204,
+      "height": 49
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -102,
+        1,
+        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": "12MdVOQ6lHdq2k476qzXQm"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "BlueBlood",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 18
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 20
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 204,
+      "height": 49
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        102,
+        1,
+        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": "acqmUwXfhF6Z4YsZLwQXVY"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 19
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "073a42ab-c675-41f9-926e-d8d3489a267f"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "b8GeR+mnlOMJgzmo6DaUOT"
+  },
+  {
+    "__type__": "cc.Mask",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 18
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_spriteFrame": null,
+    "_type": 0,
+    "_segments": 64,
+    "_N$alphaThreshold": 0.1,
+    "_N$inverted": false,
+    "_id": "14SxmVIdFEGKrrRbXjEE0I"
+  },
+  {
+    "__type__": "80d54ztO7RHX4DnZTH90waz",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 18
+    },
+    "_enabled": true,
+    "_id": "3dO8LwXr9Jeo2fohwMPvEw"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "NameBG1",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 14
+    },
+    "_children": [
+      {
+        "__id__": 24
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 26
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 186,
+      "height": 19
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        93,
+        -31,
+        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": "9b4pYrF8xECYQHwPCdh0rd"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Name",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 23
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 25
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 30.84,
+      "height": 18.9
+    },
+    "_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": "bcSkVHJghMbKv3mQO6M6Od"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 24
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "Jack",
+    "_N$string": "Jack",
+    "_fontSize": 15,
+    "_lineHeight": 15,
+    "_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": "fdDndp4vRKF7BY5vk/7Yjs"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 23
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "59542167-3514-4123-a519-91d3942b1833"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "46fye2osJG+6T3Qfd979Fr"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Avatar",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 14
+    },
+    "_children": [
+      {
+        "__id__": 28
+      },
+      {
+        "__id__": 30
+      },
+      {
+        "__id__": 34
+      }
+    ],
+    "_active": true,
+    "_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.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        5,
+        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": "4bYMD/tXxGh7JYMeTab/dr"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "AvatarBG1",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 27
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 29
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 90,
+      "height": 90
+    },
+    "_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": "4bbyeP9dNLlr6pM/s3Rn+K"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 28
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "89d1ede4-b5af-4241-8f73-3ac03eac07da"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "8csOgOXrNKj6R4BQnNVpEN"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Mask",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 27
+    },
+    "_children": [
+      {
+        "__id__": 31
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 33
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 80,
+      "height": 80
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        1,
+        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": "fchnLDtoZE9rLeNLI+Mr9B"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Avatar1",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 30
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 32
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 80,
+      "height": 80
+    },
+    "_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": "2fbXm0/RVLHqv1vH4dco1F"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 31
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "704af6cf-937f-4840-95f3-fdb11b883bd3"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "d23EFQXoBHZY1QtXOyMLd8"
+  },
+  {
+    "__type__": "cc.Mask",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 30
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_spriteFrame": null,
+    "_type": 1,
+    "_segments": 64,
+    "_N$alphaThreshold": 0,
+    "_N$inverted": false,
+    "_id": "41XYHaYn1HNIJjTwFZINJc"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Gender",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 27
+    },
+    "_children": [
+      {
+        "__id__": 35
+      },
+      {
+        "__id__": 37
+      }
+    ],
+    "_active": true,
+    "_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.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        25,
+        -40,
+        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": "fdGY2XEO9FKYwLGi1BGCJM"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Male",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 34
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 36
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 29,
+      "height": 32
+    },
+    "_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": "d4+yLBZe9CJ5jJTC/LQYRq"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 35
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "4ad7d605-c090-4b9a-b1d3-69ea97c4ff57"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "7diKHUFalJXrHEl8ZTZJeW"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Female",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 34
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 38
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 28,
+      "height": 31
+    },
+    "_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": "d1Gt19xadGKpagtw0Eflae"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 37
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "23323e22-a734-4782-865e-cd85d61436b6"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "6cG6SeCwtN7IPj4ptgxMiX"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "ScoreTxt",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 14
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 40
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 22.25,
+      "height": 50.4
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        115,
+        7,
+        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": "a5cO2coSlDvYQRG9NTyZyb"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 39
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "0",
+    "_N$string": "0",
+    "_fontSize": 40,
+    "_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": "17JNkJ0M9Ec7jXFI/Lm5by"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "AvatarBG2",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 13
+    },
+    "_children": [
+      {
+        "__id__": 42
+      },
+      {
+        "__id__": 50
+      },
+      {
+        "__id__": 54
+      },
+      {
+        "__id__": 66
+      }
+    ],
+    "_active": true,
+    "_components": [],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 90,
+      "height": 90
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        260,
+        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": "36nUJJzZ9Ocq2bYko4cBRF"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Blood",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 41
+    },
+    "_children": [
+      {
+        "__id__": 43
+      },
+      {
+        "__id__": 45
+      }
+    ],
+    "_active": true,
+    "_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.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -118,
+        5,
+        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": "0bgzcwg19DrZ+vGXvPcPAR"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "BloodBG",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 42
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 44
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 216,
+      "height": 63
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        1,
+        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": "15H+5zlwNN3rroSop3qrkF"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 43
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "8ba2c5e0-1c32-401e-952c-4487413c44ef"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "e6TKmE7/hOQI4MRAn3o1+d"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Mask",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 42
+    },
+    "_children": [
+      {
+        "__id__": 46
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 48
+      },
+      {
+        "__id__": 49
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 204,
+      "height": 49
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -102,
+        2,
+        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": "36E3x6yGZOSICRY3iKG3+8"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "BlueBlood",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 45
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 47
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 214,
+      "height": 49
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        102,
+        1,
+        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": "31ywMmIYxBnZstM46vhYsf"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 46
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "4fad3a77-5032-45c2-96ff-21411e7a5a88"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "7aToMzjEdF8px6mW8aGbGs"
+  },
+  {
+    "__type__": "cc.Mask",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 45
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_spriteFrame": null,
+    "_type": 0,
+    "_segments": 64,
+    "_N$alphaThreshold": 0.1,
+    "_N$inverted": false,
+    "_id": "0bJyd6aVBIs42xch/rkAra"
+  },
+  {
+    "__type__": "80d54ztO7RHX4DnZTH90waz",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 45
+    },
+    "_enabled": true,
+    "_id": "8bYxbaLklPMZzE7W6Jku12"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "NameBG2",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 41
+    },
+    "_children": [
+      {
+        "__id__": 51
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 53
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 186,
+      "height": 19
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -93,
+        -31,
+        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": "14XVLIjiJPP40cKOrdWgUg"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Name",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 50
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 52
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 48.64,
+      "height": 18.9
+    },
+    "_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": "5bDevAVh9IU79CkP/iUQ75"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 51
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "Yichael",
+    "_N$string": "Yichael",
+    "_fontSize": 15,
+    "_lineHeight": 15,
+    "_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": "b6ULj/Cd5LFrpiLrD9Fay9"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 50
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "030cd7c8-7127-4eed-aa54-f656d72a1a15"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "301rKfiOlG1qdxeXRAIPS/"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Avatar",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 41
+    },
+    "_children": [
+      {
+        "__id__": 55
+      },
+      {
+        "__id__": 57
+      },
+      {
+        "__id__": 61
+      }
+    ],
+    "_active": true,
+    "_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.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        5,
+        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": "a8Vo1SmvxJVob6geSLXOxb"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "AvatarBG2",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 54
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 56
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 90,
+      "height": 90
+    },
+    "_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": "caoOK6O2pL5KvBm5KQ43Lj"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 55
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "1412dbef-5688-4858-94d4-878da0b93e5a"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "acCs+8gORPx4nhmO4xeDkA"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Mask",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 54
+    },
+    "_children": [
+      {
+        "__id__": 58
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 60
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 80,
+      "height": 80
+    },
+    "_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": "f2UwGqhQdKW6qI840ARZ2k"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Avatar2",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 57
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 59
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 80,
+      "height": 80
+    },
+    "_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": "c4KnWItJhEWbuamb2PCgE0"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 58
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "8f8b5223-c1c1-4d9d-9eb6-9a4dc945a7ca"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "86YNgh3TZMErZ8vJeFwnBL"
+  },
+  {
+    "__type__": "cc.Mask",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 57
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_spriteFrame": null,
+    "_type": 1,
+    "_segments": 64,
+    "_N$alphaThreshold": 0,
+    "_N$inverted": false,
+    "_id": "7b6Cq0n8xLFr/Ck1xKhtcL"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Gender",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 54
+    },
+    "_children": [
+      {
+        "__id__": 62
+      },
+      {
+        "__id__": 64
+      }
+    ],
+    "_active": true,
+    "_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.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -25,
+        -40,
+        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": "59TJYVaThBcp6kX2aZDKh9"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Male",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 61
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 63
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 29,
+      "height": 32
+    },
+    "_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": "7ajrdS8GhCgayWP/Wc+G7u"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 62
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "4ad7d605-c090-4b9a-b1d3-69ea97c4ff57"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "67EcQ74QdP1KU+zGGN0cR2"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Female",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 61
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 65
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 28,
+      "height": 31
+    },
+    "_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": "00HSc5qeNADps/AzCR8nqA"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 64
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "23323e22-a734-4782-865e-cd85d61436b6"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "33sJuK//hCn6dW7fja7IDW"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "ScoreTxt",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 41
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 67
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 22.25,
+      "height": 50.4
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -115,
+        7,
+        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": "c235q4ozlKIoNxWr2QITcZ"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 66
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "0",
+    "_N$string": "0",
+    "_fontSize": 40,
+    "_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": "862gaxdCFJVIt/1lLLYRwa"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Time",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 13
+    },
+    "_children": [
+      {
+        "__id__": 69
+      },
+      {
+        "__id__": 71
+      },
+      {
+        "__id__": 74
+      }
+    ],
+    "_active": true,
+    "_components": [],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 115,
+      "height": 128
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        15,
+        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": "59PZWwpSZO3p6yx2u3Ad72"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "TimeBG",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 68
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 70
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 115,
+      "height": 128
+    },
+    "_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": "58YEsIWhNG75YT9R3WMMUK"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 69
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "a82bb4b1-eb2f-4edc-a16b-197df1394764"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "farQ3HjEpC5J3upSBfTDGB"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "ProgressFill",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 68
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 72
+      },
+      {
+        "__id__": 73
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 79,
+      "height": 79
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -0.5,
+        -7,
+        0,
+        0,
+        0,
+        -0.7071067811865475,
+        0.7071067811865476,
+        -1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": -90
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": "d9eRXuMRdG7ae3whe+QDie"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 71
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "5f3b1646-382a-4cde-94b9-0ffcc53ec2e7"
+    },
+    "_type": 3,
+    "_sizeMode": 1,
+    "_fillType": 2,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "86VHFoGOBJL6xcgoeuSQj7"
+  },
+  {
+    "__type__": "d29472O6kFB7qi6QOYA8st4",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 71
+    },
+    "_enabled": true,
+    "_id": "27wSGhcD9Lpr1Bq+f79CSC"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Time",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 68
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 75
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 0,
+      "g": 0,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 62.56,
+      "height": 31.5
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -9,
+        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": "42Z7IsgchGxZmoJEOcbFqw"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 74
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "12:00",
+    "_N$string": "12:00",
+    "_fontSize": 25,
+    "_lineHeight": 25,
+    "_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": "7bo/gVWSRFYr6jO2L3x50h"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 13
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": {
+      "__id__": 7
+    },
+    "_alignFlags": 17,
+    "_left": 72.5,
+    "_right": 72.5,
+    "_top": 100.00000000000006,
+    "_bottom": 0,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 575,
+    "_originalHeight": 0,
+    "_id": "4bsMEyiHdASahNNLGcA4dK"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "LeftHole",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 7
+    },
+    "_children": [
+      {
+        "__id__": 78
+      },
+      {
+        "__id__": 150
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 152
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 167,
+      "height": 97
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -160.117,
+        -447.435,
+        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": "86gbJoyMVAepNpsdV+mUiM"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Mask",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 77
+    },
+    "_children": [
+      {
+        "__id__": 79
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 149
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 500,
+      "height": 300
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -30,
+        220,
+        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": "64QEyY2ENNF4ibUdUlTjy5"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "nangua_ske",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 78
+    },
+    "_children": [
+      {
+        "__id__": 80
+      },
+      {
+        "__id__": 82
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 84
+      },
+      {
+        "__id__": 85
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 203.52384020618558,
+      "height": 248.65404853951895
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -340,
+        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": "60cTvAp1xPk5W4jmdSXwBS"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "quantao_blue_ske",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 79
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 81
+      }
+    ],
+    "_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,
+        40,
+        0,
+        0,
+        0,
+        0,
+        1,
+        0.8,
+        0.8,
+        0.8
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": "edErsNpLdHu5DB2r+XRDPK"
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 80
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "Armature",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": -1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "a927e86a-78fc-48a6-8bf0-d666d968e55f#4df147ff-e988-4c42-8089-b1c183cc2430",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "a927e86a-78fc-48a6-8bf0-d666d968e55f"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "4df147ff-e988-4c42-8089-b1c183cc2430"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 2,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": "f0pUH2JXNHnrKSbmcB2HdW"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "quantao_ske",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 79
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 83
+      }
+    ],
+    "_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,
+        40,
+        0,
+        0,
+        0,
+        0,
+        1,
+        0.8,
+        0.8,
+        0.8
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": "94p8jCflVKiKJCZ5gZBJw9"
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 82
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "Armature",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": -1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "0363eae4-39eb-4374-ac1b-19e8c43c0682#2e5797af-aff4-4960-9bc4-4718f948298f",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "0363eae4-39eb-4374-ac1b-19e8c43c0682"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "2e5797af-aff4-4960-9bc4-4718f948298f"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 2,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": "edkdFyxcxEy5TShFz4vG71"
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 79
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "nangua",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": -1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "2176832d-3fa3-48f3-96dd-9d72e49868d1#9c84474c-5269-4102-ac4e-7a2239b336a0",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "2176832d-3fa3-48f3-96dd-9d72e49868d1"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "9c84474c-5269-4102-ac4e-7a2239b336a0"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 1,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": "a2o/XfVNxFZJ9q4/NZ4cah"
+  },
+  {
+    "__type__": "1d061GgsiNIS5fnK3GZpPBZ",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 79
+    },
+    "_enabled": true,
+    "gameStates": {
+      "__id__": 2
+    },
+    "aiPlayerController": {
+      "__id__": 86
+    },
+    "nameIndex": 1,
+    "_id": "77vkyyZsRKXY8yaSa8C9A8"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "AiPlayerController",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 87
+      },
+      {
+        "__id__": 148
+      }
+    ],
+    "_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,
+        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": "15C7Bxt6NGAKsStWhf5Sxg"
+  },
+  {
+    "__type__": "c4010s7HqlNMaetNeHas/23",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 86
+    },
+    "_enabled": true,
+    "gameStates": {
+      "__id__": 2
+    },
+    "gameMode": {
+      "__id__": 88
+    },
+    "topHole": {
+      "__id__": 4
+    },
+    "leftHole": {
+      "__id__": 79
+    },
+    "rightHole": {
+      "__id__": 130
+    },
+    "avatar": {
+      "__id__": 59
+    },
+    "playerName": {
+      "__id__": 52
+    },
+    "score": {
+      "__id__": 67
+    },
+    "gender": {
+      "__id__": 61
+    },
+    "hp": {
+      "__id__": 45
+    },
+    "bAi": true,
+    "id": 0,
+    "_id": "b5witFOFhLIbdeU1g1fQWb"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "GameMode",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 89
+      },
+      {
+        "__id__": 147
+      }
+    ],
+    "_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,
+        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": "54Y6baDxVH5JNA2hU6yCuP"
+  },
+  {
+    "__type__": "9f7e0Jbc5NIhZWwvfGYaFBy",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 88
+    },
+    "_enabled": true,
+    "gameStates": {
+      "__id__": 2
+    },
+    "readyGo": {
+      "__id__": 90
+    },
+    "totalTime": {
+      "__id__": 75
+    },
+    "timeProgress": {
+      "__id__": 71
+    },
+    "scareCrow": {
+      "__id__": 93
+    },
+    "result": {
+      "__id__": 95
+    },
+    "_id": "88vHmDoClHx4HmSx7y6gKj"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "ReadyGo",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 7
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 91
+      },
+      {
+        "__id__": 92
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 1080,
+      "height": 542
+    },
+    "_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": "35QP8EqMlLa4fKkqQ35XHC"
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 90
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "armatureName",
+    "_animationName": "animation",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": -1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "e78c7977-867d-4e2c-9bf2-5bd1f56db6ba#42d5a8b9-ff5b-48dd-a5a6-26d8f36fa528",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "e78c7977-867d-4e2c-9bf2-5bd1f56db6ba"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "42d5a8b9-ff5b-48dd-a5a6-26d8f36fa528"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 1,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 1,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": "84LL/+SxRMGbn+5fJinSMu"
+  },
+  {
+    "__type__": "cc.AudioSource",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 90
+    },
+    "_enabled": true,
+    "_clip": {
+      "__uuid__": "1f4fd3b0-eb74-4d70-aedf-148bae717b8e"
+    },
+    "_volume": 1,
+    "_mute": false,
+    "_loop": false,
+    "playOnLoad": true,
+    "preload": true,
+    "_id": "d1LpjETcBFp7JYeCI9SrN3"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "ScareCrow",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 7
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 94
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 558,
+      "height": 843
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        82,
+        -131.661,
+        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": "51Q/GdSPpOCIp+Dabxs062"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 93
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "95a10f2b-6361-457c-8f1f-314a18fe6d0a"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "9bBrs3DOVOtZzNx18RNaYj"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Result",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 7
+    },
+    "_children": [
+      {
+        "__id__": 96
+      },
+      {
+        "__id__": 98
+      },
+      {
+        "__id__": 100
+      },
+      {
+        "__id__": 106
+      },
+      {
+        "__id__": 112
+      },
+      {
+        "__id__": 116
+      },
+      {
+        "__id__": 121
+      }
+    ],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 126
+      },
+      {
+        "__id__": 127
+      }
+    ],
+    "_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,
+        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": "fbJdwxyRVKzYaNoEKdOeM7"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "ResultBG2",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 95
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 97
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 721,
+      "height": 1601
+    },
+    "_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": "a2pukYMZFEpbeT38wo0lj0"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 96
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "e07b05a9-707a-4945-a9db-8c678e662a5b"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "57ieE34EVDUowcr30KP8as"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "ResultBar",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 95
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 99
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 568,
+      "height": 712
+    },
+    "_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": "62WuxxTVJGCaLbx+AXabjL"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 98
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "9c3df5f9-332d-4d29-9d2e-235ec169a9f5"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "b143Z/2N1NcoA1NNQCjBiM"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "MissNumBG",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 95
+    },
+    "_children": [
+      {
+        "__id__": 101
+      },
+      {
+        "__id__": 103
+      }
+    ],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 105
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 137,
+      "height": 59
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        89,
+        22,
+        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": "9d0cCjwjBKnK8GBUeUu+vg"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "label",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 100
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 102
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 13.9,
+      "height": 31.5
+    },
+    "_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": "2eYqAngI1F0JIxPdqpdvld"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 101
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "0",
+    "_N$string": "0",
+    "_fontSize": 25,
+    "_lineHeight": 25,
+    "_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": "fbr21Jl31IhIdQlTR5M4dg"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Miss",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 100
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 104
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 75,
+      "height": 26
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -2,
+        78,
+        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": "19zOyE2BxNxrOej5JZSduF"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 103
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "e500b0e0-af46-44af-a46a-a7e9ac37522a"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "483F96pdlHd7JwzXTKSGf2"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 100
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "e91315c8-850d-4da4-9012-0deafca4768d"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "97xScDKMBK6rhJRjirsVwl"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "HitNumBG",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 95
+    },
+    "_children": [
+      {
+        "__id__": 107
+      },
+      {
+        "__id__": 109
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 111
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 137,
+      "height": 59
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        7.482,
+        22,
+        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": "cciScNhT9LYIRS40h7i9zQ"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "label",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 106
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 108
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 13.9,
+      "height": 31.5
+    },
+    "_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": "86RwRHC4dF25NsV5I4mFMz"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 107
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "0",
+    "_N$string": "0",
+    "_fontSize": 25,
+    "_lineHeight": 25,
+    "_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": "24ycr3QeNO8q+p6Rq38V7w"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Hit",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 106
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 110
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 45,
+      "height": 26
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -7,
+        78,
+        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": "d0ajHkPn5IBaGa1MXown8b"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 109
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "5de7f699-de17-4ff0-bd82-3375ad6f2315"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "33SxJ6EahAxoET4vrd7Gjx"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 106
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "e91315c8-850d-4da4-9012-0deafca4768d"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "23yVj3/HVO+76/hA1NBhPY"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Replay",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 95
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 113
+      },
+      {
+        "__id__": 114
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 101,
+      "height": 108
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -409.533,
+        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": "903afFJqxP7LInoRnBT86p"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 112
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "3799a2cc-6657-406f-826e-4532500332fe"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "7aeoQhz+RIH7DbJNGm5SKi"
+  },
+  {
+    "__type__": "cc.Button",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 112
+    },
+    "_enabled": true,
+    "_normalMaterial": null,
+    "_grayMaterial": null,
+    "duration": 0.1,
+    "zoomScale": 1.2,
+    "clickEvents": [
+      {
+        "__id__": 115
+      }
+    ],
+    "_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": {
+      "__id__": 112
+    },
+    "_id": "86yx4KdalPqLgmWPcjBwzW"
+  },
+  {
+    "__type__": "cc.ClickEvent",
+    "target": {
+      "__id__": 88
+    },
+    "component": "",
+    "_componentId": "9f7e0Jbc5NIhZWwvfGYaFBy",
+    "handler": "replay",
+    "customEventData": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "KCak",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 95
+    },
+    "_children": [
+      {
+        "__id__": 117
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 120
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 405,
+      "height": 54
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -146.221,
+        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": "c8wrbAY4NPQ4qOp5oQGeMi"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "label",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 116
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 118
+      },
+      {
+        "__id__": 119
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 27,
+      "g": 231,
+      "b": 246,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 257.71000000000004,
+      "height": 33.5
+    },
+    "_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": "1aBcC0aQtOf6V9BMCshsIr"
+  },
+  {
+    "__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": "Burn Calories: 12098.3",
+    "_N$string": "Burn Calories: 12098.3",
+    "_fontSize": 25,
+    "_lineHeight": 25,
+    "_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": "ddXPgFpLdDQ5cqNpaAtyVw"
+  },
+  {
+    "__type__": "cc.LabelOutline",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 117
+    },
+    "_enabled": true,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 27,
+      "g": 231,
+      "b": 246,
+      "a": 255
+    },
+    "_width": 1,
+    "_id": "c2Xp+eRfZENY+Q9r/evwkI"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 116
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "5c6a7b18-6dd1-4405-9bf9-ac0f0eeeb3dd"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "20I1Eh4gNP+JJVLsDDF3FN"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Time",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 95
+    },
+    "_children": [
+      {
+        "__id__": 122
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 125
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 305,
+      "height": 54
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -215.958,
+        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": "76Ux7QVgJMTK+U4jtTtJwS"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "label",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 121
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 123
+      },
+      {
+        "__id__": 124
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 27,
+      "g": 231,
+      "b": 246,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 174.78,
+      "height": 33.5
+    },
+    "_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": "4etdaLEMpJxoYay7iIp4AU"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 122
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "Time:  19:27:09",
+    "_N$string": "Time:  19:27:09",
+    "_fontSize": 25,
+    "_lineHeight": 25,
+    "_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": "a026qyE+tOP7PUX0/Zq46h"
+  },
+  {
+    "__type__": "cc.LabelOutline",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 122
+    },
+    "_enabled": true,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 27,
+      "g": 231,
+      "b": 246,
+      "a": 255
+    },
+    "_width": 1,
+    "_id": "7104vJgr5A3bwCPMb6mGZ4"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 121
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "5c6a7b18-6dd1-4405-9bf9-ac0f0eeeb3dd"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "b2r7xUbZFH9rif41P8Vx2V"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 95
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": {
+      "__id__": 7
+    },
+    "_alignFlags": 18,
+    "_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": "9a0twbgkBFvpRUq7nOCb4e"
+  },
+  {
+    "__type__": "41c16GGtIFIjqAGvQyDxyQn",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 95
+    },
+    "_enabled": true,
+    "gameStates": {
+      "__id__": 2
+    },
+    "playerStates0": {
+      "__id__": 128
+    },
+    "miss": {
+      "__id__": 102
+    },
+    "hit": {
+      "__id__": 108
+    },
+    "kCal": {
+      "__id__": 118
+    },
+    "time": {
+      "__id__": 123
+    },
+    "resultBarSp": {
+      "__id__": 98
+    },
+    "winBarFrame": {
+      "__uuid__": "ef1425a8-c4bb-479b-b0e0-c33350c2ed3f"
+    },
+    "defeatBarFrame": {
+      "__uuid__": "efd51619-b1ce-4bfa-8858-c4f8a82d8498"
+    },
+    "_id": "57P8zk2WdHc7y2zQTzAXsg"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "PlayerController0",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 129
+      },
+      {
+        "__id__": 146
+      }
+    ],
+    "_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,
+        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": "acQ5tdtMhLB4nqdOsHGY9x"
+  },
+  {
+    "__type__": "59082S6MVBMN5aAhgKtexU3",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 128
+    },
+    "_enabled": true,
+    "gameStates": {
+      "__id__": 2
+    },
+    "gameMode": {
+      "__id__": 88
+    },
+    "topHole": {
+      "__id__": 4
+    },
+    "leftHole": {
+      "__id__": 79
+    },
+    "rightHole": {
+      "__id__": 130
+    },
+    "avatar": {
+      "__id__": 32
+    },
+    "playerName": {
+      "__id__": 25
+    },
+    "score": {
+      "__id__": 40
+    },
+    "gender": {
+      "__id__": 34
+    },
+    "hp": {
+      "__id__": 18
+    },
+    "bAi": false,
+    "id": 0,
+    "hitAudio": {
+      "__uuid__": "d2595075-87ba-4bec-bdee-25764d742022"
+    },
+    "missAudio": {
+      "__uuid__": "0b33bb82-65c9-4bba-9609-7ee3370324de"
+    },
+    "bloodFlash": {
+      "__id__": 143
+    },
+    "_id": "1cjv7eK3tESpSSKpOYJkfp"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "nangua_ske",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 131
+    },
+    "_children": [
+      {
+        "__id__": 137
+      },
+      {
+        "__id__": 139
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 141
+      },
+      {
+        "__id__": 142
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 203.52384020618558,
+      "height": 248.65404853951895
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -340,
+        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": "03BAVApg5FR78vCJJ3mr7e"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Mask",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 132
+    },
+    "_children": [
+      {
+        "__id__": 130
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 136
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 500,
+      "height": 300
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -30,
+        220,
+        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": "92FZ0WgNxPkqkuhrI1OtPD"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "RightHole",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 7
+    },
+    "_children": [
+      {
+        "__id__": 131
+      },
+      {
+        "__id__": 133
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 135
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 167,
+      "height": 97
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        220.818,
+        -447.164,
+        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": "8e+JB3WvNCi4+zLewhschO"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Tomb",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 132
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 134
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 253,
+      "height": 231
+    },
+    "_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": "32ExaHN2xO+6cjCz45l8L2"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 133
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "6baac127-87a5-4209-a9d5-b3b68df55983"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "50jdd02E1PiLNve1uL0aho"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 132
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": {
+      "__id__": 7
+    },
+    "_alignFlags": 18,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_verticalCenter": -447.164,
+    "_horizontalCenter": 220.818,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_id": "1ehczCQphPV7OUPu3+Yaxb"
+  },
+  {
+    "__type__": "cc.Mask",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 131
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_spriteFrame": null,
+    "_type": 1,
+    "_segments": 64,
+    "_N$alphaThreshold": 0,
+    "_N$inverted": false,
+    "_id": "29Y1416atJX6LQ8Z9DbqXF"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "quantao_blue_ske",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 130
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 138
+      }
+    ],
+    "_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,
+        40,
+        0,
+        0,
+        0,
+        0,
+        1,
+        0.8,
+        0.8,
+        0.8
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": "56l3CPlzBNOYJNuPqQ7XNT"
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 137
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "Armature",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": -1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "a927e86a-78fc-48a6-8bf0-d666d968e55f#4df147ff-e988-4c42-8089-b1c183cc2430",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "a927e86a-78fc-48a6-8bf0-d666d968e55f"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "4df147ff-e988-4c42-8089-b1c183cc2430"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 2,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": "ecenqe5FNNAaYAWElgJH7n"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "quantao_ske",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 130
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 140
+      }
+    ],
+    "_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,
+        40,
+        0,
+        0,
+        0,
+        0,
+        1,
+        0.8,
+        0.8,
+        0.8
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": "85FxGfq7BIZrNfD92F5Bpy"
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 139
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "Armature",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": -1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "0363eae4-39eb-4374-ac1b-19e8c43c0682#2e5797af-aff4-4960-9bc4-4718f948298f",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "0363eae4-39eb-4374-ac1b-19e8c43c0682"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "2e5797af-aff4-4960-9bc4-4718f948298f"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 2,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": "4eYgNrLZZKOI1obZtdQ0/o"
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 130
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "nangua",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": -1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "2176832d-3fa3-48f3-96dd-9d72e49868d1#9c84474c-5269-4102-ac4e-7a2239b336a0",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "2176832d-3fa3-48f3-96dd-9d72e49868d1"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "9c84474c-5269-4102-ac4e-7a2239b336a0"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 1,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": "79d1n7BeVNUKchd9DaWDFR"
+  },
+  {
+    "__type__": "1d061GgsiNIS5fnK3GZpPBZ",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 130
+    },
+    "_enabled": true,
+    "gameStates": {
+      "__id__": 2
+    },
+    "aiPlayerController": {
+      "__id__": 86
+    },
+    "nameIndex": 2,
+    "_id": "a47M9q5T5O9IQ2wnqm+ErA"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "BloodyFlash",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 7
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 144
+      },
+      {
+        "__id__": 145
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 0,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 156,
+      "g": 55,
+      "b": 55,
+      "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": "11m1yWxPdMSb2acq09ozpu"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 143
+    },
+    "_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": "acn0GIMNtDfZg6BwgSW1Wc"
+  },
+  {
+    "__type__": "042a2KBu59Ox6R1erqk6sOd",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 143
+    },
+    "_enabled": true,
+    "_id": "daIOJuTl1JmJhUvbL6qI1m"
+  },
+  {
+    "__type__": "ac6b1pAj5JCN6ZxE0OM2vCY",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 128
+    },
+    "_enabled": true,
+    "_id": "feJUPnMK9HAKdAZRf+jYJD"
+  },
+  {
+    "__type__": "cc.AudioSource",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 88
+    },
+    "_enabled": false,
+    "_clip": {
+      "__uuid__": "31cb1f03-4fc0-46d5-bdcc-765deb2cfaf5"
+    },
+    "_volume": 0.3,
+    "_mute": false,
+    "_loop": true,
+    "playOnLoad": true,
+    "preload": true,
+    "_id": "5aYm5Ah2dLL4hmX3IfCu5G"
+  },
+  {
+    "__type__": "902e8gYoddJh7G7i0Z1FhJS",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 86
+    },
+    "_enabled": true,
+    "_id": "44tjjgMLVCD4BKag0UD/zb"
+  },
+  {
+    "__type__": "cc.Mask",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 78
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_spriteFrame": null,
+    "_type": 1,
+    "_segments": 64,
+    "_N$alphaThreshold": 0,
+    "_N$inverted": false,
+    "_id": "bfxmCPw3FJzoMuKDaL1Vzs"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Tomb",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 77
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 151
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 253,
+      "height": 231
+    },
+    "_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": "1b6umXhrJMUJfGNSeK9f00"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 150
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "6baac127-87a5-4209-a9d5-b3b68df55983"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "cdoiqNOKBP775UFKI7ZIMc"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 77
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": {
+      "__id__": 7
+    },
+    "_alignFlags": 18,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_verticalCenter": -447.435,
+    "_horizontalCenter": -160.117,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_id": "0eG2xLbxlHG5SNtE3IpE02"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Testing",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 7
+    },
+    "_children": [
+      {
+        "__id__": 154
+      },
+      {
+        "__id__": 165
+      },
+      {
+        "__id__": 173
+      }
+    ],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 181
+      }
+    ],
+    "_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,
+        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": "639rXqfCBBvarbtHeIfOdX"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "left",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 153
+    },
+    "_children": [
+      {
+        "__id__": 155
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 160
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 100
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -139.543,
+        -514.024,
+        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": "43CNocGf9CgbzqmKzZnMRj"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Background",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 154
+    },
+    "_children": [
+      {
+        "__id__": 156
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 158
+      },
+      {
+        "__id__": 159
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 100
+    },
+    "_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": "b1EjM3+Y9CyaslxCvyYb0Y"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Label",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 155
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 157
+      }
+    ],
+    "_prefab": null,
+    "_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": "13PhfLiJtOqov6Wbzlfs6F"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 156
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "Left",
+    "_N$string": "Left",
+    "_fontSize": 20,
+    "_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": "c0Sx0yRq1AXZLTkxSWlH0i"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 155
+    },
+    "_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": "43KmBW2H9DW5Uhf0MtpupH"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 155
+    },
+    "_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": "f71o0+rA5OdaeoWu/Pz1oq"
+  },
+  {
+    "__type__": "cc.Button",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 154
+    },
+    "_enabled": true,
+    "_normalMaterial": {
+      "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+    },
+    "_grayMaterial": null,
+    "duration": 0.1,
+    "zoomScale": 1.2,
+    "clickEvents": [
+      {
+        "__id__": 161
+      }
+    ],
+    "_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__": 155
+    },
+    "_id": "19KDDObghCEbkJIy2vIhr8"
+  },
+  {
+    "__type__": "cc.ClickEvent",
+    "target": {
+      "__id__": 162
+    },
+    "component": "",
+    "_componentId": "b3cb70SBehMboiOoItaEl8q",
+    "handler": "left",
+    "customEventData": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "PlayerController1",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 163
+      },
+      {
+        "__id__": 164
+      }
+    ],
+    "_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,
+        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": "98awPAZeBI4JtKtTV74QHa"
+  },
+  {
+    "__type__": "59082S6MVBMN5aAhgKtexU3",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 162
+    },
+    "_enabled": true,
+    "gameStates": {
+      "__id__": 2
+    },
+    "gameMode": {
+      "__id__": 88
+    },
+    "topHole": {
+      "__id__": 4
+    },
+    "leftHole": {
+      "__id__": 79
+    },
+    "rightHole": {
+      "__id__": 130
+    },
+    "avatar": {
+      "__id__": 32
+    },
+    "playerName": {
+      "__id__": 25
+    },
+    "score": {
+      "__id__": 40
+    },
+    "gender": {
+      "__id__": 34
+    },
+    "hp": {
+      "__id__": 18
+    },
+    "bAi": false,
+    "id": 1,
+    "hitAudio": {
+      "__uuid__": "d2595075-87ba-4bec-bdee-25764d742022"
+    },
+    "missAudio": {
+      "__uuid__": "0b33bb82-65c9-4bba-9609-7ee3370324de"
+    },
+    "bloodFlash": {
+      "__id__": 143
+    },
+    "_id": "c78ioou7xAjownFfGp0u3+"
+  },
+  {
+    "__type__": "ac6b1pAj5JCN6ZxE0OM2vCY",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 162
+    },
+    "_enabled": true,
+    "_id": "53x+qxXnVDxbmLKnYh5Q3r"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "top",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 153
+    },
+    "_children": [
+      {
+        "__id__": 166
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 171
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 100
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -9.069,
+        -511.775,
+        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": "c8flK8O+tMB4PrwBeO3yb8"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Background",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 165
+    },
+    "_children": [
+      {
+        "__id__": 167
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 169
+      },
+      {
+        "__id__": 170
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 100
+    },
+    "_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": "85JMaCvn1IjIV6zULy359Y"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Label",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 166
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 168
+      }
+    ],
+    "_prefab": null,
+    "_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": "665fXNsGJCQZMP56nKigJo"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 167
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "Top",
+    "_N$string": "Top",
+    "_fontSize": 20,
+    "_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": "cbRVRIMbBJtqEMTyT73HuN"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 166
+    },
+    "_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": "a47QVfnd9Li6HDSu5mk6V6"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 166
+    },
+    "_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": "b3m9hqdlND3bGGdTi6ozxW"
+  },
+  {
+    "__type__": "cc.Button",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 165
+    },
+    "_enabled": true,
+    "_normalMaterial": {
+      "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+    },
+    "_grayMaterial": null,
+    "duration": 0.1,
+    "zoomScale": 1.2,
+    "clickEvents": [
+      {
+        "__id__": 172
+      }
+    ],
+    "_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__": 166
+    },
+    "_id": "62mI6qTkBFi61lkprI9WtD"
+  },
+  {
+    "__type__": "cc.ClickEvent",
+    "target": {
+      "__id__": 162
+    },
+    "component": "",
+    "_componentId": "b3cb70SBehMboiOoItaEl8q",
+    "handler": "top",
+    "customEventData": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "right",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 153
+    },
+    "_children": [
+      {
+        "__id__": 174
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 179
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 100
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        123.656,
+        -507.276,
+        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": "8fajQl4i1Mn49Bvyszio8v"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Background",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 173
+    },
+    "_children": [
+      {
+        "__id__": 175
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 177
+      },
+      {
+        "__id__": 178
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 100
+    },
+    "_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": "08Azn3UXNPYbLF+xU5wGEL"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Label",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 174
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 176
+      }
+    ],
+    "_prefab": null,
+    "_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": "23z/dun6VFKJa78ojsTADF"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 175
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "Right",
+    "_N$string": "Right",
+    "_fontSize": 20,
+    "_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": "d0pQi4DGJH35lGLvF5cEmu"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 174
+    },
+    "_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": "f4Vq1dD+pJpa7x1GMSf225"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 174
+    },
+    "_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": "01nzpJpytCFau5ZsGgvx4s"
+  },
+  {
+    "__type__": "cc.Button",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 173
+    },
+    "_enabled": true,
+    "_normalMaterial": {
+      "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+    },
+    "_grayMaterial": null,
+    "duration": 0.1,
+    "zoomScale": 1.2,
+    "clickEvents": [
+      {
+        "__id__": 180
+      }
+    ],
+    "_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__": 174
+    },
+    "_id": "0bMKr3yAlCJK28OErpANuj"
+  },
+  {
+    "__type__": "cc.ClickEvent",
+    "target": {
+      "__id__": 162
+    },
+    "component": "",
+    "_componentId": "b3cb70SBehMboiOoItaEl8q",
+    "handler": "right",
+    "customEventData": ""
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 153
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": {
+      "__id__": 7
+    },
+    "_alignFlags": 20,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 640,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_id": "d3++51wRdIYq2T1pYzXin4"
+  },
+  {
+    "__type__": "cc.Canvas",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 7
+    },
+    "_enabled": true,
+    "_designResolution": {
+      "__type__": "cc.Size",
+      "width": 720,
+      "height": 1280
+    },
+    "_fitWidth": true,
+    "_fitHeight": false,
+    "_id": "59Cd0ovbdF4byw5sbjJDx7"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 7
+    },
+    "_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": "29zXboiXFBKoIV4PQ2liTe"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Tomb",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 6
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 185
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 253,
+      "height": 231
+    },
+    "_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": "5f0aC5kmJMyqG6R8Wrw/F/"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 184
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "6baac127-87a5-4209-a9d5-b3b68df55983"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "4dqxiG7a1CqLM9sM2p3RAM"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 6
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": {
+      "__id__": 7
+    },
+    "_alignFlags": 18,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_verticalCenter": -225.782,
+    "_horizontalCenter": 18.527,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_id": "80kuvhiIZGRb244DkSNXJ0"
+  },
+  {
+    "__type__": "cc.Mask",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 5
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_spriteFrame": null,
+    "_type": 1,
+    "_segments": 64,
+    "_N$alphaThreshold": 0,
+    "_N$inverted": false,
+    "_id": "1bTLo7HXpK2LgJ5JTpPC7s"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "quantao_blue_ske",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 4
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 189
+      }
+    ],
+    "_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,
+        40,
+        0,
+        0,
+        0,
+        0,
+        1,
+        0.8,
+        0.8,
+        0.8
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": "37T7JPBV1D/4lt6tuXkUWo"
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 188
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "Armature",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": -1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "a927e86a-78fc-48a6-8bf0-d666d968e55f#4df147ff-e988-4c42-8089-b1c183cc2430",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "a927e86a-78fc-48a6-8bf0-d666d968e55f"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "4df147ff-e988-4c42-8089-b1c183cc2430"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 2,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": "bdNV6CZRVGgILlLD+BVjxw"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "quantao_ske",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 4
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 191
+      }
+    ],
+    "_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,
+        40,
+        0,
+        0,
+        0,
+        0,
+        1,
+        0.8,
+        0.8,
+        0.8
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": "a8PANtljRGf5LTs13NzuBd"
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 190
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "Armature",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": -1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "0363eae4-39eb-4374-ac1b-19e8c43c0682#2e5797af-aff4-4960-9bc4-4718f948298f",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "0363eae4-39eb-4374-ac1b-19e8c43c0682"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "2e5797af-aff4-4960-9bc4-4718f948298f"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 2,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": "93gusjEjZJKq6vOs6kVFle"
+  },
+  {
+    "__type__": "dragonBones.ArmatureDisplay",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 4
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_armatureName": "nangua",
+    "_animationName": "",
+    "_preCacheMode": 0,
+    "_cacheMode": 0,
+    "playTimes": -1,
+    "premultipliedAlpha": false,
+    "_armatureKey": "2176832d-3fa3-48f3-96dd-9d72e49868d1#9c84474c-5269-4102-ac4e-7a2239b336a0",
+    "_accTime": 0,
+    "_playCount": 0,
+    "_frameCache": null,
+    "_curFrame": null,
+    "_playing": false,
+    "_armatureCache": null,
+    "_N$dragonAsset": {
+      "__uuid__": "2176832d-3fa3-48f3-96dd-9d72e49868d1"
+    },
+    "_N$dragonAtlasAsset": {
+      "__uuid__": "9c84474c-5269-4102-ac4e-7a2239b336a0"
+    },
+    "_N$_defaultArmatureIndex": 0,
+    "_N$_animationIndex": 0,
+    "_N$_defaultCacheMode": 0,
+    "_N$timeScale": 1,
+    "_N$debugBones": false,
+    "_N$enableBatch": false,
+    "_id": "2eoClLHrNJMIWqJ7gMaxFB"
+  },
+  {
+    "__type__": "1d061GgsiNIS5fnK3GZpPBZ",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 4
+    },
+    "_enabled": true,
+    "gameStates": {
+      "__id__": 2
+    },
+    "aiPlayerController": {
+      "__id__": 86
+    },
+    "nameIndex": 0,
+    "_id": "fd6qg/9YpL2KpAp4dD+a4w"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "AudioController",
+    "_objFlags": 512,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 195
+      }
+    ],
+    "_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,
+        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": "e4VTq/+35MIIGJne+VwXM+"
+  },
+  {
+    "__type__": "9e716rW09pH76oTR1cbsowT",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 194
+    },
+    "_enabled": true,
+    "_id": "adQP406tpHtppl7aJsNW0c"
+  }
+]

+ 7 - 0
assets/Scenes/Game.fire.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "1.2.8",
+  "uuid": "19b84ea1-baa7-47e9-909b-df3c955e0ec1",
+  "asyncLoadAssets": false,
+  "autoReleaseAssets": false,
+  "subMetas": {}
+}

+ 3254 - 0
assets/Scenes/Pairing.fire

@@ -0,0 +1,3254 @@
+[
+  {
+    "__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": "a0c19945-fbba-43ae-98d2-535782ba3441"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Canvas",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 3
+      },
+      {
+        "__id__": 5
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 66
+      },
+      {
+        "__id__": 67
+      },
+      {
+        "__id__": 68
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 720,
+      "height": 1280
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        360,
+        640,
+        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": "a5esZu+45LA5mBpvttspPD"
+  },
+  {
+    "__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,
+        539.5253454550493,
+        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": "e1WoFrQ79G7r4ZuQE3HlNb"
+  },
+  {
+    "__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": "81GN3uXINKVLeW4+iKSlim"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "BG",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 2
+    },
+    "_children": [
+      {
+        "__id__": 6
+      },
+      {
+        "__id__": 9
+      },
+      {
+        "__id__": 14
+      },
+      {
+        "__id__": 16
+      },
+      {
+        "__id__": 20
+      },
+      {
+        "__id__": 22
+      },
+      {
+        "__id__": 36
+      },
+      {
+        "__id__": 58
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 65
+      }
+    ],
+    "_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
+    },
+    "_position": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_scale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_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": "caOfz9f8FBAaH3XzZEF7pl"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "PaopaoAnimation",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__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": 473,
+      "height": 474
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_position": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": -48,
+      "z": 0
+    },
+    "_scale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        6.182,
+        -66.216,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1.5,
+        1.5,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": "bbD3WQBLBB46XvSeCwivHk"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 6
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "5f435daf-b2e7-40a0-9f9c-2b301f1eb57c"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "1aEh3Xym5N/71xfE5RuT+B"
+  },
+  {
+    "__type__": "cc.Animation",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 6
+    },
+    "_enabled": true,
+    "_defaultClip": {
+      "__uuid__": "a4dc8dd1-0db5-441d-bf17-3dedf5c84a43"
+    },
+    "_clips": [
+      {
+        "__uuid__": "a4dc8dd1-0db5-441d-bf17-3dedf5c84a43"
+      }
+    ],
+    "playOnLoad": true,
+    "_id": "53lHYwRCZBF5MVMU9ZKUeC"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "TitleTxt",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [
+      {
+        "__id__": 10
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 12
+      },
+      {
+        "__id__": 13
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 0,
+      "g": 0,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 380,
+      "height": 126
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        390,
+        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": "0aT5sUvixJCJvMO+Dlroel"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "BlueLine",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 9
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 11
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 733,
+      "height": 157
+    },
+    "_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": "ecZgNC28ZDGLbaTJBTHs5w"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 10
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "2bf8f3ec-d847-4121-853f-bf25b4f09f34"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "05xdG6Ol5JTKGfbIwpc1sJ"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 9
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "正在匹配",
+    "_N$string": "正在匹配",
+    "_fontSize": 95,
+    "_lineHeight": 100,
+    "_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": "12A3aq9mNAM6UdEukYzzCL"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 9
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": {
+      "__id__": 2
+    },
+    "_alignFlags": 17,
+    "_left": 0,
+    "_right": 0,
+    "_top": 187,
+    "_bottom": 0,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_id": "3fXpDL8rFP9JTJshvuplJX"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "TimeTxt",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 15
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 0,
+      "g": 0,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 200.2,
+      "height": 100.8
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        5.519,
+        216.163,
+        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": "83rZXdzXRKqpJs31zCe+wR"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 14
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "00:00",
+    "_N$string": "00:00",
+    "_fontSize": 80,
+    "_lineHeight": 80,
+    "_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": "6eEwKim5FDHLDLupYQHf5E"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "WaitTxt",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [
+      {
+        "__id__": 17
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 19
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 0,
+      "g": 0,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 148,
+      "height": 50.4
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        10.91,
+        97.004,
+        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": "0eZMaMpB1MMJ1BZobOzZuz"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "GrayTitleLine",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 16
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 18
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 417,
+      "height": 3
+    },
+    "_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": "57x8YR4hdI/b+KsMrT5gM5"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 17
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "5d0b6ca0-933e-450a-ad97-64cfa808fad0"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "31QbA2YRVFFqJvH7STxenR"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 16
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "等待时间",
+    "_N$string": "等待时间",
+    "_fontSize": 37,
+    "_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": "3dwDXadaNMMaUp1IlCar+I"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "VS",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 21
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 71,
+      "height": 119
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        10,
+        -66,
+        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": "fetR6c/UdAep/So9IhFKMQ"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 20
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "b7b500dd-52bf-43d7-bc35-bc1771ac563f"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "d2tw4kNShBQ44y1OIAIxLa"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Player1",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [
+      {
+        "__id__": 23
+      },
+      {
+        "__id__": 25
+      },
+      {
+        "__id__": 29
+      },
+      {
+        "__id__": 31
+      }
+    ],
+    "_active": true,
+    "_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.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -190,
+        -66.216,
+        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": "8c26e269FEtIzgmjuPczLL"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Name",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 22
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 24
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 0,
+      "g": 0,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 200,
+      "height": 100
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -4.689,
+        -143,
+        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": "a3poK+l7pMpJ5H6piRHZWw"
+  },
+  {
+    "__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": "Jack",
+    "_N$string": "Jack",
+    "_fontSize": 30,
+    "_lineHeight": 30,
+    "_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": 1,
+    "_N$cacheMode": 0,
+    "_id": "2c3k2bH5dDqLMbMs3AzRkZ"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Mask",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 22
+    },
+    "_children": [
+      {
+        "__id__": 26
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 28
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 170,
+      "height": 170
+    },
+    "_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": "e0XNBeNMJO4bFCsCg1ZmrU"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "AvatarSp",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 25
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 27
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 200,
+      "height": 200
+    },
+    "_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": "88WtddLVFHI6vqZ+0lOjhS"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "HeadImg<Sprite>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 26
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "b1d7f839-2cf1-4084-bbd5-c62ec513e7bc"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "93IOI1ktFHIZznD/NUzSra"
+  },
+  {
+    "__type__": "cc.Mask",
+    "_name": "Mask<Mask>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 25
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_spriteFrame": null,
+    "_type": 1,
+    "_segments": 64,
+    "_N$alphaThreshold": 0,
+    "_N$inverted": false,
+    "_id": "c6ic9RM3JJ6qrI81SNzym5"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Stroke",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 22
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 30
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 180,
+      "height": 180
+    },
+    "_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": "31dtSINH1Icay4og+e/pn3"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "FrameMy<Sprite>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 29
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "9660088c-2cc0-400e-aa40-27ed197ea1f2"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "3dNKxSW1JMv5BzZofAa03e"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Gender",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 22
+    },
+    "_children": [
+      {
+        "__id__": 32
+      },
+      {
+        "__id__": 34
+      }
+    ],
+    "_active": true,
+    "_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.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        56.808,
+        -74.864,
+        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": "19iS+2D3dA9pUkJSDJ7gII"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "IconBoy",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 31
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 33
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 37,
+      "height": 37
+    },
+    "_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": "b6rKgRcClLkrckJo+XM03Y"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "Icon<Sprite>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 32
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "d152c886-39e5-400c-84b4-c285f24ef41c"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "cc/8DjUkxEH55T+JP4WdbV"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "IconGirl",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 31
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 35
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 37,
+      "height": 37
+    },
+    "_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": "62nW3oA/9HvbEaCbkRRWI1"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "Icon<Sprite>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 34
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "bd899779-6d48-480f-afee-9749958511fe"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "18PKZJOr5Ffopx3bJq8gTV"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Player2",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [
+      {
+        "__id__": 37
+      },
+      {
+        "__id__": 39
+      },
+      {
+        "__id__": 43
+      },
+      {
+        "__id__": 45
+      },
+      {
+        "__id__": 53
+      }
+    ],
+    "_active": true,
+    "_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.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        190,
+        -66.216,
+        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": "8ec1IU3EZAG6562cOjSVua"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Name",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 36
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 38
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 0,
+      "g": 0,
+      "b": 0,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 200,
+      "height": 100
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -1.3200000000000003,
+        -136,
+        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": "5arx7HZ+lHZpQDCxZPRx41"
+  },
+  {
+    "__type__": "cc.Label",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 37
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_useOriginalSize": false,
+    "_string": "Yichael",
+    "_N$string": "Yichael",
+    "_fontSize": 30,
+    "_lineHeight": 30,
+    "_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": 1,
+    "_N$cacheMode": 0,
+    "_id": "3cSUNua4NG+ZqLs3Kl42aR"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Mask",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 36
+    },
+    "_children": [
+      {
+        "__id__": 40
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 42
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 170,
+      "height": 170
+    },
+    "_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": "fbEPv2EJFCMqzdDEUxng7b"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "AvatarSp",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 39
+    },
+    "_children": [],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 41
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 200,
+      "height": 200
+    },
+    "_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": "58FO9gG1hBYKa/ahOwQpmR"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "HeadImg<Sprite>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 40
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "a5b19591-8257-4fe1-a5de-b30caea0a5a0"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "e90X+upfpIQpxvSVpEYLyH"
+  },
+  {
+    "__type__": "cc.Mask",
+    "_name": "Mask<Mask>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 39
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_spriteFrame": null,
+    "_type": 1,
+    "_segments": 64,
+    "_N$alphaThreshold": 0,
+    "_N$inverted": false,
+    "_id": "5atHmOOHNFHKL4VBP+dwDP"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Stroke",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 36
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 44
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 180,
+      "height": 180
+    },
+    "_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": "72Gk/5m/ZIlagIkFUYhkdf"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "FrameMy<Sprite>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 43
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "5f2e6a63-c568-462c-859f-61ea0527789c"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "a17QhA9dxHcIOgc156Bxdk"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "DotAnimation",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 36
+    },
+    "_children": [
+      {
+        "__id__": 46
+      },
+      {
+        "__id__": 48
+      },
+      {
+        "__id__": 50
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 52
+      }
+    ],
+    "_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,
+        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": "50xwxqNfNMCZsuqTO7hEG1"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "LoadingLeftDot",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 45
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 47
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 19,
+      "height": 19
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        30,
+        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": "bf81eF+2RCp5MlNHqyxM4B"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 46
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "d57e9fdf-2fbf-4d31-8170-06e8ec564c79"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "63U/kdPF5JnbMhkdTZ+Fxj"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "LoadingMiddleDot",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 45
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 49
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 19,
+      "height": 19
+    },
+    "_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": "eamH/P2plN2o6vplcnqbhp"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 48
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "6afe5901-8c94-41f1-b2a1-4d7329f77c32"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "21H6xf+ZRHW7j5I5mEUfcB"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "LoadingRightDot",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 45
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 51
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 19,
+      "height": 19
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -30,
+        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": "f1yq0bhPJKbKh/AWSXtt+x"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 50
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "0b9e2cd7-8c98-4c4a-bce6-98ee4e4389b5"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "6eIeMDlT1Dqa2OG/bx6HMz"
+  },
+  {
+    "__type__": "cc.Animation",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 45
+    },
+    "_enabled": true,
+    "_defaultClip": {
+      "__uuid__": "e6eaf390-c69a-4c3b-9b04-a9a1edcb79da"
+    },
+    "_clips": [
+      {
+        "__uuid__": "e6eaf390-c69a-4c3b-9b04-a9a1edcb79da"
+      }
+    ],
+    "playOnLoad": true,
+    "_id": "7fhPbY05ZIWLwz83DUW9y2"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Gender",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 36
+    },
+    "_children": [
+      {
+        "__id__": 54
+      },
+      {
+        "__id__": 56
+      }
+    ],
+    "_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.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        56.808,
+        -74.864,
+        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": "a6koJDd2ROD7F5JW3eNZfv"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "IconBoy",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 53
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 55
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 37,
+      "height": 37
+    },
+    "_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": "c22IxfVnBEcJ4huKYwpuug"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "Icon<Sprite>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 54
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "d152c886-39e5-400c-84b4-c285f24ef41c"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "e3csY0e9lLZqaEd0abTI3D"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "IconGirl",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 53
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 57
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 37,
+      "height": 37
+    },
+    "_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": "addaB+kG1EgIh1fT32pvFu"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "Icon<Sprite>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 56
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "bd899779-6d48-480f-afee-9749958511fe"
+    },
+    "_type": 0,
+    "_sizeMode": 0,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "06tCYhPPJN0ooymxOL9C3Z"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "MeteorLine",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 5
+    },
+    "_children": [
+      {
+        "__id__": 59
+      },
+      {
+        "__id__": 61
+      }
+    ],
+    "_active": false,
+    "_components": [
+      {
+        "__id__": 63
+      },
+      {
+        "__id__": 64
+      }
+    ],
+    "_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,
+        389.133,
+        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": "f0f5uEHJJK66uKSIehZKMh"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "DownMeteor",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 58
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 60
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 404,
+      "height": 7
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        -577,
+        -69,
+        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": "7cyvW+cDJFnITJ705tHVaa"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 59
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "d252255c-f832-4e24-82bd-04e34085de70"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "eaCFebwapB7osxYe4iwFEA"
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "UpMeteor",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 58
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 62
+      }
+    ],
+    "_prefab": null,
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 392,
+      "height": 7
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        567,
+        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": "afPaS5fI9Iy6uEfucDVBMd"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 61
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "36ae842b-93f9-4db1-998d-301a3b696e7a"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "daXHLP1xhOW5hdafcp35xx"
+  },
+  {
+    "__type__": "cc.Animation",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 58
+    },
+    "_enabled": true,
+    "_defaultClip": {
+      "__uuid__": "febfffa0-2a4b-4e78-9658-28b91e50c997"
+    },
+    "_clips": [
+      {
+        "__uuid__": "febfffa0-2a4b-4e78-9658-28b91e50c997"
+      }
+    ],
+    "playOnLoad": true,
+    "_id": "6fSEbXjzhGIKfi7qZ5Nfag"
+  },
+  {
+    "__type__": "cc.Widget",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 58
+    },
+    "_enabled": true,
+    "alignMode": 1,
+    "_target": {
+      "__id__": 2
+    },
+    "_alignFlags": 1,
+    "_left": 0,
+    "_right": 0,
+    "_top": 250.86700000000002,
+    "_bottom": 0,
+    "_verticalCenter": 0,
+    "_horizontalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_id": "8dJxHct2BII6rAWhHYogdS"
+  },
+  {
+    "__type__": "cc.Sprite",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 5
+    },
+    "_enabled": true,
+    "_materials": [
+      {
+        "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
+      }
+    ],
+    "_srcBlendFactor": 770,
+    "_dstBlendFactor": 771,
+    "_spriteFrame": {
+      "__uuid__": "df80771b-456b-47df-95e3-1176906dd83c"
+    },
+    "_type": 0,
+    "_sizeMode": 1,
+    "_fillType": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_atlas": null,
+    "_id": "efpjIbZyNB8aH7TV0Xi7GJ"
+  },
+  {
+    "__type__": "cc.Canvas",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_designResolution": {
+      "__type__": "cc.Size",
+      "width": 720,
+      "height": 1280
+    },
+    "_fitWidth": true,
+    "_fitHeight": false,
+    "_id": "59Cd0ovbdF4byw5sbjJDx7"
+  },
+  {
+    "__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": "29zXboiXFBKoIV4PQ2liTe"
+  },
+  {
+    "__type__": "9066afLeE9IgoTgJNnVeW4v",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "nextSceneName": "Game",
+    "bOpenMgobeServer": false,
+    "player1": {
+      "__id__": 22
+    },
+    "player2": {
+      "__id__": 36
+    },
+    "titleTxt": {
+      "__id__": 9
+    },
+    "timeTxt": {
+      "__id__": 14
+    },
+    "waitTxt": {
+      "__id__": 16
+    },
+    "successAudio": {
+      "__uuid__": "cb39bc91-cbde-46ee-9597-b1d25a611d48"
+    },
+    "meteorLine": {
+      "__id__": 58
+    },
+    "_id": "d2hnBpxkZDCptraaSnPRNe"
+  }
+]

+ 7 - 0
assets/Scenes/Pairing.fire.meta

@@ -0,0 +1,7 @@
+{
+  "ver": "1.2.8",
+  "uuid": "a0c19945-fbba-43ae-98d2-535782ba3441",
+  "asyncLoadAssets": false,
+  "autoReleaseAssets": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/Scripts.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "86e82008-e7ca-47d1-befb-c621dd93a46a",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 12 - 0
assets/Scripts/Game.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "728170d0-0879-47fe-b47e-4756861c1ad6",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 165 - 0
assets/Scripts/Game/Actor.js

@@ -0,0 +1,165 @@
+let library = require("../Library");
+let gameConfig = require("GameConfig");
+cc.Class({
+    extends: cc.Component,
+
+    properties: {
+        gameStates: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        aiPlayerController: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        nameIndex:0
+    },
+    onLoad () {
+        this.gStatesScp = this.gameStates.getComponent('GameStates');
+        this.aiPConScp = this.aiPlayerController.getComponent('AiPlayerController');
+
+        this.bBeat = false;
+
+        this.comeOutY = -110;
+        this.hiddenY = -340;
+
+        this.armatureDisplay = this.getComponent(dragonBones.ArmatureDisplay);
+
+        this.blueArmatureDisplay = this.node.getChildByName('quantao_blue_ske').getComponent(dragonBones.ArmatureDisplay);
+        this.redArmatureDisplay = this.node.getChildByName('quantao_ske').getComponent(dragonBones.ArmatureDisplay);
+        //获取 Armatrue
+        this.armature = this.armatureDisplay.armature();
+        //添加动画监听
+        this.armatureDisplay.addEventListener(dragonBones.EventObject.COMPLETE, this.animationEventHandler, this);
+
+
+        this.idleAnimName = [
+            'idle',
+            'idle1',
+            'idle2',
+        ];
+
+        this.hookAnimName = [
+            'joy21',
+            'joy22',
+            'joy23',
+        ];
+
+        this.jayAnimName = [
+            'hook11',
+            'hook12',
+            'hook13',
+        ];
+
+        this.dizzAnimName = [
+            'dizzy',
+            'dizzy1',
+            'dizzy2',
+        ];
+
+        this.currentActorName = 0;
+    },
+    spawn(appearDur){
+        let self = this;
+
+        library.removeObj(this.gStatesScp.hiddenMouseArr,this.node);
+        this.gStatesScp.appearMouseArr.push(this.node);
+
+        this.currentActorName = library.randomInt(0,2);
+
+        this.armatureDisplay.playAnimation(this.idleAnimName[this.currentActorName],1);
+
+        //come out
+        cc.tween(self.node)
+            .to(0.1, { position: cc.v2(self.node.x,self.comeOutY)})
+            .call(() =>
+            {
+                self.bBeat = true;
+                self.aiPConScp.actorComeOut(self.nameIndex,appearDur);
+                //delay to play
+                self.scheduleOnce(function () {
+
+                    if(!self.bBeat) return;
+                    self.die();
+
+                },appearDur);
+            })
+            .start()
+    },
+    comeOutFinished(self)
+    {
+        //come in
+        cc.tween(self.node)
+            .to(0.1, { position: cc.v2(self.node.x,self.hiddenY)})
+            .start();
+    },
+    punch(bAi)
+    {
+        this.bBeat = false;
+        if(0==this.nameIndex)
+        {
+            this.armatureDisplay.playAnimation(this.hookAnimName[this.currentActorName],1);
+            if(bAi)
+            {
+                this.redArmatureDisplay.playAnimation("attack2",1);
+            }
+            else
+            {
+                this.blueArmatureDisplay.playAnimation("attack2",1);
+            }
+
+            return;
+        }
+
+        //left or right punch
+        this.armatureDisplay.playAnimation(this.jayAnimName[this.currentActorName],1);
+        if(bAi)
+        {
+            this.redArmatureDisplay.playAnimation("attack1",1);
+        }
+        else
+        {
+            this.blueArmatureDisplay.playAnimation("attack1",1);
+        }
+    },
+    animationEventHandler(event)
+    {
+        if (event.type === dragonBones.EventObject.COMPLETE)
+        {
+            if (event.animationState.name === "hook11")
+            {
+                this.die();
+            }
+            else if (event.animationState.name === "hook12")
+            {
+                this.die();
+            }
+            else if (event.animationState.name === "hook13")
+            {
+                this.die();
+            }
+            else if (event.animationState.name === "joy21")
+            {
+                this.die();
+            }
+            else if (event.animationState.name === "joy22")
+            {
+                this.die();
+            }
+            else if (event.animationState.name === "joy23")
+            {
+                this.die();
+            }
+        }
+    },
+    die()
+    {
+        this.bBeat = false;
+        library.removeObj(this.gStatesScp.appearMouseArr,this.node);
+        this.gStatesScp.hiddenMouseArr.push(this.node);
+
+        this.comeOutFinished(this);
+    },
+});

+ 9 - 0
assets/Scripts/Game/Actor.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "1d0611a0-b223-484b-97e7-2b7199a4f059",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 59 - 0
assets/Scripts/Game/AiPlayerController.js

@@ -0,0 +1,59 @@
+let library = require("../Library");
+let webView = require("../WebView");
+cc.Class({
+    extends: require("BasePlayerController"),
+
+    properties: {
+
+    },
+    start()
+    {
+        this._super();
+        if(cc.sys.isMobile)
+        {
+            this.avatar.spriteFrame = webView.rivalAvatarSpriteFrame;
+            this.avatar.node.width = 80;
+            this.avatar.node.height = 80;
+            this.playerName.string = webView.rivalUserName;
+            this.gender.string = webView.rivalGender;
+        }
+
+        this.gStatesScp.playerStatesArr.push(this.pStatesScp);
+    },
+    hit()
+    {
+        this.pStatesScp.hit++;
+        this.score.string = this.pStatesScp.hit.toString();
+    },
+    actorComeOut(nameIndex,appearDur)
+    {
+        return;
+        let timing = library.getRandom(0.5, appearDur, 1);
+        let bBeat = library.randomInt(0,3);
+        // console.log('bBeat=',bBeat);
+        // console.log('appearDur=',appearDur);
+        if(bBeat!=0)
+        {
+            timing = appearDur;
+        }
+        // console.log('nameIndex=',nameIndex);
+        this.scheduleOnce(function () {
+            switch (nameIndex) {
+                case 0:
+                    this.top();
+                    break;
+
+                case 1:
+                    this.left();
+                    break;
+
+                case 2:
+                    this.right();
+                    break;
+
+                default:
+                    break;
+            }
+        },timing);
+    }
+});

+ 9 - 0
assets/Scripts/Game/AiPlayerController.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "c4010b3b-1ea9-4d31-a7ad-35e1dab3fdb7",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 10 - 0
assets/Scripts/Game/AiPlayerStates.js

@@ -0,0 +1,10 @@
+cc.Class({
+    extends: require("BasePlayerStates"),
+
+    properties: {
+
+    },
+    start () {
+
+    },
+});

+ 9 - 0
assets/Scripts/Game/AiPlayerStates.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "902e8818-a1d7-4987-b1bb-8b4675161252",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 129 - 0
assets/Scripts/Game/AudioController.js

@@ -0,0 +1,129 @@
+cc.Class({
+    extends: cc.Component,
+
+    properties: {
+
+    },
+    play(name)
+    {
+        let self = this;
+
+        cc.loader.loadRes(name, cc.AudioClip, (err, audioClip)=> {
+            self.currentAudio = cc.audioEngine.play(audioClip, false, 1);
+        });
+    },
+    playAudio(name,callback)
+    {
+        let self = this;
+
+        cc.loader.loadRes(name, cc.AudioClip, (err, audioClip)=> {
+            self.currentAudio = cc.audioEngine.play(audioClip, false, 1);
+            cc.audioEngine.setFinishCallback(self.currentAudio, function ()
+            {
+                callback();
+            });
+        });
+    },
+    playAudioBySequence(arr,callback)
+    {
+        let self = this;
+
+        let aIndex = 0;
+
+        let playDemonstrationAudio = function () {
+
+            if(aIndex == arr.length)
+            {
+                callback();
+                return;
+            }
+            if(typeof arr[aIndex] === "number")
+            {
+
+                self.playNumAudio(arr[aIndex],function () {
+                    aIndex++;
+                    playDemonstrationAudio();
+
+                });
+            }
+            else
+            {
+                self.playAudio(arr[aIndex],playDemonstrationAudio);
+                aIndex++;
+            }
+        };
+
+        playDemonstrationAudio(arr[aIndex],playDemonstrationAudio);
+    },
+    playNumAudio(num,callback)
+    {
+
+        if(num == 15)
+        {
+            this.playAudio('Audios/Game/Others/一组15秒',callback);
+        }
+        else if(num == 20)
+        {
+            this.playAudio('Audios/Game/Others/一组20秒',callback);
+        }
+        else if(num == 25)
+        {
+            this.playAudio('Audios/Game/Others/一组25秒',callback);
+        }
+        else if(num == 30)
+        {
+            this.playAudio('Audios/Game/Others/一组30秒',callback);
+        }
+        // let numArr = [];
+        // this.appendNum(num,numArr);
+        //
+        // let aIndex = 0;
+        // let playNum = function () {
+        //     if(aIndex == numArr.length)
+        //     {
+        //         this.unschedule(playNum);
+        //         // console.log('22222')
+        //         this.scheduleOnce(function () {
+        //             callback();
+        //         }, 0.3);
+        //
+        //         return;
+        //     }
+        //     this.play(numArr[aIndex]);
+        //     aIndex++;
+        // };
+        // this.schedule(playNum, 0.3);
+    },
+    appendNum(num,arr)
+    {
+        if(num == 10)
+        {
+            arr.push('Audios/Game/Nums/10');
+            return;
+        }
+
+        if(num > 10 && num < 20)
+        {
+
+            let str = num.toString();
+            arr.push('Audios/Game/Nums/10');
+            arr.push('Audios/Game/Nums/'+str.substr(1,1));
+            return;
+        }
+
+
+        let str = num.toString();
+
+        arr.push('Audios/Game/Nums/'+str.substr(0,1));
+
+        if(str.length>1)
+        {
+            arr.push('Audios/Game/Nums/10');
+
+            if(str.substr(1,1)!='0')
+            {
+                arr.push('Audios/Game/Nums/'+str.substr(1,1));
+            }
+        }
+    }
+});

+ 9 - 0
assets/Scripts/Game/AudioController.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "9e716ad6-d3da-47ef-aa13-47571bb28c13",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/Scripts/Game/Base.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "0c436e47-7135-4e99-974c-cee709766563",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 154 - 0
assets/Scripts/Game/Base/BasePlayerController.js

@@ -0,0 +1,154 @@
+let webView = require("../../WebView");
+let library = require("../../Library");
+let gameConfig = require("../GameConfig");
+cc.Class({
+    extends: cc.Component,
+
+    properties: {
+        gameStates: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        gameMode: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        topHole: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        leftHole: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        rightHole: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        avatar: {
+            default: null,
+            type: cc.Sprite,
+            serializable: true,
+        },
+        playerName: {
+            default: null,
+            type: cc.Label,
+            serializable: true,
+        },
+        score: {
+            default: null,
+            type: cc.Label,
+            serializable: true,
+        },
+        gender: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        hp: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        bAi:true,
+        id:0,
+    },
+    onLoad () {
+        this.init();
+        if(cc.sys.isMobile)
+        {
+            webView.register(this.node);
+        }
+    },
+    init()
+    {
+        this.topHoleScp = this.topHole.getComponent('Actor');
+        this.leftHoleScp = this.leftHole.getComponent('Actor');
+        this.rightHoleScp = this.rightHole.getComponent('Actor');
+        this.gStatesScp = this.gameStates.getComponent('GameStates');
+        this.gameModeScp = this.gameMode.getComponent('GameMode');
+        this.pStatesScp = this.node.getComponent('BasePlayerStates');
+
+        this.hpScp = this.hp.getComponent('MaskedProgressBar');
+
+        this.bCd = false;
+    },
+    start()
+    {
+        this.score.string = this.pStatesScp.hit.toString();
+    },
+    left()
+    {
+        if(this.gStatesScp.curretState == this.gStatesScp.finished) return;
+
+        if(!this.leftHoleScp.bBeat)
+        {
+            this.wrong();
+
+            return;
+        }
+
+        this.leftHoleScp.punch(this.bAi);
+        this.hit();
+    },
+    top()
+    {
+        if(this.gStatesScp.curretState == this.gStatesScp.finished) return;
+        if(!this.topHoleScp.bBeat)
+        {
+            this.wrong();
+
+            return;
+        }
+
+        this.topHoleScp.punch(this.bAi);
+        this.hit();
+    },
+    right()
+    {
+        if(this.gStatesScp.curretState == this.gStatesScp.finished) return;
+        if(!this.rightHoleScp.bBeat)
+        {
+            this.wrong();
+
+            return;
+        }
+
+        this.rightHoleScp.punch(this.bAi);
+        this.hit();
+    },
+    noDirectionPunch()
+    {
+        if(this.gStatesScp.curretState == this.gStatesScp.finished) return;
+        let arr = this.gStatesScp.appearMouseArr;
+        for(let i=0;i<arr.length;i++)
+        {
+            let obj = arr[i].getComponent('Actor');
+            if(!obj.bBeat) return;
+            obj.punch(this.bAi);
+            this.hit();
+        }
+    },
+    wrong()
+    {
+        if(!this.pStatesScp.bPlayDirection) return;
+        //if miss u will be damaged
+        let damage = gameConfig.damage;
+        this.pStatesScp.hp-=damage;
+        this.hpScp.damage(damage);
+        this.pStatesScp.miss++;
+
+        //if hp = 0 game over
+        if(this.pStatesScp.hp == 0)
+        {
+            this.gameModeScp.gameOver();
+        }
+    },
+
+    actorComeOut(nameIndex,appearDur){},//for ai playerController
+});

+ 9 - 0
assets/Scripts/Game/Base/BasePlayerController.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "b3cb7d12-05e8-4c6e-888e-a08b5a125f2a",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/Scripts/Game/Base/BasePlayerStates.js

@@ -0,0 +1,12 @@
+cc.Class({
+    extends: cc.Component,
+
+    properties: {
+
+    },
+    onLoad () {
+        this.hp = 100;
+        this.hit  = 0;
+        this.miss = 0;
+    },
+});

+ 9 - 0
assets/Scripts/Game/Base/BasePlayerStates.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "0b11beed-d6a5-4d3d-b595-7746b3f2ec04",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 14 - 0
assets/Scripts/Game/BloodyFlash.js

@@ -0,0 +1,14 @@
+cc.Class({
+    extends: cc.Component,
+
+    properties: {
+
+    },
+    flash()
+    {
+        cc.tween(this.node)
+            .to(0.1, { opacity: 100})
+            .to(0.1, { opacity: 0})
+            .start()
+    }
+});

+ 9 - 0
assets/Scripts/Game/BloodyFlash.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "042a2281-bb9f-4ec7-a475-7abaa4eac39d",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 19 - 0
assets/Scripts/Game/GameConfig.js

@@ -0,0 +1,19 @@
+let gameConfig = {
+    roundTime: 60*2,
+    kCalPerTime:0.0004479,
+    damage:10,
+    comeOutAiInLv:
+    [
+        // {percentage:10,appearDur:1,duration:3,num:1},
+        // {percentage:30,appearDur:1,duration:1,num:1},
+        // {percentage:50,appearDur:0.5,duration:3,num:1},
+        // {percentage:70,appearDur:3,duration:3,num:2},
+        // {percentage:90,appearDur:6,duration:3,num:3},
+        {percentage:10,appearDur:2,duration:3,num:1},
+        {percentage:30,appearDur:1,duration:1,num:1},
+        {percentage:50,appearDur:0.5,duration:3,num:1},
+        {percentage:70,appearDur:0.5,duration:1,num:1},
+        {percentage:90,appearDur:0.5,duration:0.5,num:1},
+    ]
+};
+module.exports = gameConfig;

+ 9 - 0
assets/Scripts/Game/GameConfig.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "16820f39-3228-497e-ab40-89d547595a25",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 185 - 0
assets/Scripts/Game/GameMode.js

@@ -0,0 +1,185 @@
+let library = require("../Library");
+let gameConfig = require("GameConfig");
+cc.Class({
+    extends: cc.Component,
+
+    properties: {
+        gameStates: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        readyGo: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        totalTime: {
+            default: null,
+            type: cc.Label,
+            serializable: true,
+        },
+        timeProgress: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        scareCrow: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        result: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+    },
+    start () {
+        this.init();
+        this.armatureDisplay.playAnimation("animation",1);
+    },
+    init()
+    {
+        //init node
+        this.gStatesScp = this.gameStates.getComponent('GameStates');
+        this.audioPContrScp = this.gameStates.getComponent('AudioController');
+        this.armatureDisplay = this.readyGo.getComponent(dragonBones.ArmatureDisplay);
+        //获取 Armatrue
+        this.armature = this.armatureDisplay.armature();
+        //添加动画监听
+        this.armatureDisplay.addEventListener(dragonBones.EventObject.COMPLETE, this.animationEventHandler, this)
+
+        this.totalTime.string = library.formatSeconds(this.gStatesScp.currentTime);
+        this.timeProgressScp = this.timeProgress.getComponent('ProgressBar');
+
+        this.gStatesScp.curretState = this.gStatesScp.playing;
+        this.lastAppearMouse = null;
+    },
+    animationEventHandler(event)
+    {
+        let self = this;
+        if (event.type === dragonBones.EventObject.COMPLETE)
+        {
+            if (event.animationState.name === "animation")
+            {
+                this.getComponent(cc.AudioSource).play();
+                this.fireTick();
+                //come in
+                cc.tween(self.scareCrow)
+                    .by(0.1, { position: cc.v2(self.scareCrow.width,self.scareCrow.y)})
+                    .start()
+                this.scheduleOnce(function () {
+                    this.startComeOutMouse();
+                },2)
+            }
+        }
+    },
+    fireTick()
+    {
+        this.schedule(this.tick, 1);
+    },
+    tick()
+    {
+        if(this.gStatesScp.currentTime==0)
+        {
+            this.untick();
+            this.gameOver();
+            return;
+        }
+        //total time
+        this.gStatesScp.currentTime--;
+        this.totalTime.string = library.formatSeconds(this.gStatesScp.currentTime);
+        this.timeProgressScp.setValue(1-(this.gStatesScp.currentTime/gameConfig.roundTime));
+
+        this.checkCurrentLV();
+    },
+    untick()
+    {
+        this.unschedule(this.tick);
+    },
+    checkCurrentLV()
+    {
+        let c_percentage = (1-this.gStatesScp.currentTime/gameConfig.roundTime)*100;
+        let percentage = gameConfig.comeOutAiInLv[this.gStatesScp.currentLv].percentage;
+        // console.log('00000=',c_percentage)
+        // console.log('11111=',percentage)
+        if(c_percentage>=percentage &&
+            this.gStatesScp.currentLv<gameConfig.comeOutAiInLv.length-1)
+        {
+            this.gStatesScp.currentLv++;
+        }
+    },
+    startComeOutMouse()
+    {
+        let self = this;
+        let lv = gameConfig.comeOutAiInLv;
+        let gStates = this.gStatesScp;
+
+        //结束后关闭计时器
+        if(gStates.curretState == gStates.finished)
+        {
+            self.unschedule(this.startComeOutMouse);
+            return;
+        }
+
+        let appearDur = lv[gStates.currentLv].appearDur;
+        let num = lv[gStates.currentLv].num;
+        // console.log('111=',gStates.hiddenMouseArr.length);
+        // console.log('num=',num);
+        //如果数组里面的数量小于num 就不要生成那么多地鼠
+        if(num>gStates.hiddenMouseArr.length)
+        {
+            num = gStates.hiddenMouseArr.length;
+        }
+
+        //随机1-num 出地鼠保证出地鼠不是看起来都是 同样的数量 好看
+        if(gStates.hiddenMouseArr.length!=0)
+        {
+            num = library.randomInt(1,num);
+        }
+        // console.log('num33=',num)
+        //创建地鼠
+        for(let i=0;i<num;i++)
+        {
+            let index = library.randomInt(0,gStates.hiddenMouseArr.length-1);
+            let aMouse = gStates.hiddenMouseArr[index];
+
+            if(self.lastAppearMouse == aMouse)
+            {
+                if(index+1>=gStates.hiddenMouseArr.length)
+                {
+                    index = 0;
+                }
+                else
+                {
+                    aMouse = gStates.hiddenMouseArr[index+1];
+                }
+            }
+            self.lastAppearMouse = aMouse;
+            let aMouseScp = aMouse.getComponent('Actor');
+            aMouseScp.spawn(appearDur);
+        }
+        // next turn
+        let nextTurnDur = lv[gStates.currentLv].appearDur+lv[gStates.currentLv].duration+0.1+0.1;
+        // console.log('1111=',lv[gStates.currentLv].appearDur)
+        // console.log('1111=',lv[gStates.currentLv].duration)
+        self.scheduleOnce(function () {
+            self.startComeOutMouse();
+        },nextTurnDur);
+    },
+    gameOver()
+    {
+        this.untick();
+        this.result.active = true;
+        let resultScp = this.result.getComponent('Result');
+        resultScp.setResult();
+
+        this.gStatesScp.curretState = this.gStatesScp.finished;
+    },
+    replay()
+    {
+        // cc.director.loadScene("Pairing");
+        cc.director.loadScene("Game");
+    },
+});

+ 9 - 0
assets/Scripts/Game/GameMode.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "9f7e025b-7393-4885-95b0-bdf198685072",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 37 - 0
assets/Scripts/Game/GameStates.js

@@ -0,0 +1,37 @@
+let gameConfig = require("GameConfig");
+cc.Class({
+    extends: cc.Component,
+    properties: {
+        topHole: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        leftHole: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        rightHole: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        bPlayDirection:false
+    },
+    onLoad () {
+        this.playerStatesArr = [];
+        this.bVsAi = true;
+        this.currentTime = gameConfig.roundTime;
+        this.currentLv = 0;
+
+        //progress
+        this.default=0;
+        this.playing=1;
+        this.finished=2;
+        this.curretState = this.default;
+
+        this.appearMouseArr = [];
+        this.hiddenMouseArr = [this.topHole,this.leftHole,this.rightHole];
+    },
+});

+ 9 - 0
assets/Scripts/Game/GameStates.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "e167d9b6-3a83-4ddc-84b9-131e509574b4",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 11 - 0
assets/Scripts/Game/MaskedProgressBar.js

@@ -0,0 +1,11 @@
+cc.Class({
+    extends: cc.Component,
+
+    properties: {
+
+    },
+    damage(num)
+    {
+        this.node.width -= this.node.width*num/100;
+    }
+});

+ 9 - 0
assets/Scripts/Game/MaskedProgressBar.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "80d54ced-3bb4-475f-80e7-6531fdd306b3",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 97 - 0
assets/Scripts/Game/PlayerController.js

@@ -0,0 +1,97 @@
+let gameConfig = require("GameConfig");
+let webView = require("../WebView");
+cc.Class({
+    extends: require("BasePlayerController"),
+
+    properties: {
+        hitAudio: {
+            default: null,
+            type: cc.AudioClip,
+            serializable: true,
+        },
+        missAudio: {
+            default: null,
+            type: cc.AudioClip,
+            serializable: true,
+        },
+        bloodFlash: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+    },
+    start()
+    {
+        this._super();
+        if(cc.sys.isMobile)
+        {
+            this.avatar.spriteFrame = webView.avatarSpriteFrame;
+            this.avatar.node.width = 80;
+            this.avatar.node.height = 80;
+            this.playerName.string = webView.userName;
+            this.gender.string = webView.gender;
+
+            webView.onBindHitBoxingPost();
+            webView.onAddQuitModalListener();//添加退出事件
+            this.node.on('onBoxingPostHit',this.onBoxingPostHit,this);
+            this.node.on('onQuit',this.onQuit,this);
+            this.node.on('onQuitModal',this.onQuitModal,this);
+        }
+
+        //注册Touch事件
+        this.topHole.on(cc.Node.EventType.TOUCH_START,this.top,this);
+        this.leftHole.on(cc.Node.EventType.TOUCH_START,this.left,this);
+        this.rightHole.on(cc.Node.EventType.TOUCH_START,this.right,this);
+
+        this.flashScp = this.bloodFlash.getComponent('BloodyFlash');
+        this.gStatesScp.playerStatesArr.unshift(this.pStatesScp);
+    },
+    hit()
+    {
+        this.pStatesScp.hit++;
+        this.score.string = this.pStatesScp.hit.toString();
+        cc.audioEngine.play(this.hitAudio, false, 1);
+    },
+    wrong()
+    {
+        if(!this.pStatesScp.bPlayDirection) return;
+        this._super();
+        this.flashScp.flash();
+        cc.audioEngine.play(this.missAudio, false, 1);
+    },
+    onBoxingPostHit(data)
+    {
+        if(this.bCd) return;
+        this.bCd = true;
+        let self = this;
+        this.scheduleOnce(function () {
+            self.bCd = false;
+        },0.1);
+
+        if(this.gStatesScp.curretState == this.gStatesScp.finished) return;
+        // console.log('data.ename='+data.ename);
+        if(data.ename == 'hit')
+        {
+            this.noDirectionPunch();
+        }
+    },
+    //页面退出回调
+    onQuit(data)
+    {
+        // console.log('onQuit=',data);
+    },
+    //弹出框回调
+    onQuitModal(res)
+    {
+        if (res.data.confirm) {
+            // let kCal = this.gStatesScp.hitCount*webView.caloriUnit+this.gStatesScp.currentTime*300/3600;
+            let kCal = this.pStatesScp.hit*webView.kCalUnit;
+            // console.log('webView.kCalUnit=',webView.kCalUnit);
+            // console.log('this.pStatesScp0.hit=',this.pStatesScp.hit);
+            webView.uploadInfo(0,this.gStatesScp.currentTime, kCal);
+            webView.closeGame();
+        }else if(res.data.cancel){
+            console.log("取消");
+        }
+    }
+});

+ 9 - 0
assets/Scripts/Game/PlayerController.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "590824ba-3150-4c37-9680-8602ad7b1537",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 7 - 0
assets/Scripts/Game/PlayerStates.js

@@ -0,0 +1,7 @@
+cc.Class({
+    extends: require("BasePlayerStates"),
+
+    properties: {
+
+    },
+});

+ 9 - 0
assets/Scripts/Game/PlayerStates.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "ac6b1a40-8f92-4237-a671-13438cdaf098",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 14 - 0
assets/Scripts/Game/ProgressBar.js

@@ -0,0 +1,14 @@
+cc.Class({
+    extends: cc.Component,
+
+    properties: {
+
+    },
+    // ProgressBar.js
+    setValue(value)
+    {
+        if(value<0) return;
+
+        this.node.getComponent(cc.Sprite).fillRange = value;
+    }
+});

+ 9 - 0
assets/Scripts/Game/ProgressBar.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "d2947d8e-ea41-41ee-a8ba-40e600f2cb78",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 77 - 0
assets/Scripts/Game/Result.js

@@ -0,0 +1,77 @@
+let gameConfig = require("GameConfig");
+let library = require("../Library");
+let webView = require("../WebView");
+cc.Class({
+    extends: cc.Component,
+
+    properties: {
+        gameStates: {
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        playerStates0:{
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        miss: {
+            default: null,
+            type: cc.Label,
+            serializable: true,
+        },
+        hit: {
+            default: null,
+            type: cc.Label,
+            serializable: true,
+        },
+        kCal: {
+            default: null,
+            type: cc.Label,
+            serializable: true,
+        },
+        time: {
+            default: null,
+            type: cc.Label,
+            serializable: true,
+        },
+        resultBarSp:{
+            default: null,
+            type: cc.Node,
+            serializable: true,
+        },
+        winBarFrame:{
+            default: null,
+            type: cc.SpriteFrame,
+            serializable: true,
+        },
+        defeatBarFrame:{
+            default: null,
+            type: cc.SpriteFrame,
+            serializable: true,
+        },
+    },
+    setResult()
+    {
+        this.gStatesScp = this.gameStates.getComponent('GameStates');
+        this.pStatesScp0 = this.gStatesScp.playerStatesArr[0];
+        this.pStatesScp1 = this.gStatesScp.playerStatesArr[1];
+        if(this.pStatesScp0.hit>this.pStatesScp1.hit)
+        {
+            this.resultBarSp.spriteFrame = this.winBarFrame;
+        }
+        else
+        {
+            this.resultBarSp.spriteFrame = this.defeatBarFrame;
+        }
+
+        // this.miss.string = this.pStatesScp0.miss;
+        this.hit.string = this.pStatesScp0.hit;
+        this.kCal.string = 'Burn Calories: '+(this.pStatesScp0.hit*gameConfig.kCalPerTime).toFixed(4);
+        this.time.string = 'Time: '+library.formatSeconds(gameConfig.roundTime-this.gStatesScp.currentTime);
+
+        if(!cc.sys.isMobile) return;
+        let kCal = this.pStatesScp0.hit*webView.kCalUnit;
+        webView.uploadInfo(this.pStatesScp0.hit,this.gStatesScp.currentTime, kCal);
+    }
+});

+ 9 - 0
assets/Scripts/Game/Result.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "41c16186-b481-488e-a006-bd0c83c72427",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 107 - 0
assets/Scripts/Library.js

@@ -0,0 +1,107 @@
+let library ={
+    formatSeconds(value) {
+        let result = parseInt(value);
+        // let h = Math.floor(result / 3600) < 10 ? '0' + Math.floor(result / 3600) : Math.floor(result / 3600);
+        // let m = Math.floor((result / 60 % 60)) < 10 ? '0' + Math.floor((result / 60 % 60)) : Math.floor((result / 60 % 60));
+        let m = Math.floor((result / 60 % 60)) < 10 ? '' + Math.floor((result / 60 % 60)) : Math.floor((result / 60 % 60));
+        let s = Math.floor((result % 60)) < 10 ? '0' + Math.floor((result % 60)) : Math.floor((result % 60));
+
+        let res = '';
+        // if(h !== '00') res += `${h}h`;
+        // if(m !== '00') res += `${m}min`;
+        // res += `${s}s`;
+        // if(h !== '00') res += `${h}:`;
+        res += `${m}:`;
+        res += `${s}`;
+        return res;
+    },
+    randomInt(min, max){
+        return Math.floor(Math.random() * (max+1 - min)) + min;
+    },
+    getRandom(start, end, fixed=0) {
+        //fixed 保留几位小数
+        let differ = end - start
+        let random = Math.random()
+        return (start + differ * random).toFixed(fixed)
+    },
+    removeObj(arr,obj)
+    {
+        let index = this.indexOf(arr,obj);
+
+        if (index > -1) {
+            arr.splice(index, 1);
+        }
+    },
+    indexOf(arr,obj) {
+        for (var i = 0; i < arr.length; i++) {
+            if (arr[i] == obj) return i;
+        }
+        return -1;
+    },
+    insert(arr,index, item) {
+        arr.splice(index, 0, item);
+    },
+
+
+    //数组元素位置替换
+    swapArray: function(arr, index1, index2) {
+        arr[index1] = arr.splice(index2, 1, arr[index1])[0];
+        return arr;
+    },
+    swapLeft : function(arr) {
+        let element = arr.shift();
+        arr.push(element);
+    },
+    //生成指定范围随机整数
+    randomFromIntRange: function(min, max) {
+        return Math.floor(Math.random() * (max - min)) + min;
+    },
+    happenRate: function(rate) {
+        let result = this.randomFromIntRange(0,100);
+        if(result<rate)
+        {
+            return true;
+        }
+        else
+        {
+            return false;
+        }
+        return;
+    },
+    openInWebview () {
+        let ua = navigator.userAgent.toLowerCase()
+        if (ua.match(/MicroMessenger/i) == 'micromessenger') { // 微信浏览器判断
+            return false
+        } else if (ua.match(/QQ/i) == 'qq') { // QQ浏览器判断
+            return false
+        } else if (ua.match(/WeiBo/i) == "weibo") {
+            return false
+        } else {
+            if (ua.match(/Android/i) != null) {
+                return ua.match(/browser/i) == null
+            } else if (ua.match(/iPhone/i) != null) {
+                return ua.match(/safari/i) == null
+            } else {
+                return (ua.match(/macintosh/i) == null && ua.match(/windows/i) == null)
+            }
+        }
+    },
+    remove(arr, item) {
+        let index = arr.indexOf(item);
+        if (index > -1) {
+            arr.splice(index, 1);
+        }
+    },
+    setImageBase64(base64Url,callback){
+        let img = new Image();
+        img.src = base64Url;
+        img.onload = function(){
+            let texture = new cc.Texture2D();
+            texture.initWithElement(img);
+            texture.handleLoadedTexture();
+            if (callback)
+                callback(texture);
+        }
+    },
+};
+module.exports = library;

+ 9 - 0
assets/Scripts/Library.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "fa3cf441-b375-4b55-95ee-31201ec0bae2",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/Scripts/Matching.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "43dc5dd6-23c1-4fc2-bb30-c2806a32652b",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 259 - 0
assets/Scripts/Matching/PairingMode.js

@@ -0,0 +1,259 @@
+let webView = require("../WebView");
+let lib = require("../Library");
+let mgobe = require("../Mgobe");
+cc.Class({
+    extends: cc.Component,
+
+    properties: {
+        nextSceneName: {
+            default: '',
+        },
+        bOpenMgobeServer: {
+            default: false,
+        },
+        player1: {
+            default: null,
+            type: cc.Node,
+        },
+        player2: {
+            default: null,
+            type: cc.Node,
+        },
+        titleTxt: {
+            default: null,
+            type: cc.Node,
+        },
+        timeTxt: {
+            default: null,
+            type: cc.Node,
+        },
+        waitTxt: {
+            default: null,
+            type: cc.Node,
+        },
+        successAudio: {
+            default: null,
+            type: cc.AudioClip,
+        },
+        meteorLine: {
+            default: null,
+            type: cc.Node,
+        },
+    },
+    onLoad() {
+        let self = this;
+        this.init();
+
+        //init web sdk
+        if (lib.openInWebview())
+        {
+            // 在app内Webview打开
+            webView.init(this.node,function () {
+                self.starMatching();
+            });
+        }
+
+        //register event from webView
+        this.node.on('onGameInit',this.onGameInit,this);
+        this.node.on('onAiRandomInfo',this.onAiRandomInfo,this);
+        this.node.on('onUrlToBase64',this.onUrlToBase64,this);
+
+        //count down time to match ui
+        let interval = 1;  // 以秒为单位的时间间隔let
+        let repeat = cc.macro.REPEAT_FOREVER;  // 重复次数
+        let delay = 0;  // 开始延时
+        this.schedule(this.countTime, interval, repeat, delay);
+
+        // 因为在手机端加载场景要5-8秒钟 所以提早加载
+        // because loading scene not a immediately stuff,A smart phone will cost 5-8 second for loading
+        if(this.nextSceneName!='')
+        {
+            cc.director.preloadScene(this.nextSceneName);
+        }
+    },
+    init() {
+        this.matchTime = 0;
+
+        webView.avatarSpriteFrame = this.player1.getChildByName('Mask').getChildByName('AvatarSp').getComponent(cc.Sprite).spriteFrame;
+        webView.rivalAvatarSpriteFrame = this.player2.getChildByName('Mask').getChildByName('AvatarSp').getComponent(cc.Sprite).spriteFrame;
+
+        this.name1 = this.player1.getChildByName('Name');
+        this.name2 = this.player2.getChildByName('Name');
+
+        webView.userName = this.name1.getComponent(cc.Label).string;
+        webView.rivalUserName = this.name2.getComponent(cc.Label).string;
+
+        this.gender1 = this.player1.getChildByName('Gender');
+        this.gender2 = this.player2.getChildByName('Gender');
+
+        this.avatarSp1 = this.player1.getChildByName('Mask').getChildByName('AvatarSp');
+        this.avatarSp2 = this.player2.getChildByName('Mask').getChildByName('AvatarSp');
+    },
+    countTime() {
+        //update countdown time on UI
+        this.timeTxt.getComponent(cc.Label).string = this.updateTime(this.matchTime);
+        this.matchTime++;
+
+        if (this.matchTime > 5)
+        {
+            this.unschedule(this.countTime);
+
+            if(this.bOpenMgobeServer)//if using Mgobe
+            {
+                // 在app内Webview打开
+                if(lib.openInWebview())
+                {
+                    mgobe.cancelPlayerMatch(function () {
+                        this.generateAI();
+                    }.bind(this));
+                }
+                else {
+                    this.quickStart();
+                }
+            }
+            else
+            {
+                this.quickStart();
+            }
+        }
+    },
+    setGender(gender, bBoy) {
+        this.iconBoy = gender.getChildByName('IconBoy');
+        this.iconGirl = gender.getChildByName('IconGirl');
+        if (!bBoy) {
+            this.iconBoy.active = true;
+            this.iconGirl.active = false;
+        } else {
+            this.iconBoy.active = false;
+            this.iconGirl.active = true;
+        }
+    },
+    initPlayer1() {
+        this.name1.getComponent(cc.Label).string = webView.userName;
+        this.setGender(this.gender1, webView.gender);
+        this.loadAvatar(webView.avatarBase64,function (frame) {
+            this.avatarSp1.getComponent(cc.Sprite).spriteFrame = frame;
+            webView.avatarSpriteFrame = frame;
+        }.bind(this));
+    },
+    loadAvatar(avatarBase64,callback)
+    {
+        lib.setImageBase64(avatarBase64,function (texture2D) {
+            let frame = new cc.SpriteFrame(texture2D);
+            callback && callback(frame);
+        });
+    },
+    starMatching() {
+        if(!this.bOpenMgobeServer) return;
+        //before matching we need to load a cert file in resource folder
+        return cc.loader.loadRes("/cacert", cc.Asset, (err, asset) => {
+            console.log("加载证书结束 " + (!err));
+            if (err)return;
+
+            mgobe.cacertNativeUrl = asset.nativeUrl;
+
+            mgobe.initSDK(function ()
+            {
+                // bind the init success event
+                mgobe.room.onRecvFromClient = this.onRecvFromClient.bind(this);
+
+                mgobe.matchPlayers(function ()
+                {
+                    //send my information to others so that they can generate rival
+                    mgobe.sendMessage(JSON.stringify({
+                        'avatarUrl': webView.avatarUrl,
+                        'userName': webView.userName,
+                        'gender': webView.gender
+                    }));
+                }.bind(this,lib));
+            }.bind(this));
+        });
+    },
+    updateTime(t) {
+        let theTime = Math.floor(t);
+        let theTime1 = 0;// 分
+
+        if (theTime > 60)
+        {
+            theTime1 = parseInt(theTime / 60);
+            theTime = parseInt(theTime % 60);
+        }
+        let result = '';
+
+        result = (theTime1 < 10 ? "0" + theTime1 : theTime1) + ":" + (theTime < 10 ? "0" + theTime : theTime);
+        return result;
+    },
+    resetRivalUIByData(userName, gender, avatarBase64) {
+        this.name2.getComponent(cc.Label).string = userName;
+        this.setGender(this.gender2, gender);
+        // loading avatar
+        //for mobile device we need to download avatar whatever AI or others
+        this.loadAvatar(avatarBase64, function (frame) {
+            this.avatarSp2.getComponent(cc.Sprite).spriteFrame = frame;
+            webView.rivalavatarBase64 = frame;
+            cc.audioEngine.playEffect(this.successAudio, false);
+            this.scheduleOnce(() => {
+                this.matched();
+            }, 2);
+        }.bind(this));
+    },
+    matched() {
+        //change top UI
+        this.meteorLine.active = true;
+        this.titleTxt.getComponent(cc.Label).string = "匹配成功";
+        this.timeTxt.active = false;
+        this.waitTxt.active = false;
+        //show rival information
+        this.player2.getChildByName("DotAnimation").active = false;
+        this.player2.active = true;
+        this.name2.active = true;
+        this.gender2.active = true;
+        this.avatarSp2.active = true;
+
+        this.scheduleOnce(() => {
+            if(this.nextSceneName!='')
+            {
+                cc.director.loadScene(this.nextSceneName);
+            }
+        }, 1);
+    },
+    generateAI() {
+        if (lib.openInWebview())// 在app内Webview打开
+        {
+            // match failed so we need to get a Ai information to start game
+            webView.getAiInfo();
+        } else {
+            //TODO
+            //In browser we just use default information to generate AI
+            this.resetRivalUIByData(webView.userName, webView.gender, webView.avatarBase64);
+        }
+    },
+    quickStart()
+    {
+        cc.audioEngine.playEffect(this.successAudio, false);
+        this.scheduleOnce(() => {
+            this.matched();
+        }, 2);
+    },
+    onRecvFromClient(event) {
+        console.log("收到新消息" + event.data.msg);
+        this.unschedule(this.countTime);
+        let data = JSON.parse(event.data.msg);
+
+        webView.rivalavatarUrl = data.avatarUrl;
+        webView.rivalUserName=data.userName;
+        webView.rivalGender = data.gender;
+        webView.getBase64(webView.rivalavatarUrl);
+    },
+    onUrlToBase64(data)
+    {
+        webView.rivalavatarBase64 = data.base64;
+        this.resetRivalUIByData(webView.rivalUserName,  webView.rivalGender, webView.rivalavatarBase64);
+    },
+    onGameInit(data) {
+        this.initPlayer1();
+    },
+    onAiRandomInfo(data) {
+        this.resetRivalUIByData(webView.rivalUserName, webView.rivalGender, webView.rivalavatarBase64);
+    },
+});

+ 9 - 0
assets/Scripts/Matching/PairingMode.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "9066a7cb-784f-4882-84e0-24d9d5796e2f",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 256 - 0
assets/Scripts/Mgobe.js

@@ -0,0 +1,256 @@
+// var MGOBE = require("./ThirdParty/MGOBE/MGOBE");
+
+// 使用 MGOBE 接口前导入 SDK
+// import "./MGOBE/MGOBE.js";
+
+// const Listener = MGOBE.Listener;
+// const Room = MGOBE.Room;
+let mogobe = {
+    // MGOBE 游戏信息
+    gameId: "obg-ojj4ptiw",
+    secretKey: "bf030e95ebde217416f13efc5a0c73532544f783",
+    url: "ojj4ptiw.wxlagame.com",
+    cacertNativeUrl: '',
+    // 默认匹配 Code
+    matchCode: "match-i2iytgmb",
+    openId: 'openid_test' + Math.random(), //自定义的用户唯一ID
+    roomId:'',
+    /**
+     * 判断 MGOBE SDK 是否初始化完成
+     */
+    isInited() {
+        // 初始化成功后才有玩家ID
+        return !!MGOBE.Player && !!MGOBE.Player.id;
+    },
+    /**
+     * 初始化 MGOBE SDK
+     * @param gameInfo
+     * @param config
+     * @param callback
+     */
+    // initSDK(gameId, secretKey, url, cacertNativeUrl, callback) {
+    initSDK(callback,listener) {
+        // 如果已经初始化,直接回调成功
+        if (this.isInited()) {
+            return callback && callback({code: MGOBE.ErrCode.EC_OK});
+        }
+
+        const defaultGameInfo = {
+            gameId: this.gameId,
+            openId: this.openId,
+            secretKey: this.secretKey,
+        };
+
+        const defaultConfig = {
+            url: this.url,
+            isAutoRequestFrame: true,
+            cacertNativeUrl: this.cacertNativeUrl,
+        };
+
+        // MGOBE.DebuggerLog.enable = true;
+
+        // if (cc.sys.isNative) {
+        //     MGOBE.DebuggerLog.enable = false;
+        // }
+        //是否开启调试
+        MGOBE.DebuggerLog.enable = false;
+        // 初始化
+        let _self = this;
+        MGOBE.Listener.init(defaultGameInfo, defaultConfig, event => {
+            if (event.code === MGOBE.ErrCode.EC_OK) {
+                console.log("初始化 SDK 成功");
+                _self.room = new MGOBE.Room();
+
+                MGOBE.Listener.add(_self.room);
+                // 设置默认广播
+                _self.room.onJoinRoom = _self.onJoinRoom.bind(_self);
+                _self.room.onLeaveRoom = _self.onLeaveRoom.bind(_self);
+                _self.room.onRecvFromClient = _self.onRecvFromClient.bind(_self);
+                _self.room.onRecvFrame = _self.onRecvFrame.bind(_self);
+                _self.room.onStartFrameSync = _self.onStartFrameSync.bind(_self);
+                _self.room.onStopFrameSync = _self.onStopFrameSync.bind(_self);
+                _self.room.onRecvFromGameSvr = _self.onRecvFromGameSvr.bind(_self);
+            } else {
+                console.log(`初始化 SDK 失败,错误码:${event.code}`);
+            }
+            callback && callback(event.code);
+        });
+    },
+    // SDK 发送房间消息
+    sendMessage(msg) {
+        console.log(`正在发送房间消息`);
+
+        const sendToClientPara = {
+            recvPlayerList: [],
+            recvType: MGOBE.types.RecvType.ROOM_OTHERS,
+            msg,
+        };
+
+        this.room.sendToClient(sendToClientPara, event => {
+            if (event.code === MGOBE.ErrCode.EC_OK) {
+                console.log(`发送房间消息成功`);
+            } else {
+                console.log(`发送房间消息失败,错误码:${event.code}`);
+            }
+        });
+    },
+    // SDK 发送实时服务器消息
+    sendToGameSvr(cmd) {
+        console.log(`正在发送房间消息`);
+
+        const sendToGameSvrPara = {
+            data: {
+                cmd,
+            },
+        };
+
+        this.room.sendToGameSvr(sendToGameSvrPara, event => {
+            if (event.code === MGOBE.ErrCode.EC_OK) {
+                console.log(`发送实时服务器消息成功`);
+            } else {
+                console.log(`发送实时服务器消息失败,错误码:${event.code}`);
+            }
+        });
+    },
+    // SDK 发送帧消息
+    sendFrame(cmd) {
+        console.log(`正在发送帧消息`);
+
+        const sendFramePara = {
+            data: {
+                cmd,
+            },
+        };
+
+        this.room.sendFrame(sendFramePara, event => {
+            if (event.code === MGOBE.ErrCode.EC_OK) {
+                console.log(`发送帧消息成功`);
+            } else {
+                console.log(`发送帧消息失败,错误码:${event.code}`);
+            }
+        });
+    },
+    // SDK 开始帧同步
+    startFrameSync(callback) {
+        console.log(`正在开始帧同步`);
+
+        this.room.startFrameSync({}, event => {
+            if (event.code === MGOBE.ErrCode.EC_OK) {
+                console.log(`开始帧同步成功`);
+                callback && callback();
+            } else {
+                console.log(`开始帧同步失败,错误码:${event.code}`);
+            }
+        });
+    },
+    // SDK 停止帧同步
+    stopFrameSync(success) {
+
+        console.log(`正在停止帧同步`);
+
+        this.room.stopFrameSync({}, event => {
+            if (event.code === MGOBE.ErrCode.EC_OK) {
+                console.log(`停止帧同步成功`);
+                success && success();
+            } else {
+                console.log(`停止帧同步失败,错误码:${event.code}`);
+            }
+        });
+    },
+    onJoinRoom: function (event) {
+        console.log("新玩家加入" + event.data.joinPlayerId);
+    },
+    onLeaveRoom: function (event) {
+        console.log("玩家退出" + event.data.leavePlayerId);
+    },
+    onRecvFromClient: function (event) {
+        // console.log("新消息" + event.data.msg);
+    },
+    onRecvFrame: function (event) {
+        this.sendFrame();
+        console.log("帧广播", event.data.frame);
+        if (event.data.frame.items && event.data.frame.items.length > 0) {
+            //console.log("帧广播" + JSON.stringify(event.data.frame.items));
+            console.log("帧广播", event.data.frame);
+        }
+    },
+    onStartFrameSync: function (event) {
+        this.synced = true;
+        console.log("开始帧同步\n");
+    },
+    onStopFrameSync: function (event) {
+        this.synced = false;
+        console.log("停止帧同步\n");
+    },
+    onRecvFromGameSvr: function (event) {
+        console.log("新自定义服务消息", event);
+        //console.log("新自定义服务消息" + JSON.stringify(event));
+    },
+    // SDK 随机匹配
+    matchPlayers(callback) {
+        let matchCode = this.matchCode;
+
+        if (!matchCode) {
+            return console.log(`请输入正确的匹配 Code`);
+        }
+
+        this.lockSubmit = true;
+        this.timerStartMatching = setInterval(() => console.log(`正在随机匹配,请稍等。`), 1000);
+        console.log(`正在随机匹配,匹配Code:${matchCode}。请稍等,默认超时时间为 10 秒。`);
+
+        // 注意:这里没有使用匹配属性,如果匹配规则中有设置匹配属性,这里需要做调整
+        const matchAttributes = [];
+
+        const playerInfo = {
+            name: "测试玩家",
+            customPlayerStatus: 0,
+            customProfile: "",
+            matchAttributes,
+        };
+
+        const matchPlayersPara = {
+            matchCode,
+            playerInfo,
+        };
+
+        this.room.initRoom();
+        this.room.matchPlayers(matchPlayersPara, event =>
+        {
+            this.lockSubmit = false;
+            clearInterval(this.timerStartMatching);
+
+            if (event.code === MGOBE.ErrCode.EC_OK)
+            {
+                console.log(`随机匹配成功,房间ID:${event.data.roomInfo.id}`);
+                this.roomId = event.data.roomInfo.id;
+                callback && callback();
+            } else {
+                console.log(`随机匹配失败,错误码:${event.code}`);
+            }
+        });
+    },
+    //取消随机匹配
+    cancelPlayerMatch(callback)
+    {
+        this.timerEndMatching = setInterval(() => console.log(`正在取消匹配,请稍等。`), 1000);
+
+        const cancelMatchPara = {
+            matchType: MGOBE.ENUM.MatchType.PLAYER_COMPLEX,
+        };
+
+        this.room.cancelPlayerMatch(cancelMatchPara,event =>
+        {
+            clearInterval(this.timerStartMatching);
+            clearInterval(this.timerEndMatching);
+
+            if (event.code === MGOBE.ErrCode.EC_OK)
+            {
+                console.log('取消匹配成功');
+                callback && callback();
+            } else {
+                console.log(`取消匹配失败,错误码:${event.code}`);
+            }
+        });
+    }
+};
+module.exports = mogobe;

+ 9 - 0
assets/Scripts/Mgobe.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "435215cc-d6a1-4f5b-9402-1eaee0e231b6",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/Scripts/ThirdParty.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "7d465b5c-1a7e-4db2-ae20-759d7288baa0",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 12 - 0
assets/Scripts/ThirdParty/MGOBE.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "db379983-eb7b-4352-b46f-3c9312d2febe",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 1439 - 0
assets/Scripts/ThirdParty/MGOBE/MGOBE.d.ts

@@ -0,0 +1,1439 @@
+declare namespace MGOBE {
+    /********************************* 玩家信息 ************************************/
+    /**
+     * @name 玩家信息
+     * @description 该对象记录了玩家的基本信息,默认全部为空。成功初始化Listener之后,id、openId 属性将生效。
+     * @description 玩家进入房间后,该对象的属性与 roomInfo.playerList 中当前玩家信息保持一致。
+     * @description 玩家 ID 是 MGOBE 后台生成的 ID,openId 是开发者初始化时候使用的 ID。openId 只有初始化 Listener 的时候使用,其它接口的“玩家 ID”均指后台生成的 ID。
+     * @field {string}  id  玩家ID
+     * @field {string}  openId  玩家openId
+     * @field {string}  name  玩家昵称
+     * @field {string}  teamId  队伍ID
+     * @field {number}  customPlayerStatus  自定义玩家状态
+     * @field {string}  customProfile  自定义玩家属性
+     * @field {MGOBE.types.NetworkState}  commonNetworkState  房间网络状态
+     * @field {MGOBE.types.NetworkState}  relayNetworkState  帧同步网络状态
+     */
+    export const Player: {
+        readonly id: string;
+        readonly openId: string;
+        readonly name: string;
+        readonly teamId: string;
+        readonly customPlayerStatus: number;
+        readonly customProfile: string;
+        readonly commonNetworkState: MGOBE.types.NetworkState;
+        readonly relayNetworkState: MGOBE.types.NetworkState;
+    };
+
+    /********************************* SDK 枚举 *********************************/
+    /**
+     * @name 操作类型枚举
+     * @enum {MGOBE.types.CreateRoomType}  CreateRoomType  创建房间方式
+     * @enum {MGOBE.types.MatchType}  MatchType  匹配类型
+     * @enum {MGOBE.types.NetworkState}  NetworkState  网络状态
+     * @enum {MGOBE.types.FrameSyncState}  FrameSyncState  房间帧同步状态
+     * @enum {MGOBE.types.RecvType}  RecvType  消息接收者范围
+     */
+    export const ENUM: {
+        readonly CreateRoomType: typeof MGOBE.types.CreateRoomType;
+        readonly MatchType: typeof MGOBE.types.MatchType;
+        readonly NetworkState: typeof MGOBE.types.NetworkState;
+        readonly FrameSyncState: typeof MGOBE.types.FrameSyncState;
+        readonly RecvType: typeof MGOBE.types.RecvType;
+    };
+
+    /********************************* SDK 随机数工具 *********************************/
+    export const RandomUtil: {
+        /**
+         * @name 初始化随机数
+         * @description init 方法接受一个 seed 为参数,RandomUtil 在后续生成随机数的过程中将以 seed 为种子。使用相同的 seed 初始化,调用 random 方法生成的随机数序列相同。
+         * @param {number} seed 随机数种子
+         * @returns {void}
+         */
+        init(seed: number): void;
+        /**
+         * @name 生成随机数
+         * @description 如果种子相同、初始化后调用次数相同,生成的随机数将相同。
+         * @returns {number} 随机数
+         */
+        random(): number;
+    };
+
+    /********************************* SDK 日志打印 ************************************/
+    export class DebuggerLog {
+        static enable: boolean;
+        static callback: (...logs: any[]) => any;
+    }
+
+    export const StatCallbacks: {
+        onPingTime(time: number): any;
+        onFitFrameTime(deltaTime: number): any;
+        onBstFrameRate(deltaTime: number): any;
+        onRenderFrameRate(deltaTime: number): any;
+    };
+
+    /********************************* Room 广播回调 *********************************/
+    class RoomBroadcastHandler {
+        /**
+         * @name 匹配结束广播
+         * @description onMatch 广播表示组队匹配结束。匹配成功或者匹配超时后,全部小组成员都会收到该广播。
+         * @description 使用 event.data.errCode 判断是否匹配成功。
+         * @description 注意该方法为 Room 类的静态方法。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.MatchBst>} event 回调参数
+         * @returns {void}
+         */
+        static onMatch: (event: MGOBE.types.BroadcastEvent<MGOBE.types.MatchBst>) => any;
+        /**
+         * @name 组队匹配超时广播
+         * @description onCancelMatch 广播表示取消组队匹配。全部小组成员都会收到该广播。
+         * @description 注意该方法为 Room 类的静态方法。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.CancelMatchBst>} event 回调参数
+         * @returns {void}
+         */
+        static onCancelMatch: (event: MGOBE.types.BroadcastEvent<MGOBE.types.CancelMatchBst>) => any;
+        /**
+         * @name 新玩家加入房间广播回调接口
+         * @description onJoinRoom 广播表示该房间有新玩家加入。房间内全部成员都会收到该广播。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.JoinRoomBst>} event 回调参数
+         * @returns {void}
+         */
+        onJoinRoom: (event: MGOBE.types.BroadcastEvent<MGOBE.types.JoinRoomBst>) => any;
+        /**
+         * @name 玩家退出房间广播回调接口
+         * @description onLeaveRoom 广播表示该房间有玩家退出。房间内全部成员都会收到该广播。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.LeaveRoomBst>} event 回调参数
+         * @returns {void}
+         */
+        onLeaveRoom: (event: MGOBE.types.BroadcastEvent<MGOBE.types.LeaveRoomBst>) => any;
+        /**
+         * @name 房间被解散广播回调接口
+         * @description onDismissRoom 广播表示房主解散了该房间。房间内全部成员都会收到该广播。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.DismissRoomBst>} event 回调参数
+         * @returns {void}
+         */
+        onDismissRoom: (event: MGOBE.types.BroadcastEvent<MGOBE.types.DismissRoomBst>) => any;
+        /**
+         * @name 房主修改房间信息广播回调接口
+         * @description onChangeRoom 广播表示房主修改了该房间属性。房间内全部成员都会收到该广播。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.ChangeRoomBst>} event 回调参数
+         * @returns {void}
+         */
+        onChangeRoom: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ChangeRoomBst>) => any;
+        /**
+         * @name 房间内玩家被移除广播回调接口
+         * @description onRemovePlayer 广播表示有玩家被房主移除。房间内全部成员都会收到该广播。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.RemovePlayerBst>} event 回调参数
+         * @returns {void}
+         */
+        onRemovePlayer: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RemovePlayerBst>) => any;
+        /**
+         * @name 收到房间内其他玩家消息广播回调接口
+         * @description onRecvFromClient 广播表示收到来自 ID 为 sendPlayerId 的玩家消息。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromClientBst>} event 回调参数
+         * @returns {void}
+         */
+        onRecvFromClient: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromClientBst>) => any;
+        /**
+         * @name 收到自定义服务消息广播回调接口
+         * @description onRecvFromGameSvr 广播表示收到来自自定义服务的消息。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromGameSvrBst>} event 回调参数
+         * @returns {void}
+         */
+        onRecvFromGameSvr: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RecvFromGameSvrBst>) => any;
+        /**
+         * @name 房间内玩家网络状态变化广播回调接口
+         * @description onChangePlayerNetworkState 广播表示 ID 为 changePlayerId 的玩家网络状态发生变化。
+         * @description 玩家在房间中、帧同步中的网络变化都会触发该广播,因此 networkState 将有四中情况,分别表示房间中上下线、帧同步中上下线。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.ChangePlayerNetworkStateBst>} event 回调参数
+         * @returns {void}
+         */
+        onChangePlayerNetworkState: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ChangePlayerNetworkStateBst>) => any;
+        /**
+         * @name 玩家自定义状态变化广播回调接口
+         * @description onChangeCustomPlayerStatus 广播表示房间内 ID 为 changePlayerId 的玩家状态发生变化。玩家状态由开发者自定义。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.ChangeCustomPlayerStatusBst>} event 回调参数
+         * @returns {void}
+         */
+        onChangeCustomPlayerStatus: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ChangeCustomPlayerStatusBst>) => any;
+        /**
+         * @name 开始帧同步广播回调接口
+         * @description onStartFrameSync 广播表示房间开始帧同步。收到该广播后将持续收到 onRecvFrame 广播。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.StartFrameSyncBst>} event 回调参数
+         * @returns {void}
+         */
+        onStartFrameSync: (event: MGOBE.types.BroadcastEvent<MGOBE.types.StartFrameSyncBst>) => any;
+        /**
+         * @name 停止帧同步广播回调接口
+         * @description onStopFrameSync 广播表示房间停止帧同步。收到该广播后将不再收到 onRecvFrame 广播。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.StopFrameSyncBst>} event 回调参数
+         * @returns {void}
+         */
+        onStopFrameSync: (event: MGOBE.types.BroadcastEvent<MGOBE.types.StopFrameSyncBst>) => any;
+        /**
+         * @name 房间帧消息广播回调接口
+         * @description onRecvFrame 广播表示收到一个帧 frame,frame 的内容由多个 MGOBE.types.FrameItem 组成,即一帧时间内房间内所有玩家向服务器发送帧消息的集合。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.RecvFrameBst>} event 回调参数
+         * @returns {void}
+         */
+        onRecvFrame: (event: MGOBE.types.BroadcastEvent<MGOBE.types.RecvFrameBst>) => any;
+        /**
+         * @name 自动补帧失败回调接口
+         * @description onAutoRequestFrameError 表示自动补帧失败,在初始化 Listener 时开启自动补帧后才能触发。
+         * @description 发生补帧失败后,将不能收到帧广播,开发者可以使用 retryAutoRequestFrame 方法重试自动补帧。
+         * @param {MGOBE.types.BroadcastEvent<MGOBE.types.ResponseEvent<MGOBE.types.RequestFrameRsp>>} event 回调参数
+         * @returns {void}
+         */
+        onAutoRequestFrameError: (event: MGOBE.types.BroadcastEvent<MGOBE.types.ResponseEvent<MGOBE.types.RequestFrameRsp>>) => any;
+    }
+    /********************************* SDK Room对象 *********************************/
+    export class Room extends RoomBroadcastHandler {
+
+        /**
+         * @name 构造器
+         * @description 实例化 Room 对象时可以传入一个 MGOBE.types.RoomInfo 对象 roomInfo,后续接口调用都将基于该 roomInfo,例如修改该房间的属性、接收该房间的广播。
+         * @description 如果不传 roomInfo 参数,开发者可以通过直接调用 initRoom、createRoom、joinRoom 等方法获取 roomInfo。
+         * @description Room 对象会自动维护内部的 roomInfo 属性保持最新,开发者可以直接通过访问该属性获得最新的房间信息。
+         * @param {MGOBE.types.RoomInfo} roomInfo 房间信息(可选)
+         * @returns {void}
+         */
+        constructor(roomInfo?: MGOBE.types.RoomInfo);
+        /**
+         * @name 房间信息
+         * @description roomInfo 为 Room 实例的属性,类型为 MGOBE.types.RoomInfo,调用 Room 相关的接口会导致该属性发生变化。
+         */
+        roomInfo: MGOBE.types.RoomInfo;
+        /**
+         * @name 获取房间列表
+         * @description 调用结果将在 callback 中异步返回。
+         * @description 该接口为 Room 的静态方法,只能通过 Room.getRoomList 方式调用,Room 实例无法直接访问该方法。
+         * @param {MGOBE.types.GetRoomListPara} getRoomListPara  获取房间列表参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.GetRoomListRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        static getRoomList(getRoomListPara: MGOBE.types.GetRoomListPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.GetRoomListRsp>): void;
+        /**
+         * @name 根据房间 ID 获取房间
+         * @description 调用结果将在 callback 中异步返回。
+         * @description 该接口为 Room 的静态方法,只能通过 Room.getRoomByRoomId 方式调用,Room 实例无法直接访问该方法。
+         * @description 如果参数中的 roomId 为空字符串,将查询玩家所在的房间。
+         * @param {MGOBE.types.GetRoomByRoomIdPara} getRoomByRoomIdPara  获取房间参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        static getRoomByRoomId(getRoomByRoomIdPara: MGOBE.types.GetRoomByRoomIdPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>): void;
+        /**
+         * @name 查询玩家所在的房间信息
+         * @description 调用结果将在 callback 中异步返回。
+         * @description 该接口为 Room 的静态方法,只能通过 Room.getMyRoom 方式调用,Room 实例无法直接访问该方法。
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        static getMyRoom(callback?: MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>): void;
+        /**
+         * @name 初始化 Room 实例的房间信息,即更新 roomInfo 属性
+         * @description initRoom 会更新 Room 实例的 roomInfo,接受 MGOBE.types.RoomInfo 或 { id: string; } 类型的参数。
+         * @description 如果参数为 MGOBE.types.RoomInfo 类型,SDK将自动更新 WebSocket 连接。如果参数为 { id: string; } 类型,需要调用 getRoomDetail 或 joinRoom 方法才能更新 WebSocket 连接,否则可能不能及时收到房间广播。
+         * @description 如果不传参数,该方法将清空 Room 实例的 roomInfo 属性,此时调用 getRoomDetail 方法将查询玩家所在的房间。
+         * @description 当玩家需要加入指定 id 房间时,需要使用该接口初始化 Room 实例的 roomInfo 属性,然后才能通过调用 joinRoom 方法加入该 Room 实例所代表的房间。
+         * @param {MGOBE.types.RoomInfo 或 { id: string }} roomInfo  初始化参数,id表示房间id
+         * @returns {void}
+         */
+        initRoom(roomInfo?: MGOBE.types.RoomInfo | {
+            id: string;
+        }): void;
+        /**
+         * @name 房间信息更新回调接口
+         * @description onUpdate 表明 Room 实例的 roomInfo 信息发生变化,这种变化原因包括各种房间操作、房间广播、本地网络状态变化等。
+         * @description 开发者可以在该接口中更新游戏画面,或者使用 networkState 属性判断网络状态。
+         * @param {Room} room 更新的Room实例(可选)
+         * @returns {void}
+         */
+        onUpdate(room?: Room): void;
+        /**
+         * @name 该属性为只读属性,用于获取客户端本地 SDK 网络状态
+         * @description 该属性类型为 ```{ COMMON: boolean, RELAY: boolean }``` 。COMMON 表示房间网络状态;RELAY 表示帧同步网络状态。为 true 时表示网络已连接,为 false 时表示网络未连接。
+         * @description 该网络状态与玩家信息中的网络状态(Player.commonNetworkState/Player.relayNetworkState)概念不同,前者表示本地 socket 状态,后者表示玩家在 MGOBE 后台中的状态。
+         * @description 本地 socket 网络状态变化时,onUpdate 将被触发。
+         */
+        readonly networkState: {
+            COMMON: boolean;
+            RELAY: boolean;
+        };
+        /**
+         * @name 创建房间
+         * @description createRoom 调用结果将在 callback 中异步返回。操作成功后,roomInfo 属性将更新。
+         * @description 创建房间成功后,玩家自动进入该房间,因此无法继续调用 joinRoom、matchPlayers 等方法,可以利用房间ID邀请其他玩家进入该房间。
+         * @param {MGOBE.types.CreateRoomPara} createRoomPara  创建房间参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.CreateRoomRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        createRoom(createRoomPara: MGOBE.types.CreateRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.CreateRoomRsp>): void;
+        /**
+         * @name 创建团队房间
+         * @description createTeamRoom 调用结果将在 callback 中异步返回。操作成功后,roomInfo 属性将更新。
+         * @description 创建房间成功后,玩家自动进入该房间,因此无法继续调用 joinRoom、matchPlayers 等方法。
+         * @description 参数中的“房间最大玩家数量”要求能被“队伍数量”整除,创建成功后每个队伍的“队伍最小人数”为1,“队伍最大人数”为整除结果。
+         * @param {MGOBE.types.CreateTeamRoomPara} createTeamRoomPara  创建团队房间参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.CreateRoomRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        createTeamRoom(createTeamRoomPara: MGOBE.types.CreateTeamRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.CreateRoomRsp>): void;
+        /**
+         * @name 加入房间
+         * @description joinRoom 调用结果将在 callback 中异步返回。
+         * @description 该接口加入的房间是 Room 实例所代表的房间,如果该 Room 实例的 roomInfo 不存在 roomId,则需要使用 roomId 通过 init 方法初始化 Room 实例。
+         * @description 加房成功后,房间内全部成员都会收到一条玩家加入房间广播 onJoinRoom,roomInfo 属性将更新。
+         * @param {MGOBE.types.JoinRoomPara} joinRoomPara  加入房间参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.JoinRoomRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        joinRoom(joinRoomPara: MGOBE.types.JoinRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.JoinRoomRsp>): void;
+        /**
+         * @name 加入团队房间
+         * @description joinTeamRoom 调用结果将在 callback 中异步返回。
+         * @description 与 joinRoom 类似,该接口加入的房间是 Room 实例所代表的房间。teamId 为 roomInfo.teamList 中定义的队伍 ID。
+         * @param {MGOBE.types.JoinTeamRoomPara} joinTeamRoomPara  加入团队房间参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.JoinRoomRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        joinTeamRoom(joinTeamRoomPara: MGOBE.types.JoinTeamRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.JoinRoomRsp>): void;
+        /**
+         * @name 退出房间
+         * @description leaveRoom 调用结果将在 callback 中异步返回。退出成功后,房间内剩余成员都会收到一条玩家退出房间广播 onLeaveRoom,roomInfo 属性将更新,roomInfo.playerList 中将没有该玩家信息。
+         * @description 退房后,如果房间内还剩下其他玩家,则该 room 实例仍然代表退房前的房间,可以继续调用 room.initRoom() 清除房间信息。
+         * @param {object} para  预留参数,传{}即可
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.LeaveRoomRsp>} callback 响应回调函数
+         * @returns {void}
+         */
+        leaveRoom(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.LeaveRoomRsp>): void;
+        /**
+         * @name 解散房间
+         * @description dismissRoom 调用结果将在 callback 中异步返回。解散成功后,房间内全部成员都会收到一条解散房间广播 onDismissRoom,roomInfo 属性将更新。
+         * @description 只有房主有权限解散房间
+         * @param {object} para  预留参数,传{}即可
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.DismissRoomRsp>} callback 响应回调函数
+         * @returns {void}
+         */
+        dismissRoom(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.DismissRoomRsp>): void;
+        /**
+         * @name 修改房间信息
+         * @description changeRoom 调用结果将在 callback 中异步返回。修改成功后,房间内全部成员都会收到一条修改房间广播 onChangeRoom,roomInfo 属性将更新。
+         * @description 只有房主有权限修改房间
+         * @param {MGOBE.types.ChangeRoomPara} changeRoomPara  修改房间参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.ChangeRoomRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        changeRoom(changeRoomPara: MGOBE.types.ChangeRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.ChangeRoomRsp>): void;
+        /**
+         * @name 修改玩家自定义状态
+         * @description 修改玩家状态是修改 PlayerInfo 中的 customPlayerStatus 字段,玩家的状态由开发者自定义。
+         * @description 修改成功后,房间内全部成员都会收到一条修改玩家状态广播 onChangeCustomPlayerStatus,roomInfo 属性将更新。
+         * @description 每个玩家只能修改自己的状态,调用结果将在 callback 中异步返回。
+         * @param {MGOBE.types.ChangeCustomPlayerStatusPara} changeCustomPlayerStatusPara  修改玩家状态参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.ChangeCustomPlayerStatusRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        changeCustomPlayerStatus(changeCustomPlayerStatusPara: MGOBE.types.ChangeCustomPlayerStatusPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.ChangeCustomPlayerStatusRsp>): void;
+        /**
+         * @name 移除房间内玩家
+         * @description 调用结果将在 callback 中异步返回。移除玩家成功后,房间内全部成员都会收到一条移除玩家广播 onRemovePlayer,roomInfo 属性将更新。
+         * @description 只有房主有权限移除其他玩家
+         * @param {MGOBE.types.RemovePlayerPara} removePlayerPara 移除房间内玩家参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.RemovePlayerRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        removePlayer(removePlayerPara: MGOBE.types.RemovePlayerPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.RemovePlayerRsp>): void;
+        /**
+         * @name 获取Room实例的房间信息
+         * @description 该接口获取的是 Room 实例的房间信息,调用结果将在 callback 中异步返回。
+         * @description 如果该 Room 实例中的 roomInfo 属性没有 ID,该接口将查询玩家所在的房间。
+         * @description 如果 roomInfo 属性含有 ID,则查询该 ID 对应的房间信息。
+         * @description 操作成功后,roomInfo 属性将更新。
+         * @description 如果需要获取指定 ID 的房间信息,可以使用 getRoomByRoomId 方法。
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        getRoomDetail(callback?: MGOBE.types.ReqCallback<MGOBE.types.GetRoomByRoomIdRsp>): void;
+        /**
+         * @name 多人在线匹配
+         * @description 调用该接口后将发起多人在线匹配,callback 将异步返回调用结果。返回码为0表示调用成功。
+         * @description 调用成功后,Room.onMatch、Room.onCancelMatch 将回调匹配结果。
+         * @description 该接口需要与匹配规则配合使用,因此,匹配超时时间由开发者在匹配规则中定义。开发者需要在控制台上创建匹配,得到匹配 Code 作为该方法的参数 matchCode。
+         * @description matchPlayersPara.playerInfo 中的 matchAttributes 数组对应匹配规则中定义的 playerAttributes,playerAttributes 的每一种属性都要填入 matchAttributes 中,name 表示属性名,value 表示玩家该属性的值。
+         * @param {MGOBE.types.MatchPlayersPara} matchPlayersPara  多人匹配参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.MatchPlayersRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        matchPlayers(matchPlayersPara: MGOBE.types.MatchPlayersPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.MatchPlayersRsp>): void;
+        /**
+         * @name 组队匹配
+         * @description 调用该接口后将以 playerInfoList 为小组一起进行匹配,callback 将异步返回调用结果。
+         * @description 调用成功后,Room.onMatch、Room.onCancelMatch 将回调匹配结果。小组成员都可以通过 cancelPlayerMatch 取消匹配。
+         * @description 匹配成功后,小组成员都会进入同一个房间,同一个队伍。
+         * @description 该接口需要与匹配规则配合使用,匹配超时时间由开发者在匹配规则中定义。开发者需要在控制台上创建匹配,得到匹配 Code 作为该方法的参数 matchCode。
+         * @description 根据匹配规则的不同,房间内的队伍可能包含多个小组。比如4V4的匹配(两个队伍),如果小组成员数为2,那么同一个队伍将由两个小组组成。
+         * @param {MGOBE.types.MatchGroupPara} matchGroupPara  多人匹配参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.MatchGroupRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        matchGroup(matchGroupPara: MGOBE.types.MatchGroupPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.MatchGroupRsp>): void;
+        /**
+         * @name 房间匹配
+         * @description 调用该接口后将发起房间匹配,匹配结果将在 callback 中异步返回。操作成功后,Room 对象内部 roomInfo 属性将更新。
+         * @description 房间匹配是指按照传入的参数搜索现存的房间,如果存在,则将玩家加入该房间;如果不存在,则为玩家创建并加入一个新房间。
+         * @param {MGOBE.types.MatchRoomPara} matchRoomPara  房间匹配参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.MatchRoomSimpleRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        matchRoom(matchRoomPara: MGOBE.types.MatchRoomPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.MatchRoomSimpleRsp>): void;
+        /**
+         * @name 取消玩家匹配
+         * @description 该接口作用是取消匹配请求,即 matchPlayers、matchGroup 请求。调用结果将在 callback 中异步返回。如果玩家已经在房间中,回调函数将返回 roomInfo。
+         * @description cancelMatchPara.matchType 需要设置为 MGOBE.ENUM.MatchType.PLAYER_COMPLEX。
+         * @param {MGOBE.types.CancelMatchPara} cancelMatchPara  取消匹配参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.CancelMatchRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        cancelPlayerMatch(cancelMatchPara: MGOBE.types.CancelPlayerMatchPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.CancelPlayerMatchRsp>): void;
+        /**
+         * @name 开始帧同步
+         * @description 调用结果将在 callback 中异步返回。调用成功后房间内全部成员将收到 onStartFrameSync 广播。该接口会修改房间帧同步状态为“已开始帧同步”。
+         * @description 房间内任意一个玩家成功调用该接口将导致全部玩家开始接收帧广播。
+         * @param {object} para  预留参数,传{}即可
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.StartFrameSyncRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        startFrameSync(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.StartFrameSyncRsp>): void;
+        /**
+         * @name 停止帧同步
+         * @description 调用结果将在 callback 中异步返回。调用成功后房间内全部成员将收到 onStopFrameSync 广播。该接口会修改房间帧同步状态为“已停止帧同步”。
+         * @description 房间内任意一个玩家成功调用该接口将导致全部玩家停止接收帧广播。
+         * @param {object} para  预留参数,传{}即可
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.StoptFrameSyncRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        stopFrameSync(para: {}, callback?: MGOBE.types.ReqCallback<MGOBE.types.StopFrameSyncRsp>): void;
+        /**
+         * @name 发送帧同步数据
+         * @description 帧数据内容 data 类型为普通 object,由开发者自定义,目前支持最大长度不超过1k。
+         * @description 后台将集合全部玩家的帧数据,并以一定时间间隔(由房间帧率定义)通过 onRecvFrame 广播给各客户端。调用结果将在 callback 中异步返回。
+         * @description 只有房间处于“已开始帧同步”状态才能调用该接口。
+         * @param {MGOBE.types.SendFramePara} sendFramePara  发送帧同步数据参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.SendFrameRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        sendFrame(sendFramePara: MGOBE.types.SendFramePara, callback?: MGOBE.types.ReqCallback<MGOBE.types.SendFrameRsp>): void;
+        /**
+         * @name 请求补帧
+         * @description 调用结果将在 callback 中异步返回。
+         * @param {MGOBE.types.RequestFramePara} requestFramePara  请求补帧参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.RequestFrameRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        requestFrame(requestFramePara: MGOBE.types.RequestFramePara, callback?: MGOBE.types.ReqCallback<MGOBE.types.RequestFrameRsp>): void;
+        /**
+         * @name 重试自动补帧
+         * @description 当收到 onAutoRequestFrameError 回调时,表示自动补帧失败,可以使用该方法重新触发自动补帧。
+         * @returns {void}
+         */
+        retryAutoRequestFrame(): void;
+        /**
+         * @name 发送消息给房间内玩家
+         * @description 调用结果将在 callback 中异步返回。调用成功后所指定的接收消息的玩家将收到 onRecvFromClient 广播。
+         * @description 当 recvType 值为 1 (即 ROOM_ALL ) 时,房间内全部玩家将收到消息;
+         * @description 当 recvType 值为 2 (即 ROOM_OTHERS ) 时,房间内除消息发送者外的其他玩家将收到消息;
+         * @description 当 recvType 值为 3 (即 ROOM_SOME ) 时,接收消息玩家才由 recvPlayerList 决定。
+         * @param {MGOBE.types.SendToClientPara} sendToClientPara  发送消息参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.SendToClientRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        sendToClient(sendToClientPara: MGOBE.types.SendToClientPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.SendToClientRsp>): void;
+        /**
+         * @name 发送消息给实时服务器
+         * @description 该接口只能在玩家进入房间后调用,调用结果将在 callback 中异步返回。
+         * @param {MGOBE.types.SendToGameSvrPara} sendToGameSvrPara  发送消息参数
+         * @param {MGOBE.types.ReqCallback<MGOBE.types.SendToGameSvrRsp>} callback  响应回调函数
+         * @returns {void}
+         */
+        sendToGameSvr(sendToGameSvrPara: MGOBE.types.SendToGameSvrPara, callback?: MGOBE.types.ReqCallback<MGOBE.types.SendToGameSvrRsp>): void;
+    }
+    /********************************* SDK Listener对象 *********************************/
+    export class Listener {
+
+        /**
+         * @name 初始化监听器
+         * @description 该方法为静态方法。初始化 Listener 时需要传入 gameInfo 和 config 两个参数。
+         * @description 初始化结果在 callback 中异步返回,错误码为 0 表示初始化成功。
+         * @param {MGOBE.types.GameInfoPara} gameInfo  游戏信息
+         * @param {MGOBE.types.ConfigPara} config  游戏配置
+         * @param {MGOBE.types.ReqCallback<null>} callback  初始化回调函数
+         * @returns {void}
+         */
+        static init(gameInfo: MGOBE.types.GameInfoPara, config: MGOBE.types.ConfigPara, callback: MGOBE.types.ReqCallback<MGOBE.types.InitRsp>): void;
+        /**
+         * @name 为Room实例添加广播监听
+         * @description 该方法为静态方法。实例化 Room 对象之后,需要通过该方法给 Room 注册广播事件监听。
+         * @description Listener 完成初始化之后才能添加监听。
+         * @param {Room} room  需要监听的房间对象
+         * @returns {void}
+         */
+        static add(room: Room): void;
+        /**
+         * @name 为Room实例移除广播监听
+         * @description 该方法为静态方法。如果不再需要监听某个 Room 对象的广播事件,可以通过该方法进行移除。
+         * @param {Room} room  需要移除监听的房间对象
+         * @returns {void}
+         */
+        static remove(room: Room): void;
+        /**
+         * @name 移除全部Room对象的广播监听
+         * @description 该方法为静态方法。
+         * @returns {void}
+         */
+        static clear(): void;
+    }
+
+    /********************************* SDK 错误码 *********************************/
+    export enum ErrCode {
+        EC_OK = 0,
+        EC_REQ_BAD_PKG = 1,
+        EC_CMD_INVALID = 2,
+        EC_PARAMS_INVALID = 3,
+        EC_INNER_ERROR = 4,
+        EC_TIME_OUT = 5,
+        EC_SERVER_BUSY = 6,
+        EC_NO_RIGHT = 7,
+        EC_ACCESS_CMD_INVALID_ERR = 200,
+        EC_ACCESS_CMD_GET_TOKEN_ERR = 201,
+        EC_ACCESS_CMD_TOKEN_PRE_EXPIRE = 202,
+        EC_ACCESS_CMD_INVALID_TOKEN = 203,
+        EC_ACCESS_PUSH_SERIALIZE_ERR = 204,
+        EC_ACCESS_LOGIN_BODY_PARSE_ERR = 205,
+        EC_ACCESS_CONN_ERR = 206,
+        EC_ACCESS_GET_RS_IP_ERR = 207,
+        EC_ACCESS_ADD_COMM_CONN_ERR = 208,
+        EC_ACCESS_ADD_HEART_CONN_ERR = 209,
+        EC_ACCESS_ADD_RELAY_CONN_ERR = 210,
+        EC_ACCESS_HEART_BODY_PARSE_ERR = 211,
+        EC_ACCESS_GET_COMM_CONNECT_ERR = 212,
+        EC_ACCESS_GET_RELAY_CONNECT_ERR = 213,
+        EC_ACCESS_ACCESS_INFO_EMPTY = 214,
+        EC_ACCESS_PLAYER_DUPLICATE_LOGIN = 215,
+        EC_ACCESS_NOE_RELAY_OR_STATE_SVR = 216,
+        EC_PLAYER_GAME_NOT_EXIST = 10000,
+        EC_PLAYER_SECRET_KEY_FAIL = 10001,
+        EC_PLAYER_SIGN_ERR = 10002,
+        EC_PLAYER_DUPLICATE_REQ = 10003,
+        EC_PLAYER_TIMESTAMP_INVALID = 10004,
+        EC_PLAYER_QUERY_PLAYER_FAIL = 10005,
+        EC_PLAYER_ADD_PLAYER_FAIL = 10006,
+        EC_PLAYER_QUERY_GAME_FAIL = 10007,
+        EC_PLAYER_RECORD_NUM_ERR = 10008,
+        EC_PLAYER_GET_TOKEN_FAIL = 10009,
+        EC_PLAYER_TOKEN_NOT_EXIST = 10010,
+        EC_PLAYER_TOKEN_INVALID = 10011,
+        EC_PLAYER_CLEAR_TOKEN_FAIL = 10012,
+        EC_PLAYER_LOCK_FAIL = 10013,
+        EC_PLAYER_UNLOCK_FAIL = 10014,
+        EC_PLAYER_SAVE_TOKEN_FAIL = 10015,
+        EC_PLAYER_GAME_OUT_OF_SERVICE = 10016,
+        EC_ROOM_CREATE_NO_PERMISSION = 20000,
+        EC_ROOM_DESTORY_NO_PERMISSION = 20001,
+        EC_ROOM_JOIN_NO_PERMISSION = 20002,
+        EC_ROOM_REMOVE_PLAYER_NO_PERMISSION = 20003,
+        EC_ROOM_MODIFY_PROPERTIES_NO_PEMISSION = 20004,
+        EC_ROOM_DISSMISS_NO_PERMISSION = 20005,
+        EC_ROOM_REMOVE_SELF_NO_PERMISSION = 20006,
+        EC_ROOM_CHECK_LOGIN_SESSION_ERR = 20007,
+        EC_ROOM_REMOVE_PLAYER_NOT_IN_ROOM = 20008,
+        EC_ROOM_PLAYER_ALREADY_IN_ROOM = 20010,
+        EC_ROOM_PLAYER_NOT_IN_ROOM = 20011,
+        EC_ROOM_PLAYERS_EXCEED_LIMIT = 20012,
+        EC_ROOM_JOIN_NOT_ALLOW = 20013,
+        EC_ROOM_MAX_PLAYERS_INVALID = 20014,
+        EC_ROOM_CREATE_FAIL = 20015,
+        EC_ROOM_PLAYER_OFFLINE = 20016,
+        EC_ROOM_PARAM_PAGE_INVALID = 20017,
+        EC_ROOM_GET_PLAYER_INFO_ERR = 20050,
+        EC_ROOM_GET_ROOM_INFO_ERR = 20051,
+        EC_ROOM_MODIFY_OWNER_ERR = 20052,
+        EC_ROOM_MAX_ROOM_NUMBER_EXCEED_LIMIT = 20053,
+        EC_ROOM_REMOVE_REDIS_PLAYER_ROOM_MATCH_ERR = -20052,
+        EC_ROOM_REMOVE_REDIS_ROOM_INFO_ERR = -20053,
+        EC_ROOM_REDIS_UPDATE_ERR = -20054,
+        EC_ROOM_REDIS_GET_LOCK_ERR = -20055,
+        EC_ROOM_REDIS_CHECK_LOCK_ERR = -20056,
+        EC_ROOM_REDIS_DEL_LOCK_ERR = -20057,
+        EC_ROOM_QUERY_PLAYER_ERR = 20060,
+        EC_ROOM_QUERY_GAME_ERR = 20061,
+        EC_ROOM_PLAYER_INFO_NOT_EXIST = 20062,
+        EC_ROOM_GAME_INFO_NOT_EXIST = 20063,
+        EC_ROOM_HISTORY_INFO_INSERT_ERR = -20064,
+        EC_ROOM_REGION_INFO_NOT_EXIST = 20065,
+        EC_ROOM_QUERY_REGION_ERR = 20066,
+        EC_ROOM_MODIFY_PLAYER_BUSY = 20070,
+        EC_ROOM_INFO_UNEXIST = 20080,
+        EC_ROOM_ALLOCATE_RELAYSVR_IP_PORT_ERR = 20090,
+        EC_ROOM_INVALID_PARAMS_TEAM_ID = 20100,
+        EC_ROOM_TEAM_MEMBER_LIMIT_EXCEED = 20101,
+        EC_ROOM_ALLOCATE_SERVICE_FAIL = -20200,
+        EC_MATCH_NO_ROOM = 30000,
+        EC_MATCH_TIMEOUT = 30001,
+        EC_MATCH_LOGIC_ERR = 30002,
+        EC_MATCH_ERR = 30010,
+        EC_MATCH_PLAYER_IS_IN_MATCH = 30011,
+        EC_MATCH_PLAYER_NOT_IN_MATCH = 30012,
+        EC_MATCH_GET_MATCH_INFO_ERR = 30013,
+        EC_MATCH_UPDATE_MATCH_INFO_ERR = 30014,
+        EC_MATCH_CANCEL_FAILED = 30015,
+        EC_MATCH_GET_PLAYER_LIST_INFO_ERR = 30016,
+        EC_MATCH_CREATE_ROOM_ERR = 30041,
+        EC_MATCH_JOIN_ROOM_ERR = 30042,
+        EC_MATCH_INVALID_PARAMS = 30043,
+        EC_MATCH_GROUP_NUM_EXCEED_LIMIT = 30044,
+        EC_MATCH_PLAYER_ID_IS_REPEATED = 30045,
+        EC_MATCH_CREATE_ROOM_PLAYER_ALREADY_IN_ROOM = 30050,
+        EC_MATCH_QUERY_PLAYER_ERR = 30100,
+        EC_MATCH_PLAYER_INFO_NOT_EXIST = 30101,
+        EC_MATCH_QUERY_GAME_ERR = 30102,
+        EC_MATCH_GAME_INFO_NOT_EXIST = 30103,
+        EC_MATCH_QUERY_REGION_ERR = 30104,
+        EC_MATCH_REGION_INFO_NOT_EXIST = 30105,
+        EC_MATCH_TEAM_FAIL = 30106,
+        EC_MATCH_PLAY_RULE_NOT_RUNNING = 30107,
+        EC_MATCH_PLAY_ATTR_NOT_FOUND = 30108,
+        EC_MATCH_PLAY_RULE_NOT_FOUND = 30109,
+        EC_MATCH_PLAY_RULE_ATTR_SEGMENT_NOT_FOUND = 30110,
+        EC_MATCH_PLAY_RULE_FUNC_ERR = 30111,
+        EC_MATCH_GET_PLAYER_ATTR_FAIL = 30112,
+        EC_MATCH_GET_TEAM_ATTR_FAIL = 30113,
+        EC_MATCH_NONE_TEAM_TYPE_FIT = 30114,
+        EC_MATCH_TEAM_TYPE_INVALID = 30115,
+        EC_MATCH_PLAYER_ATTR_NOT_FOUND = 30116,
+        EC_MATCH_REQUEST_ID_NOT_EXIST = 30117,
+        EC_MATCH_REQUEST_ID_IS_EXIST = 30118,
+        EC_MATCH_TEAM_MATCH_FAIL = 30119,
+        EC_MATCH_INNER_LOGIC_ERR = -30150,
+        EC_MATCH_INNER_PARAMS_ERR = -30160,
+        EC_MATCH_ROOM_INNER_ADD_NODE_ERR = -30170,
+        EC_MATCH_ROOM_INNER_DEL_NODE_ERR = -30171,
+        EC_RELAY_ALREADY_EXISTS = 40000,
+        EC_RELAY_NOT_EXISTS = 40001,
+        EC_RELAY_DATA_EXCEED_LIMITED = 40002,
+        EC_RELAY_MEMBER_ALREADY_EXISTS = 40003,
+        EC_RELAY_MEMBER_NOT_EXISTS = 40004,
+        EC_RELAY_STATE_INVALID = 40005,
+        EC_RELAY_INVALID_FRAME_RATE = 40006,
+        EC_RELAY_SET_FRAME_RATE_FORBIDDEN = 40007,
+        EC_RELAY_NO_MEMBERS = 40008,
+        EC_RELAY_GAMESVR_SERVICE_NOT_OPEN = 40009,
+        EC_RELAY_REQ_POD_FAIL = 40010,
+        EC_RELAY_NO_AVAILABLE_POD = 40011,
+        EC_RELAY_GET_FRAME_CACHE_FAIL = 40012,
+        EC_RELAY_HKV_CACHE_ERROR = 40015,
+        EC_RELAY_REDIS_CACHE_ERROR = 40016,
+        EC_RELAY_NOTIFY_RELAYWORKER_FAIL = 40018,
+        EC_RELAY_RESET_RELAY_ROOM_FAIL = 40019,
+        EC_RELAY_CLEAN_RELAY_ROOM_FAIL = 40020,
+        EC_RELAY_NO_PERMISSION = 40100,
+        EC_RELAY_NOTIFY_GAMESVR_FAIL = 40200,
+        EC_RELAY_FORWARD_TO_GAMESVR_FAIL = 40201,
+        EC_RELAY_FORWARD_TO_CLIENT_FAIL = 40202,
+        EC_INVALID_PARAMS = 60000,
+        EC_INVALID_PARAMS_PLAY_MODE_VERSION = 60001,
+        EC_INVALID_PARAMS_PLAY_MODE_RULETYPE = 60002,
+        EC_INVALID_PARAMS_PLAY_MODE_EXPRESSION = 60003,
+        EC_INVALID_PARAMS_PLAY_MODE_TEAM = 60004,
+        EC_INVALID_PARAMS_MSGQ_ENCODE = 60020,
+        EC_INVALID_PARAMS_MSGQ_DECODE = 60021,
+        EC_INVALID_PARAMS_GAME_ID = 61000,
+        EC_INVALID_PARAMS_PLAYER_INFO = 61001,
+        EC_INVALID_PARAMS_MAX_PLAYERS = 61002,
+        EC_INVALID_PARAMS_ROOM_TYPE = 61003,
+        EC_INVALID_PARAMS_PLAYER_ID = 61004,
+        EC_INVALID_PARAMS_MATCH_TYPE = 61005,
+        EC_INVALID_PARAMS_MATCH_CODE = 61006,
+        EC_INVALID_PARAMS_OPEN_ID = 61007,
+        EC_INVALID_PARAMS_PLATFORM = 61008,
+        EC_INVALID_PARAMS_TIMESTAMP = 61009,
+        EC_INVALID_PARAMS_SIGN = 61010,
+        EC_INVALID_PARAMS_NONCE = 61011,
+        EC_INVALID_PARAMS_TOKEN = 61012,
+        EC_INVALID_PARAMS_NETWORK_STATE = 61013,
+        EC_INVALID_PARAMS_ROOM_NAME = 61014,
+        EC_INVALID_PARAMS_CREATE_ROOM_TYPE = 61015,
+        EC_INVALID_PARAMS_DEVICE_ID = 61016,
+        EC_INVALID_PARAMS_PAGE_NO = 61017,
+        EC_INVALID_PARAMS_PAGE_SIZE = 61018,
+        EC_INVALID_PARAMS_PLAYER_LIST = 61019,
+        EC_INVALID_PARAMS_MESSAGE = 61020,
+        EC_INVALID_CHANGE_ROOM_OPTION = 61021,
+        EC_INVALID_PARAMS_REGION = 61022,
+        EC_INVALID_PARAMS_OWNER = 61023,
+        EC_INVALID_PARAMS_OWNER_OPEN_ID = 61024,
+        EC_INVALID_PARAMS_OPEN_ID_DUPLICATE = 61026,
+        EC_INVALID_PARAMS_ROOM_CREATE_TYPE = 61027,
+        EC_MYSPP_SYSTEM_ERR = -1000,
+        EC_REDIS_KEY_NOT_EXIST = -66000,
+        EC_REDIS_SET_OP_ERR = -66001,
+        EC_REDIS_GET_OP_ERR = -66002,
+        EC_REDIS_DEL_OP_ERR = -66003,
+        EC_REDIS_EXPIRE_OP_ERR = -66004,
+        EC_REDIS_LOCK_OP_ERR = -66005,
+        EC_REDIS_LOCK_ALREADY_EXIST = -66006,
+        EC_REDIS_LIST_OP_ERR = -66020,
+        EC_REDIS_LIST_POP_EMPTY = -66021,
+        EC_REDIS_POOL_GET_INSTANCE_FAIL = -66022,
+        EC_REDIS_SET_IS_EMPTY = -66023,
+        EC_REDIS_OP_INVALID_PARAMS = -66024,
+        EC_MYSQL_NO_ROW_FOUND = -66100,
+        EC_MYSQL_MULTI_ROW_FOUND = -66101,
+        EC_MYSQL_INSERT_FAIL = -66102,
+        EC_MYSQL_DELETE_FAIL = -66103,
+        EC_MYSQL_UPDATE_FAIL = -66104,
+        EC_MYSQL_QUERYS_FAIL = -66105,
+        EC_PB_SERIALIZE_TO_STR_ERR = -66200,
+        EC_PB_PARSE_FROM_STR_ERR = -66201,
+        EC_DATA_FORMAT_ERR = -66210,
+        EC_JSON_FORMAT_ERR = -66211,
+        EC_JSON_PLAY_MODE_FORMAT_ERR = -66212,
+        EC_JSON_PLAY_MODE_PARISE_ERR = -66213,
+        EC_INVALID_PARAMS_RECORE_ID = -66601,
+        EC_HASHID_ERR = -66700,
+        EC_HASHID_ENCODE_ERR = -66701,
+        EC_HASHID_DECODE_ERR = -66702,
+        EC_CONF_ROOM_ID_BUCKET_ERR = -66801,
+        EC_SDK_SEND_FAIL = 90001,
+        EC_SDK_UNINIT = 90002,
+        EC_SDK_RES_TIMEOUT = 90003,
+        EC_SDK_NO_LOGIN = 90004,
+        EC_SDK_NO_CHECK_LOGIN = 90005,
+        EC_SDK_SOCKET_ERROR = 90006,
+        EC_SDK_SOCKET_CLOSE = 90007,
+        EC_SDK_NO_ROOM = 90008
+    }
+    namespace types {
+        /**
+            * @name 初始化回调参数
+            * @field {number} serverTime 服务器时间戳(单位:毫秒)
+            */
+        interface InitRsp {
+            serverTime: number;
+        }
+        /**
+         * @name 玩家信息参数
+         * @field {string} name  玩家昵称
+         * @field {number} customPlayerStatus  自定义玩家状态
+         * @field {string} customProfile  自定义玩家信息
+         */
+        interface PlayerInfoPara {
+            name: string;
+            customPlayerStatus: number;
+            customProfile: string;
+        }
+        /**
+         * @name 玩家信息参数
+         * @field {string} name  玩家昵称
+         * @field {number} customPlayerStatus  自定义玩家状态
+         * @field {string} customProfile  自定义玩家信息
+         * @field {MGOBE.types.MatchAttribute[]} matchAttributes  匹配属性
+         */
+        interface MatchPlayerInfoPara {
+            name: string;
+            customPlayerStatus: number;
+            customProfile: string;
+            matchAttributes: MGOBE.types.MatchAttribute[];
+        }
+        /**
+         * @name  初始化参数:游戏信息
+         * @description 游戏秘钥指控制台上的“游戏key”。在初始化SDK时,secretKey、CreateSignature两个参数传其中一个即可。如果实现了CreateSignature方法,则忽略secretKey参数。
+         * @description CreateSignature用于计算签名signature,优点在于避免客户端泄露游戏密钥。
+         * @field {string} gameId  游戏ID
+         * @field {string} openId  玩家openId
+         * @field {string} secretKey  游戏秘钥
+         * @field {MGOBE.types.CreateSignature} createSignature  签名函数
+         */
+        interface GameInfoPara {
+            gameId: string;
+            openId: string;
+            secretKey?: string;
+            createSignature?: MGOBE.types.CreateSignature;
+        }
+        /**
+         * @name  初始化参数:配置参数
+         * @description 服务地址指控制台上的“域名”
+         * @field {number} reconnectMaxTimes  重连接次数
+         * @field {number} reconnectInterval  重连接时间间隔
+         * @field {number} resendInterval  消息重发时间间隔
+         * @field {number} resendTimeout  消息重发超时时间
+         * @field {string} url  服务地址
+         * @field {boolean} isAutoRequestFrame  是否自动补帧
+         * @field {string} cacertNativeUrl  本地CA根证书路径(CocosNative环境需要该参数)
+         */
+        interface ConfigPara {
+            reconnectMaxTimes?: number;
+            reconnectInterval?: number;
+            resendInterval?: number;
+            resendTimeout?: number;
+            url?: string;
+            isAutoRequestFrame?: boolean;
+            cacertNativeUrl?: string;
+        }
+        /**
+         * @name  初始化签名
+         * @description 可以使用签名的方式初始化SDK,避免客户端泄露游戏密钥。
+         * @field {string} sign  签名
+         * @field {number} nonce  随机正整数(uint64类型)
+         * @field {number} timestamp  时间戳,秒(uint64类型)
+         */
+        interface Signature {
+            sign: string;
+            nonce: number;
+            timestamp: number;
+        }
+        /**
+         * @name 签名函数
+         * @description 开发者如果使用签名方式初始化SDK,需要实现该方法,并在callback中回调Signature对象。
+         * @field {(signature: MGOBE.types.Signature) => any} callback  回调函数,在该函数返回Signature对象
+         */
+        type CreateSignature = (callback: (signature: MGOBE.types.Signature) => any) => any;
+        /**
+         * @name 修改玩家状态参数
+         * @field {number} customPlayerStatus  自定义玩家状态
+         */
+        interface ChangeCustomPlayerStatusPara {
+            customPlayerStatus: number;
+        }
+        /**
+         * @name  创建房间参数
+         * @field {string} roomName  房间名称
+         * @field {string} roomType  房间类型
+         * @field {number} maxPlayers  房间最大玩家数量
+         * @field {boolean} isPrivate  是否私有
+         * @field {string} customProperties  自定义房间属性
+         * @field {MGOBE.types.PlayerInfoPara} playerInfo  玩家信息
+         */
+        interface CreateRoomPara {
+            roomName: string;
+            roomType: string;
+            maxPlayers: number;
+            isPrivate: boolean;
+            customProperties: string;
+            playerInfo: MGOBE.types.PlayerInfoPara;
+        }
+        /**
+         * @name 创建团队房间参数
+         * @field {string} roomName  房间名称
+         * @field {string} roomType  房间类型
+         * @field {number} maxPlayers  房间最大玩家数量
+         * @field {boolean} isPrivate  是否私有
+         * @field {string} customProperties  自定义房间属性
+         * @field {MGOBE.types.PlayerInfoPara} playerInfo  玩家信息
+         * @field {number} teamNumber  队伍数量
+         */
+        interface CreateTeamRoomPara {
+            roomName: string;
+            roomType: string;
+            maxPlayers: number;
+            isPrivate: boolean;
+            customProperties: string;
+            playerInfo: MGOBE.types.PlayerInfoPara;
+            teamNumber: number;
+        }
+        /**
+         * @name 加入房间参数
+         * @field {MGOBE.types.PlayerInfoPara} playerInfo  玩家信息
+         */
+        interface JoinRoomPara {
+            playerInfo: MGOBE.types.PlayerInfoPara;
+        }
+        /**
+         * @name 加入团队房间参数
+         * @field {MGOBE.types.PlayerInfoPara} playerInfo  玩家信息
+         * @field {string} teamId  队伍ID
+         */
+        interface JoinTeamRoomPara {
+            playerInfo: MGOBE.types.PlayerInfoPara;
+            teamId: string;
+        }
+        /**
+         * @name 房间变更参数
+         * @field {string} roomName  房间名称(可选)
+         * @field {string} owner  房主ID(可选)
+         * @field {boolean} isPrivate  是否私有(可选)
+         * @field {string} customProperties  自定义房间属性(可选)
+         * @field {boolean} isForbidJoin  是否禁止加入房间(可选)
+         */
+        interface ChangeRoomPara {
+            roomName?: string;
+            owner?: string;
+            isPrivate?: boolean;
+            customProperties?: string;
+            isForbidJoin?: boolean;
+        }
+        /**
+         * @name 移除房间内玩家参数
+         * @field {string} removePlayerId  被移除玩家ID
+         */
+        interface RemovePlayerPara {
+            removePlayerId: string;
+        }
+        /**
+         * @name 获取房间列表参数
+         * @field {number} pageNo  页号,从1开始
+         * @field {number} pageSize  每页数量,最大为10
+         * @field {string} roomType  房间类型(可选)
+         * @field {boolean} isDesc  是否按照房间创建时间倒序
+         */
+        interface GetRoomListPara {
+            pageNo: number;
+            pageSize: number;
+            roomType?: string;
+            isDesc?: boolean;
+        }
+        /**
+         * @name 获取房间参数
+         * @field {string} roomId  房间ID
+         */
+        interface GetRoomByRoomIdPara {
+            roomId: string;
+        }
+        /**
+         * @name 多人匹配参数
+         * @description 匹配 code 需要在控制台创建匹配获得。
+         * @field {string} matchCode  匹配Code
+         * @field {MGOBE.types.MatchPlayerInfoPara} playerInfo  玩家信息
+         */
+        interface MatchPlayersPara {
+            matchCode: string;
+            playerInfo: MGOBE.types.MatchPlayerInfoPara;
+        }
+        /**
+         * @name 房间匹配参数
+         * @field {MGOBE.types.PlayerInfoPara} playerInfo  玩家信息
+         * @field {number} maxPlayers  房间最大玩家数量
+         * @field {string} roomType  房间的类型
+         */
+        interface MatchRoomPara {
+            playerInfo: MGOBE.types.PlayerInfoPara;
+            maxPlayers: number;
+            roomType: string;
+        }
+        /**
+         * @name 组队匹配玩家信息参数
+         * @field {string} id  玩家ID
+         * @field {string} name  玩家昵称
+         * @field {number} customPlayerStatus  自定义玩家状态
+         * @field {string} customProfile  自定义玩家信息
+         * @field {MGOBE.types.MatchAttribute[]} matchAttributes  匹配属性
+         */
+        interface MatchGroupPlayerInfoPara {
+            id: string;
+            name: string;
+            customPlayerStatus: number;
+            customProfile: string;
+            matchAttributes: MGOBE.types.MatchAttribute[];
+        }
+        /**
+         * @name 组队匹配参数
+         * @description 匹配 code 需要在控制台创建匹配获得。
+         * @field {string} matchCode  匹配Code
+         * @field {MGOBE.types.MatchGroupPlayerInfoPara[]} playerInfoList[]  队员信息
+         */
+        interface MatchGroupPara {
+            matchCode: string;
+            playerInfoList: MGOBE.types.MatchGroupPlayerInfoPara[];
+        }
+        /**
+         * @name 组队匹配结束广播回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         * @field {number} errCode  错误码
+         */
+        interface MatchBst {
+            roomInfo: MGOBE.types.RoomInfo;
+            errCode: number;
+        }
+        /**
+         * @name 组队匹配取消广播回调参数
+         * @field {string} matchCode  匹配Code
+         * @field {string} playerId  发起取消匹配的玩家ID
+         */
+        interface CancelMatchBst {
+            matchCode: string;
+            playerId: string;
+        }
+        /**
+         * @name 取消匹配参数
+         * @field {MGOBE.types.MatchType}  matchType 匹配类型
+         */
+        interface CancelPlayerMatchPara {
+            matchType: MGOBE.types.MatchType;
+        }
+        /**
+         * @name 发送帧数据参数
+         * @field {object} data  帧数据
+         */
+        interface SendFramePara {
+            data: object;
+        }
+        /**
+         * @name 请求补帧参数
+         * @description 补帧范围大于等于beginFrameId,小于等于endFrameId
+         * @field {number} beginFrameId  起始帧号
+         * @field {number} endFrameId  结束帧号
+         */
+        interface RequestFramePara {
+            beginFrameId: number;
+            endFrameId: number;
+        }
+        /**
+         * @name 消息接收者类型
+         * @field {1} ROOM_ALL 全部玩家
+         * @field {2} ROOM_OTHERS 除自己外的其他玩家
+         * @field {3} ROOM_SOME 房间中部分玩家
+         */
+        enum RecvType {
+            ROOM_ALL = 1,
+            ROOM_OTHERS = 2,
+            ROOM_SOME = 3
+        }
+        /**
+         * @name 发送房间内消息参数
+         * @field {string[]} recvPlayerList  接收消息玩家ID列表
+         * @field {string} msg  消息内容
+         * @field {MGOBE.types.RecvType} recvType  消息接收者类型
+         */
+        interface SendToClientPara {
+            recvPlayerList: string[];
+            msg: string;
+            recvType: MGOBE.types.RecvType;
+        }
+        /**
+         * @name 发自定义服务消息参数
+         * @field {object} data  消息内容
+         */
+        interface SendToGameSvrPara {
+            data: object;
+        }
+        /**
+         * @name 自定义服务消息广播回调参数
+         * @field {number} roomId  房间ID
+         * @field {string[]} playerIdList  接收消息玩家ID列表
+         * @field {object} data  消息内容
+         */
+        interface RecvFromGameSvrBst {
+            roomId: string;
+            recvPlayerIdList: string[];
+            data: object;
+        }
+        /**
+         * @name 帧内容
+         * @field {string} playerId  玩家ID
+         * @field {object} data  玩家帧内容
+         * @field {number} timestamp  时间戳,各玩家本地发送帧的时间
+         */
+        interface FrameItem {
+            playerId: string;
+            data: object;
+            timestamp: number;
+        }
+        /**
+         * @name 帧数据
+         * @description 附加信息包含一个 number 类型随机种子,开发者可以使用帧 ID 与随机种子组合成一个值来初始化 RandomUtil 工具。
+         * @description time 为 SDK 拟合出来的时间,目的是使每一帧到达客户端的时间尽量均匀分布,并且时间间隔尽量接近帧率的倒数。
+         * @description isReplay 表示该帧是否为自动补帧产生的帧,自动补帧需要在初始化 Listener 时设置。
+         * @description items 数组表示各个客户端发送的帧消息,按照到达服务器时间先后进行排序(数组中第0个为最先到服务器)。
+         * @field {number} frameId  帧ID
+         * @field {MGOBE.types.FrameItem[]} items  帧内容
+         * @field {MGOBE.types.FrameExtInfo} ext  附加信息
+         * @field {number} roomId  房间ID
+         * @field {number} time  该帧到达客户端时间
+         * @field {boolean} isReplay  是否为补帧
+         */
+        interface Frame {
+            id: number;
+            items: MGOBE.types.FrameItem[];
+            ext: MGOBE.types.FrameExtInfo;
+            roomId: string;
+            time?: number;
+            isReplay?: boolean;
+        }
+        /**
+         * @name 帧广播回调参数
+         * @field {MGOBE.types.Frame} frame  帧数据
+         */
+        interface RecvFrameBst {
+            frame: MGOBE.types.Frame;
+        }
+        /**
+         * @name 请求补帧回调参数
+         * @field {MGOBE.types.Frame[]} frames  帧数据数组
+         */
+        interface RequestFrameRsp {
+            frames: MGOBE.types.Frame[];
+        }
+        /**
+         * @name 玩家加入房间广播回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         * @field {string} joinPlayerId  加房玩家ID
+         */
+        interface JoinRoomBst {
+            roomInfo: MGOBE.types.RoomInfo;
+            joinPlayerId: string;
+        }
+        /**
+         * @name 玩家退出房间广播回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         * @field {string} leavePlayerId  退房玩家ID
+         */
+        interface LeaveRoomBst {
+            roomInfo: MGOBE.types.RoomInfo;
+            leavePlayerId: string;
+        }
+        /**
+         * @name 房间被解散广播回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间解散前的信息
+         */
+        interface DismissRoomBst {
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 房间属性变更广播回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface ChangeRoomBst {
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 房间内玩家被移除广播回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         * @field {string} removePlayerId  被移除玩家ID
+         */
+        interface RemovePlayerBst {
+            roomInfo: MGOBE.types.RoomInfo;
+            removePlayerId: string;
+        }
+        /**
+         * @name 房间消息广播回调参数
+         * @field {number} roomId  房间ID
+         * @field {string} sendPlayerId  发送者ID
+         * @field {string} msg  消息内容
+         */
+        interface RecvFromClientBst {
+            roomId: string;
+            sendPlayerId: string;
+            msg: string;
+        }
+        /**
+         * @name 房间内玩家网络状态变化广播回调参数
+         * @field {string} changePlayerId  玩家ID
+         * @field {MGOBE.types.NetworkState} networkState  网络状态
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface ChangePlayerNetworkStateBst {
+            changePlayerId: string;
+            networkState: MGOBE.types.NetworkState;
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 玩家自定义状态变化广播回调参数
+         * @field {string} changePlayerId  玩家ID
+         * @field {number} customPlayerStatus  自定义玩家信息
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface ChangeCustomPlayerStatusBst {
+            changePlayerId: string;
+            customPlayerStatus: number;
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 开始帧同步广播回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface StartFrameSyncBst {
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 停止帧同步广播回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface StopFrameSyncBst {
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 房间属性
+         * @description isPrivate 属性为 true 表示该房间为私有房间,不能被 matchRoom 接口匹配到。
+         * @field {string} id  房间ID
+         * @field {string} name  房间名称
+         * @field {string} type  房间类型
+         * @field {MGOBE.types.CreateRoomType} createType  创建房间方式
+         * @field {number} maxPlayers  房间最大玩家数量
+         * @field {string} owner  房主ID
+         * @field {boolean} isPrivate  是否私有
+         * @field {string} customProperties  房间自定义属性
+         * @field {MGOBE.types.PlayerInfo[]} playerList  玩家列表
+         * @field {MGOBE.types.TeamInfo[]} teamList  团队属性
+         * @field {MGOBE.types.FrameSyncState} frameSyncState  房间帧同步状态
+         * @field {number} frameRate  帧率
+         * @field {string} routeId  路由ID
+         * @field {number} createTime  房间创建时的时间戳(单位:秒)
+         * @field {number} startGameTime  开始帧同步时的时间戳(单位:秒)
+         * @field {boolean} isForbidJoin  是否禁止加入房间
+         */
+        interface RoomInfo {
+            id: string;
+            name: string;
+            type: string;
+            createType: MGOBE.types.CreateRoomType;
+            maxPlayers: number;
+            owner: string;
+            isPrivate: boolean;
+            customProperties: string;
+            playerList: MGOBE.types.PlayerInfo[];
+            teamList: MGOBE.types.TeamInfo[];
+            frameSyncState: MGOBE.types.FrameSyncState;
+            frameRate: number;
+            routeId: string;
+            createTime: number;
+            startGameTime: number;
+            isForbidJoin: boolean;
+        }
+        /**
+         * @name 修改玩家状态回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface ChangeCustomPlayerStatusRsp {
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 创建房间回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface CreateRoomRsp {
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 加入房间回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface JoinRoomRsp {
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 退出房间回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface LeaveRoomRsp {
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 解散房间回调参数
+         */
+        interface DismissRoomRsp {
+        }
+        /**
+         * @name 修改房间回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface ChangeRoomRsp {
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 移除房间内玩家回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface RemovePlayerRsp {
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 获取房间信息回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface GetRoomByRoomIdRsp {
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 获取房间列表回调参数
+         * @field {MGOBE.types.RoomInfo[]} roomList  房间列表
+         * @field {number} total  房间总数
+         */
+        interface GetRoomListRsp {
+            gameId: string;
+            roomList: MGOBE.types.RoomInfo[];
+            total: number;
+        }
+        /**
+         * @name 多人匹配回调参数
+         * @field {MGOBE.types.MatchType} matchType  匹配类型
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface MatchPlayersRsp {
+            matchType?: MGOBE.types.MatchType;
+            roomInfo?: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 房间匹配回调参数
+         * @field {MGOBE.types.RoomInfo} roomInfo  房间信息
+         */
+        interface MatchRoomSimpleRsp {
+            roomInfo: MGOBE.types.RoomInfo;
+        }
+        /**
+         * @name 组队匹配回调参数
+         * @field {string} matchCode  匹配Code
+         */
+        interface MatchGroupRsp {
+            matchCode: string;
+        }
+        /**
+         * @name 取消匹配回调参数
+         */
+        interface CancelPlayerMatchRsp {
+        }
+        /**
+         * @name  开始帧同步回调参数
+         */
+        interface StartFrameSyncRsp {
+        }
+        /**
+         * @name 停止帧同步回调参数
+         */
+        interface StopFrameSyncRsp {
+        }
+        /**
+         * @name 发送帧同步数据回调参数
+         */
+        interface SendFrameRsp {
+        }
+        /**
+         * @name 房间内发送消息回调参数
+         */
+        interface SendToClientRsp {
+        }
+        /**
+         * @name 发送自定义服务消息回调参数
+         */
+        interface SendToGameSvrRsp {
+        }
+        /**
+         * @name 匹配属性
+         * @field {string} name  属性名称
+         * @field {number} value  属性值
+         */
+        interface MatchAttribute {
+            name: string;
+            value: number;
+        }
+        /**
+         * @name 匹配类型
+         * @field {1} ROOM_SIMPLE 房间匹配
+         * @field {2} PLAYER_COMPLEX 玩家匹配
+         */
+        enum MatchType {
+            ROOM_SIMPLE = 1,
+            PLAYER_COMPLEX = 2
+        }
+        /**
+         * @name 帧数据附加信息
+         * @field {number} seed  随机数种子
+         */
+        interface FrameExtInfo {
+            seed: number;
+        }
+        /**
+         * @name 创建房间方式
+         * @field {0} COMMON_CREATE  普通创建
+         * @field {1} MATCH_CREATE  匹配创建
+         */
+        enum CreateRoomType {
+            COMMON_CREATE = 0,
+            MATCH_CREATE = 1,
+            THIRD_PARTY_CREATE = 2
+        }
+        /**
+         * @name 网络状态
+         * @field {0} COMMON_OFFLINE  房间中玩家掉线
+         * @field {1} COMMON_ONLINE  房间中玩家在线
+         * @field {2} RELAY_OFFLINE  帧同步中玩家掉线
+         * @field {3} RELAY_ONLINE  帧同步中玩家在线
+         */
+        enum NetworkState {
+            COMMON_OFFLINE = 0,
+            COMMON_ONLINE = 1,
+            RELAY_OFFLINE = 2,
+            RELAY_ONLINE = 3
+        }
+        /**
+         * @name 房间帧同步状态
+         * @field {0} STOP 未开始帧同步
+         * @field {1} START 已开始帧同步
+         */
+        enum FrameSyncState {
+            STOP = 0,
+            START = 1
+        }
+        /**
+         * @name 玩家信息
+         * @field {string} id  玩家ID
+         * @field {string} name  玩家昵称
+         * @field {string} teamId  队伍ID
+         * @field {number} customPlayerStatus  自定义玩家状态
+         * @field {string} customProfile  自定义玩家信息
+         * @field {MGOBE.types.NetworkState} commonNetworkState  玩家在房间的网络状态
+         * @field {MGOBE.types.NetworkState} relayNetworkState  玩家在游戏中的网络状态
+         * @field {boolean} isRobot  玩家是否为机器人
+         * @field {MGOBE.types.MatchAttribute[]} matchAttributes  玩家匹配属性列表(isRobot为true时生效)
+         */
+        interface PlayerInfo {
+            id: string;
+            name: string;
+            teamId: string;
+            customPlayerStatus: number;
+            customProfile: string;
+            commonNetworkState: MGOBE.types.NetworkState;
+            relayNetworkState: MGOBE.types.NetworkState;
+            isRobot: boolean;
+            matchAttributes: MGOBE.types.MatchAttribute[];
+        }
+        /**
+         * @name 队伍信息
+         * @field {string} id  队伍ID
+         * @field {string} name  队伍名称
+         * @field {number} minPlayers  队伍最小人数
+         * @field {number} maxPlayers  队伍最大人数
+         */
+        interface TeamInfo {
+            id: string;
+            name: string;
+            minPlayers: number;
+            maxPlayers: number;
+        }
+        /**
+         * 响应回调参数
+         * @field {number} code  错误码
+         * @field {string} msg  错误信息
+         * @field {string} seq  响应序列号
+         * @field {any} data  响应数据
+         */
+        interface ResponseEvent<T> {
+            code: number;
+            msg: string;
+            seq: string;
+            data?: T;
+        }
+        /**
+         * 广播回调参数
+         * @field {any} data  广播数据
+         * @field {string} seq  广播序列号
+         */
+        interface BroadcastEvent<T> {
+            data: T;
+            seq: string;
+        }
+        /**
+         * 响应回调函数
+         */
+        type ReqCallback<T> = (event: MGOBE.types.ResponseEvent<T>) => any;
+
+    }
+}

+ 5 - 0
assets/Scripts/ThirdParty/MGOBE/MGOBE.d.ts.meta

@@ -0,0 +1,5 @@
+{
+  "ver": "2.0.0",
+  "uuid": "a2adc25f-0f78-4c86-bfad-63b8f18e8d2e",
+  "subMetas": {}
+}

File diff suppressed because it is too large
+ 0 - 0
assets/Scripts/ThirdParty/MGOBE/MGOBE.js


+ 9 - 0
assets/Scripts/ThirdParty/MGOBE/MGOBE.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "87cf83ae-b4ab-4712-b90b-c8c397f07987",
+  "isPlugin": true,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": true,
+  "subMetas": {}
+}

+ 48 - 0
assets/Scripts/ThirdParty/WebSocket.js

@@ -0,0 +1,48 @@
+var websocket = {
+    sock: null,
+    on_open: function () {
+        this.send_data(JSON.stringify({
+            stype: "auth",
+            ctype: "login",
+            data: {
+                name: "TestUser",
+                pwd: 123456
+            }
+        }));
+    },
+
+    on_message: function (event) {
+        // console.log("client rcv data=" + event.data);
+        this.host.updateMsg(event.data);
+    },
+
+    on_close: function () {
+        this.close();
+    },
+
+    on_error: function () {
+        this.close();
+    },
+
+    close: function () {
+        if(this.sock){
+            this.sock.close();
+            this.sock = null;
+        }
+    },
+    connect: function (url,host) {
+        this.host = host;
+        this.sock = new WebSocket(url);
+        this.sock.binaryType = "arraybuffer";
+        this.sock.onopen = this.on_open.bind(this);
+        this.sock.onmessage = this.on_message.bind(this);
+        this.sock.onclose = this.on_close.bind(this);
+        this.sock.onerror = this.on_error.bind(this);
+    },
+
+    send_data: function (data) {
+        this.sock.send(data);
+    }
+};
+
+module.exports = websocket;

+ 9 - 0
assets/Scripts/ThirdParty/WebSocket.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "02aff491-0b06-453a-91f9-005ace39b21a",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 412 - 0
assets/Scripts/WebView.js

@@ -0,0 +1,412 @@
+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);
+    }
+    else if( name == "onQuitModalListener"){
+        console.log("onQuitModalListener == ", data.gameData);
+    }
+};
+
+let webView = {
+    bValid:false,
+    avatarBase64: null,
+    avatarSpriteFrame: null,
+    avatarUrl:'',
+    userName: '',
+    gender: 0,
+    rivalavatarBase64: null,
+    rivalAvatarSpriteFrame: null,
+    rivalavatarUrl:'',
+    rivalUserName: '',
+    rivalGender: 1,
+    listenerArr: [],
+    videoName:'',
+    kCalUnit:0,
+    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,callback) {
+        this.callback = callback;
+        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;
+        this.videoName = gameData.item.name;
+        this.kCalUnit = gameData.calorieParams.hitUnit;
+        this.callback();
+    },
+    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: "bindBoxingPost",
+                gameData: {}
+
+            }
+        })
+
+    },
+    onModify(){
+        uni.postMessage({
+            data: {
+                funName: "setAngleRatio",
+                gameData: {
+                    angleRatio:0.5 //z / x 值越小,代表直拳的判断方位越大
+                }
+
+            }
+        })
+    },
+    onBindHitBoxingPost(){
+        uni.postMessage({
+            data: {
+                funName: "bindHitBoxingPost",
+                gameData: {}
+            }
+        })
+    },
+    onUnbindHitBoxingPost(){
+        uni.postMessage({
+            data: {
+                funName: "unbindHitBoxingPost",
+                gameData: {}
+            }
+        })
+    },
+    closeGame(){
+        uni.postMessage({
+            data: {
+                funName: "closeGame",
+                gameData: {}
+            }
+        });
+    },
+    onAddQuitModalListener(){
+
+        uni.postMessage({
+            data: {
+                funName: "addQuitModal",
+                gameData: {}
+
+            }
+        });
+    },
+    onRemoveQuitModalListener(){
+
+        uni.postMessage({
+            data: {
+                funName: "removeQuitModal",
+                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
assets/Scripts/WebView.js.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.0.8",
+  "uuid": "f2884ad8-8b2e-4058-b85e-899d7c739d84",
+  "isPlugin": false,
+  "loadPluginInWeb": true,
+  "loadPluginInNative": true,
+  "loadPluginInEditor": false,
+  "subMetas": {}
+}

+ 12 - 0
assets/Textures.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "be9e2a6b-8d13-4f1d-96a2-712b1ea048a3",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

+ 12 - 0
assets/Textures/Game.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "02a82005-aeb6-4258-a5f0-7beff20cfdd6",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

BIN
assets/Textures/Game/BG.jpg


+ 36 - 0
assets/Textures/Game/BG.jpg.meta

@@ -0,0 +1,36 @@
+{
+  "ver": "2.3.5",
+  "uuid": "b8c8d846-8d70-4fbb-bffd-803e5775c160",
+  "type": "sprite",
+  "wrapMode": "clamp",
+  "filterMode": "bilinear",
+  "premultiplyAlpha": false,
+  "genMipmaps": false,
+  "packable": true,
+  "width": 720,
+  "height": 1600,
+  "platformSettings": {},
+  "subMetas": {
+    "BG": {
+      "ver": "1.0.4",
+      "uuid": "914f4e91-39b5-4aaf-9efc-7509fabda88b",
+      "rawTextureUuid": "b8c8d846-8d70-4fbb-bffd-803e5775c160",
+      "trimType": "auto",
+      "trimThreshold": 1,
+      "rotated": false,
+      "offsetX": 0,
+      "offsetY": 0,
+      "trimX": 0,
+      "trimY": 0,
+      "width": 720,
+      "height": 1600,
+      "rawWidth": 720,
+      "rawHeight": 1600,
+      "borderTop": 0,
+      "borderBottom": 0,
+      "borderLeft": 0,
+      "borderRight": 0,
+      "subMetas": {}
+    }
+  }
+}

+ 12 - 0
assets/Textures/Game/Food.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.1.2",
+  "uuid": "2ad9da5e-95cb-4e33-9dd0-cd62469b6f71",
+  "isBundle": false,
+  "bundleName": "",
+  "priority": 1,
+  "compressionType": {},
+  "optimizeHotUpdate": {},
+  "inlineSpriteFrames": {},
+  "isRemoteBundle": {},
+  "subMetas": {}
+}

Some files were not shown because too many files changed in this diff