浏览代码

Merge branch 'master' of http://120.92.132.192:23541/TDGame/TDGameClient3D

xiejing 4 年之前
父节点
当前提交
25f16a0daf

+ 109 - 2
assets/resources/configs/Fence.json

@@ -6,8 +6,115 @@
         "idleAnimationSpeed": 1,
         "damageAnimation": "Damage",
         "damageAnimationSpeed": 1,
-        "hp": 100,
+        "hp": 40,
         "dieAnimation": "Die",
         "dieAnimationSpeed": 1
-    }
+    },
+    {
+        "id": 30101,
+        "prefab": "d3d/barriers/fences/Fence02",
+        "idleAnimation": "Idle",
+        "idleAnimationSpeed": 1,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "hp": 80,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1
+    },
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {},
+    {}
 ]

+ 421 - 5
assets/resources/configs/Levels.json

@@ -6,17 +6,433 @@
         "maxAnger": 100,
         "monsters": [
             {
-                "mId": 1,
+                "mId": "M1",
                 "monsterId": 20101001,
-                "type": 1,
-                "count": 10,
-                "intervalTime": 1500,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
                 "hp": 10,
                 "damage": 5,
                 "anger": 5,
-                "createTime": 0,
+                "createTime": 1000,
                 "startPosType": 1,
                 "startPos": 0
+            },
+            {
+                "mId": "M2",
+                "monsterId": 20101002,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 4000,
+                "startPosType": 1,
+                "startPos": 1
+            },
+            {
+                "mId": "M3",
+                "monsterId": 20101003,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 7000,
+                "startPosType": 1,
+                "startPos": 2
+            },
+            {
+                "mId": "M4",
+                "monsterId": 20201001,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 10000,
+                "startPosType": 1,
+                "startPos": 0
+            },
+            {
+                "mId": "M5",
+                "monsterId": 20201002,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 13000,
+                "startPosType": 1,
+                "startPos": 1
+            },
+            {
+                "mId": "M6",
+                "monsterId": 20201003,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 16000,
+                "startPosType": 1,
+                "startPos": 2
+            },
+            {
+                "mId": "M7",
+                "monsterId": 20301001,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 19000,
+                "startPosType": 1,
+                "startPos": 0
+            },
+            {
+                "mId": "M8",
+                "monsterId": 20301002,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 22000,
+                "startPosType": 1,
+                "startPos": 1
+            },
+            {
+                "mId": "M9",
+                "monsterId": 20301003,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 25000,
+                "startPosType": 1,
+                "startPos": 2
+            },
+            {
+                "mId": "M10",
+                "monsterId": 20401001,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 28000,
+                "startPosType": 1,
+                "startPos": 0
+            },
+            {
+                "mId": "M11",
+                "monsterId": 20401002,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 31000,
+                "startPosType": 1,
+                "startPos": 1
+            },
+            {
+                "mId": "M12",
+                "monsterId": 20401003,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 34000,
+                "startPosType": 1,
+                "startPos": 2
+            },
+            {
+                "mId": "M13",
+                "monsterId": 20501001,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 37000,
+                "startPosType": 1,
+                "startPos": 0
+            },
+            {
+                "mId": "M14",
+                "monsterId": 20501002,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 40000,
+                "startPosType": 1,
+                "startPos": 1
+            },
+            {
+                "mId": "M15",
+                "monsterId": 20501003,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 43000,
+                "startPosType": 1,
+                "startPos": 2
+            },
+            {
+                "mId": "M16",
+                "monsterId": 20601001,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 46000,
+                "startPosType": 1,
+                "startPos": 0
+            },
+            {
+                "mId": "M17",
+                "monsterId": 20601002,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 49000,
+                "startPosType": 1,
+                "startPos": 1
+            },
+            {
+                "mId": "M18",
+                "monsterId": 20601003,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 52000,
+                "startPosType": 1,
+                "startPos": 2
+            },
+            {
+                "mId": "M19",
+                "monsterId": 20901001,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 55000,
+                "startPosType": 1,
+                "startPos": 0
+            },
+            {
+                "mId": "M20",
+                "monsterId": 20901002,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 58000,
+                "startPosType": 1,
+                "startPos": 1
+            },
+            {
+                "mId": "M21",
+                "monsterId": 20901003,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 61000,
+                "startPosType": 1,
+                "startPos": 2
+            },
+            {
+                "mId": "M22",
+                "monsterId": 21001001,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 64000,
+                "startPosType": 1,
+                "startPos": 0
+            },
+            {
+                "mId": "M23",
+                "monsterId": 21001002,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 67000,
+                "startPosType": 1,
+                "startPos": 1
+            },
+            {
+                "mId": "M24",
+                "monsterId": 21001003,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 70000,
+                "startPosType": 1,
+                "startPos": 2
+            },
+            {
+                "mId": "M25",
+                "monsterId": 21101001,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 73000,
+                "startPosType": 1,
+                "startPos": 0
+            },
+            {
+                "mId": "M26",
+                "monsterId": 21101002,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 76000,
+                "startPosType": 1,
+                "startPos": 1
+            },
+            {
+                "mId": "M27",
+                "monsterId": 21101003,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 79000,
+                "startPosType": 1,
+                "startPos": 2
+            },
+            {
+                "mId": "M28",
+                "monsterId": 21201001,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 82000,
+                "startPosType": 1,
+                "startPos": 0
+            },
+            {
+                "mId": "M29",
+                "monsterId": 21201002,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 85000,
+                "startPosType": 1,
+                "startPos": 1
+            },
+            {
+                "mId": "M30",
+                "monsterId": 21201003,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 88000,
+                "startPosType": 1,
+                "startPos": 2
+            },
+            {
+                "mId": "M31",
+                "monsterId": 21401001,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 91000,
+                "startPosType": 1,
+                "startPos": 0
+            },
+            {
+                "mId": "M32",
+                "monsterId": 21401002,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 94000,
+                "startPosType": 1,
+                "startPos": 1
+            },
+            {
+                "mId": "M33",
+                "monsterId": 21401003,
+                "type": 0,
+                "count": 1,
+                "intervalTime": 1000,
+                "hp": 10,
+                "damage": 5,
+                "anger": 5,
+                "createTime": 97000,
+                "startPosType": 1,
+                "startPos": 2
             }
         ]
     }

+ 1064 - 7
assets/resources/configs/Monsters.json

@@ -77,6 +77,162 @@
             }
         ]
     },
+    {
+        "id": 20201001,
+        "prefab": "d3d/monsters/guai_0201",
+        "moveSpeed": 1,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 1,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.6,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1,
+                "y": 1,
+                "z": 1
+            }
+        ]
+    },
+    {
+        "id": 20201002,
+        "prefab": "d3d/monsters/guai_0201",
+        "moveSpeed": 2,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 2,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1.5,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.3,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 0.7,
+                "y": 0.7,
+                "z": 0.7
+            }
+        ]
+    },
+    {
+        "id": 20201003,
+        "prefab": "d3d/monsters/guai_0201",
+        "moveSpeed": 0.6,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 0.6,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 0.6,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.8,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1.5,
+                "y": 1.5,
+                "z": 1.5
+            }
+        ]
+    },
+    {
+        "id": 20301001,
+        "prefab": "d3d/monsters/guai_0301",
+        "moveSpeed": 1,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 1,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.6,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1,
+                "y": 1,
+                "z": 1
+            }
+        ]
+    },
+    {
+        "id": 20301002,
+        "prefab": "d3d/monsters/guai_0301",
+        "moveSpeed": 2,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 2,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1.5,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.3,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 0.7,
+                "y": 0.7,
+                "z": 0.7
+            }
+        ]
+    },
+    {
+        "id": 20301003,
+        "prefab": "d3d/monsters/guai_0301",
+        "moveSpeed": 0.6,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 0.6,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 0.6,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.8,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1.5,
+                "y": 1.5,
+                "z": 1.5
+            }
+        ]
+    },
     {
         "id": 20401001,
         "prefab": "d3d/monsters/guai_0401",
@@ -106,27 +262,928 @@
     {
         "id": 20401002,
         "prefab": "d3d/monsters/guai_0401",
-        "moveSpeed": 0.5,
+        "moveSpeed": 2,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 2,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1.5,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.3,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 0.7,
+                "y": 0.7,
+                "z": 0.7
+            }
+        ]
+    },
+    {
+        "id": 20401003,
+        "prefab": "d3d/monsters/guai_0401",
+        "moveSpeed": 0.6,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 0.6,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 0.6,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.8,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1.5,
+                "y": 1.5,
+                "z": 1.5
+            }
+        ]
+    },
+    {
+        "id": 20501001,
+        "prefab": "d3d/monsters/guai_0501",
+        "moveSpeed": 1,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 1,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.6,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1,
+                "y": 1,
+                "z": 1
+            }
+        ]
+    },
+    {
+        "id": 20501002,
+        "prefab": "d3d/monsters/guai_0501",
+        "moveSpeed": 2,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 2,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1.5,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.3,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 0.7,
+                "y": 0.7,
+                "z": 0.7
+            }
+        ]
+    },
+    {
+        "id": 20501003,
+        "prefab": "d3d/monsters/guai_0501",
+        "moveSpeed": 0.6,
         "moveAnimation": "Walk",
-        "moveAnimationSpeed": 0.5,
+        "moveAnimationSpeed": 0.6,
         "attackAnimation": "Attack",
-        "attackAnimationSpeed": 0.5,
+        "attackAnimationSpeed": 0.6,
         "damageAnimation": "Damage",
         "damageAnimationSpeed": 1,
         "dieAnimation": "Die",
         "dieAnimationSpeed": 1,
         "attackAnimationEvents": [
             {
-                "frame": 0.9,
+                "frame": 0.8,
                 "func": "AttackDamageFrame"
             }
         ],
         "scale": [
             {
-                "x": 2,
-                "y": 2,
-                "z": 2
+                "x": 1.5,
+                "y": 1.5,
+                "z": 1.5
             }
         ]
+    },
+    {
+        "id": 20601001,
+        "prefab": "d3d/monsters/guai_0601",
+        "moveSpeed": 1,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 1,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.6,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1,
+                "y": 1,
+                "z": 1
+            }
+        ]
+    },
+    {
+        "id": 20601002,
+        "prefab": "d3d/monsters/guai_0601",
+        "moveSpeed": 2,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 2,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1.5,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.3,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 0.7,
+                "y": 0.7,
+                "z": 0.7
+            }
+        ]
+    },
+    {
+        "id": 20601003,
+        "prefab": "d3d/monsters/guai_0601",
+        "moveSpeed": 0.6,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 0.6,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 0.6,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.8,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1.5,
+                "y": 1.5,
+                "z": 1.5
+            }
+        ]
+    },
+    {
+        "id": 20901001,
+        "prefab": "d3d/monsters/guai_0901",
+        "moveSpeed": 1,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 1,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.6,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1,
+                "y": 1,
+                "z": 1
+            }
+        ]
+    },
+    {
+        "id": 20901002,
+        "prefab": "d3d/monsters/guai_0901",
+        "moveSpeed": 2,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 2,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1.5,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.3,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 0.7,
+                "y": 0.7,
+                "z": 0.7
+            }
+        ]
+    },
+    {
+        "id": 20901003,
+        "prefab": "d3d/monsters/guai_0901",
+        "moveSpeed": 0.6,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 0.6,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 0.6,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.8,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1.5,
+                "y": 1.5,
+                "z": 1.5
+            }
+        ]
+    },
+    {
+        "id": 21001001,
+        "prefab": "d3d/monsters/guai_1001",
+        "moveSpeed": 1,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 1,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.6,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1,
+                "y": 1,
+                "z": 1
+            }
+        ]
+    },
+    {
+        "id": 21001002,
+        "prefab": "d3d/monsters/guai_1001",
+        "moveSpeed": 2,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 2,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1.5,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.3,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 0.7,
+                "y": 0.7,
+                "z": 0.7
+            }
+        ]
+    },
+    {
+        "id": 21001003,
+        "prefab": "d3d/monsters/guai_1001",
+        "moveSpeed": 0.6,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 0.6,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 0.6,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.8,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1.5,
+                "y": 1.5,
+                "z": 1.5
+            }
+        ]
+    },
+    {
+        "id": 21101001,
+        "prefab": "d3d/monsters/guai_1101",
+        "moveSpeed": 1,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 1,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.6,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1,
+                "y": 1,
+                "z": 1
+            }
+        ]
+    },
+    {
+        "id": 21101002,
+        "prefab": "d3d/monsters/guai_1101",
+        "moveSpeed": 2,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 2,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1.5,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.3,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 0.7,
+                "y": 0.7,
+                "z": 0.7
+            }
+        ]
+    },
+    {
+        "id": 21101003,
+        "prefab": "d3d/monsters/guai_1101",
+        "moveSpeed": 0.6,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 0.6,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 0.6,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.8,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1.5,
+                "y": 1.5,
+                "z": 1.5
+            }
+        ]
+    },
+    {
+        "id": 21201001,
+        "prefab": "d3d/monsters/guai_1201",
+        "moveSpeed": 1,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 1,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.6,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1,
+                "y": 1,
+                "z": 1
+            }
+        ]
+    },
+    {
+        "id": 21201002,
+        "prefab": "d3d/monsters/guai_1201",
+        "moveSpeed": 2,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 2,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1.5,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.3,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 0.7,
+                "y": 0.7,
+                "z": 0.7
+            }
+        ]
+    },
+    {
+        "id": 21201003,
+        "prefab": "d3d/monsters/guai_1201",
+        "moveSpeed": 0.6,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 0.6,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 0.6,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.8,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1.5,
+                "y": 1.5,
+                "z": 1.5
+            }
+        ]
+    },
+    {
+        "id": 21401001,
+        "prefab": "d3d/monsters/guai_1401",
+        "moveSpeed": 1,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 1,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.6,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1,
+                "y": 1,
+                "z": 1
+            }
+        ]
+    },
+    {
+        "id": 21401002,
+        "prefab": "d3d/monsters/guai_1401",
+        "moveSpeed": 2,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 2,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 1.5,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.3,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 0.7,
+                "y": 0.7,
+                "z": 0.7
+            }
+        ]
+    },
+    {
+        "id": 21401003,
+        "prefab": "d3d/monsters/guai_1401",
+        "moveSpeed": 0.6,
+        "moveAnimation": "Walk",
+        "moveAnimationSpeed": 0.6,
+        "attackAnimation": "Attack",
+        "attackAnimationSpeed": 0.6,
+        "damageAnimation": "Damage",
+        "damageAnimationSpeed": 1,
+        "dieAnimation": "Die",
+        "dieAnimationSpeed": 1,
+        "attackAnimationEvents": [
+            {
+                "frame": 0.8,
+                "func": "AttackDamageFrame"
+            }
+        ],
+        "scale": [
+            {
+                "x": 1.5,
+                "y": 1.5,
+                "z": 1.5
+            }
+        ]
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": ""
+    },
+    {
+        "id": "",
+        "attackAnimationEvents": [
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {}
+        ],
+        "scale": [
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {},
+            {}
+        ]
     }
 ]

+ 354 - 192
assets/resources/configs/Shop.json

@@ -1,302 +1,464 @@
 [
     {
-        "id": 1,
-        "weaId": 10101,
-        "quickId": 10101
+        "id": 10101,
+        "needId": 10101,
+        "quickId": 10101,
+        "index": 1
     },
     {
-        "id": 2,
-        "weaId": 10201,
-        "quickId": 10101
+        "id": 10201,
+        "needId": 10501,
+        "quickId": 10101,
+        "index": 2
     },
     {
-        "id": 3,
-        "weaId": 10501,
-        "quickId": 10101
+        "id": 10501,
+        "needId": 10901,
+        "quickId": 10101,
+        "index": 3
     },
     {
-        "id": 4,
-        "weaId": 10801,
-        "quickId": 10101
+        "id": 10801,
+        "needId": 10301,
+        "quickId": 10101,
+        "index": 4
     },
     {
-        "id": 5,
-        "weaId": 10901,
-        "quickId": 10201
+        "id": 10901,
+        "needId": 10401,
+        "quickId": 10201,
+        "index": 5
     },
     {
-        "id": 6,
-        "weaId": 10102,
-        "quickId": 10501
+        "id": 10102,
+        "needId": 10601,
+        "quickId": 10501,
+        "index": 6
     },
     {
-        "id": 7,
-        "weaId": 10301,
-        "quickId": 10801
+        "id": 10301,
+        "needId": 10701,
+        "quickId": 10801,
+        "index": 7
     },
     {
-        "id": 8,
-        "weaId": 10401,
-        "quickId": 10901
+        "id": 10401,
+        "needId": 11001,
+        "quickId": 10901,
+        "index": 8
     },
     {
-        "id": 9,
-        "weaId": 10601,
-        "quickId": 10102
+        "id": 10601,
+        "needId": 11301,
+        "quickId": 10102,
+        "index": 9
     },
     {
-        "id": 10,
-        "weaId": 10701,
-        "quickId": 10301
+        "id": 10701,
+        "needId": 11401,
+        "quickId": 10301,
+        "diamondPurchaseId": "10601|10401",
+        "unsealedGunId": 10701,
+        "index": 10
     },
     {
-        "id": 11,
-        "weaId": 11001,
-        "quickId": 10401
+        "id": 11001,
+        "needId": 11501,
+        "quickId": 10401,
+        "diamondPurchaseId": "10701|10601",
+        "unsealedGunId": 11001,
+        "index": 11
     },
     {
-        "id": 12,
-        "weaId": 11301,
-        "quickId": 10601
+        "id": 11301,
+        "needId": 11701,
+        "quickId": 10601,
+        "diamondPurchaseId": "11001|10701",
+        "unsealedGunId": 11301,
+        "index": 12
     },
     {
-        "id": 13,
-        "weaId": 11401,
-        "quickId": 10701
+        "id": 11401,
+        "needId": 10103,
+        "quickId": 10701,
+        "diamondPurchaseId": "11301|11001",
+        "unsealedGunId": 11401,
+        "index": 13
     },
     {
-        "id": 14,
-        "weaId": 11501,
-        "quickId": 11001
+        "id": 11501,
+        "needId": 10602,
+        "quickId": 11001,
+        "diamondPurchaseId": "11401|11301",
+        "unsealedGunId": 11501,
+        "index": 14
     },
     {
-        "id": 15,
-        "weaId": 11701,
-        "quickId": 11301
+        "id": 11701,
+        "needId": 11201,
+        "quickId": 11301,
+        "diamondPurchaseId": "11501|11401",
+        "unsealedGunId": 11701,
+        "index": 15
     },
     {
-        "id": 16,
-        "weaId": 10103,
-        "quickId": 11401
+        "id": 10103,
+        "needId": 10402,
+        "quickId": 11401,
+        "diamondPurchaseId": "11701|11501",
+        "unsealedGunId": 10103,
+        "index": 16
     },
     {
-        "id": 17,
-        "weaId": 10602,
-        "quickId": 11501
+        "id": 10602,
+        "needId": 10702,
+        "quickId": 11501,
+        "diamondPurchaseId": "10103|11701",
+        "unsealedGunId": 10602,
+        "index": 17
     },
     {
-        "id": 18,
-        "weaId": 11201,
-        "quickId": 11701
+        "id": 11201,
+        "needId": 11101,
+        "quickId": 11701,
+        "diamondPurchaseId": "10602|10103",
+        "unsealedGunId": 11201,
+        "index": 18
     },
     {
-        "id": 19,
-        "weaId": 10402,
-        "quickId": 10103
+        "id": 10402,
+        "needId": 10302,
+        "quickId": 10103,
+        "diamondPurchaseId": "11201|10602",
+        "unsealedGunId": 10402,
+        "index": 19
     },
     {
-        "id": 20,
-        "weaId": 10702,
-        "quickId": 10602
+        "id": 10702,
+        "needId": 10603,
+        "quickId": 10602,
+        "diamondPurchaseId": "10402|11201",
+        "unsealedGunId": 10702,
+        "index": 20
     },
     {
-        "id": 21,
-        "weaId": 11101,
-        "quickId": 11201
+        "id": 11101,
+        "needId": 11601,
+        "quickId": 11201,
+        "diamondPurchaseId": "10702|10402",
+        "unsealedGunId": 11101,
+        "index": 21
     },
     {
-        "id": 22,
-        "weaId": 10302,
-        "quickId": 10402
+        "id": 10302,
+        "needId": 11502,
+        "quickId": 10402,
+        "diamondPurchaseId": "11101|10702",
+        "unsealedGunId": 10302,
+        "index": 22
     },
     {
-        "id": 23,
-        "weaId": 10603,
-        "quickId": 10702
+        "id": 10603,
+        "needId": 10202,
+        "quickId": 10702,
+        "diamondPurchaseId": "10302|11101",
+        "unsealedGunId": 10603,
+        "index": 23
     },
     {
-        "id": 24,
-        "weaId": 11601,
-        "quickId": 11101
+        "id": 11601,
+        "needId": 10902,
+        "quickId": 11101,
+        "diamondPurchaseId": "10603|10302",
+        "unsealedGunId": 11601,
+        "index": 24
     },
     {
-        "id": 25,
-        "weaId": 11502,
-        "quickId": 10302
+        "id": 11502,
+        "needId": 10802,
+        "quickId": 10302,
+        "diamondPurchaseId": "11601|10603",
+        "unsealedGunId": 11502,
+        "index": 25
     },
     {
-        "id": 26,
-        "weaId": 10202,
-        "quickId": 10603
+        "id": 10202,
+        "needId": 10502,
+        "quickId": 10603,
+        "diamondPurchaseId": "11502|11601",
+        "unsealedGunId": 10202,
+        "index": 26
     },
     {
-        "id": 27,
-        "weaId": 10902,
-        "quickId": 11601
+        "id": 10902,
+        "needId": 10703,
+        "quickId": 11601,
+        "diamondPurchaseId": "10202|11502",
+        "unsealedGunId": 10902,
+        "index": 27
     },
     {
-        "id": 28,
-        "weaId": 10802,
-        "quickId": 11502
+        "id": 10802,
+        "needId": 11302,
+        "quickId": 11502,
+        "diamondPurchaseId": "10902|10202",
+        "unsealedGunId": 10802,
+        "index": 28
     },
     {
-        "id": 29,
-        "weaId": 10502,
-        "quickId": 10202
+        "id": 10502,
+        "needId": 10203,
+        "quickId": 10202,
+        "diamondPurchaseId": "10802|10902",
+        "unsealedGunId": 10502,
+        "index": 29
     },
     {
-        "id": 30,
-        "weaId": 10703,
-        "quickId": 10902
+        "id": 10703,
+        "needId": 11102,
+        "quickId": 10902,
+        "diamondPurchaseId": "10502|10802",
+        "unsealedGunId": 10703,
+        "index": 30
     },
     {
-        "id": 31,
-        "weaId": 11302,
-        "quickId": 10802
+        "id": 11302,
+        "needId": 11801,
+        "quickId": 10802,
+        "diamondPurchaseId": "10703|10502",
+        "unsealedGunId": 11302,
+        "index": 31
     },
     {
-        "id": 32,
-        "weaId": 10203,
-        "quickId": 10502
+        "id": 10203,
+        "needId": 10303,
+        "quickId": 10502,
+        "diamondPurchaseId": "11302|10703",
+        "unsealedGunId": 10203,
+        "index": 32
     },
     {
-        "id": 33,
-        "weaId": 11102,
-        "quickId": 10703
+        "id": 11102,
+        "needId": 11002,
+        "quickId": 10703,
+        "diamondPurchaseId": "10203|11302",
+        "unsealedGunId": 11102,
+        "index": 33
     },
     {
-        "id": 34,
-        "weaId": 11801,
-        "quickId": 11302
+        "id": 11801,
+        "needId": 10803,
+        "quickId": 11302,
+        "diamondPurchaseId": "11102|10203",
+        "unsealedGunId": 11801,
+        "index": 34
     },
     {
-        "id": 35,
-        "weaId": 10303,
-        "quickId": 10203
+        "id": 10303,
+        "needId": 11202,
+        "quickId": 10203,
+        "diamondPurchaseId": "11801|11102",
+        "unsealedGunId": 10303,
+        "index": 35
     },
     {
-        "id": 36,
-        "weaId": 11002,
-        "quickId": 11102
+        "id": 11002,
+        "needId": 10403,
+        "quickId": 11102,
+        "diamondPurchaseId": "10303|11801",
+        "unsealedGunId": 11002,
+        "index": 36
     },
     {
-        "id": 37,
-        "weaId": 10803,
-        "quickId": 11801
+        "id": 10803,
+        "needId": 11402,
+        "quickId": 11801,
+        "diamondPurchaseId": "11002|10303",
+        "unsealedGunId": 10803,
+        "index": 37
     },
     {
-        "id": 38,
-        "weaId": 11202,
-        "quickId": 10303
+        "id": 11202,
+        "needId": 11602,
+        "quickId": 10303,
+        "diamondPurchaseId": "10803|11002",
+        "unsealedGunId": 11202,
+        "index": 38
     },
     {
-        "id": 39,
-        "weaId": 10403,
-        "quickId": 11002
+        "id": 10403,
+        "needId": 11901,
+        "quickId": 11002,
+        "diamondPurchaseId": "11202|10803",
+        "unsealedGunId": 10403,
+        "index": 39
     },
     {
-        "id": 40,
-        "weaId": 11402,
-        "quickId": 10803
+        "id": 11402,
+        "needId": 10503,
+        "quickId": 10803,
+        "diamondPurchaseId": "10403|11202",
+        "unsealedGunId": 11402,
+        "index": 40
     },
     {
-        "id": 41,
-        "weaId": 11602,
-        "quickId": 11202
+        "id": 11602,
+        "needId": 11003,
+        "quickId": 11202,
+        "diamondPurchaseId": "11402|10403",
+        "unsealedGunId": 11602,
+        "index": 41
     },
     {
-        "id": 42,
-        "weaId": 11901,
-        "quickId": 10403
+        "id": 11901,
+        "needId": 11702,
+        "quickId": 10403,
+        "diamondPurchaseId": "11602|11402",
+        "unsealedGunId": 11901,
+        "index": 42
     },
     {
-        "id": 43,
-        "weaId": 10503,
-        "quickId": 11402
+        "id": 10503,
+        "needId": 10903,
+        "quickId": 11402,
+        "diamondPurchaseId": "11901|11602",
+        "unsealedGunId": 10503,
+        "index": 43
     },
     {
-        "id": 44,
-        "weaId": 11003,
-        "quickId": 11602
+        "id": 11003,
+        "needId": 11203,
+        "quickId": 11602,
+        "diamondPurchaseId": "10503|11901",
+        "unsealedGunId": 11003,
+        "index": 44
     },
     {
-        "id": 45,
-        "weaId": 11702,
-        "quickId": 11901
+        "id": 11702,
+        "needId": 12001,
+        "quickId": 11901,
+        "diamondPurchaseId": "11003|10503",
+        "unsealedGunId": 11702,
+        "index": 45
     },
     {
-        "id": 46,
-        "weaId": 10903,
-        "quickId": 10503
+        "id": 10903,
+        "needId": 11303,
+        "quickId": 10503,
+        "diamondPurchaseId": "11702|11003",
+        "unsealedGunId": 10903,
+        "index": 46
     },
     {
-        "id": 47,
-        "weaId": 11203,
-        "quickId": 11003
+        "id": 11203,
+        "needId": 11103,
+        "quickId": 11003,
+        "diamondPurchaseId": "10903|11702",
+        "unsealedGunId": 11203,
+        "index": 47
     },
     {
-        "id": 48,
-        "weaId": 12001,
-        "quickId": 11702
-    },
+        "id": 12001,
+        "needId": 11403,
+        "quickId": 11702,
+        "diamondPurchaseId": "11203|10903",
+        "unsealedGunId": 12001,
+        "index": 48
+    },
     {
-        "id": 49,
-        "weaId": 11303,
-        "quickId": 10903
-    },
+        "id": 11303,
+        "needId": 11503,
+        "quickId": 10903,
+        "diamondPurchaseId": "12001|11203",
+        "unsealedGunId": 11303,
+        "index": 49
+    },
     {
-        "id": 50,
-        "weaId": 11103,
-        "quickId": 11203
-    },
+        "id": 11103,
+        "needId": 11603,
+        "quickId": 11203,
+        "diamondPurchaseId": "11303|12001",
+        "unsealedGunId": 11103,
+        "index": 50
+    },
     {
-        "id": 51,
-        "weaId": 11403,
-        "quickId": 12001
-    },
+        "id": 11403,
+        "needId": 12002,
+        "quickId": 12001,
+        "diamondPurchaseId": "11103|11303",
+        "unsealedGunId": 11403,
+        "index": 51
+    },
     {
-        "id": 52,
-        "weaId": 11503,
-        "quickId": 11303
-    },
+        "id": 11503,
+        "needId": 11703,
+        "quickId": 11303,
+        "diamondPurchaseId": "11403|11103",
+        "unsealedGunId": 11503,
+        "index": 52
+    },
     {
-        "id": 53,
-        "weaId": 11603,
-        "quickId": 11103
-    },
+        "id": 11603,
+        "needId": 11902,
+        "quickId": 11103,
+        "diamondPurchaseId": "11503|11403",
+        "unsealedGunId": 11603,
+        "index": 53
+    },
     {
-        "id": 54,
-        "weaId": 12002,
-        "quickId": 11403
-    },
+        "id": 12002,
+        "needId": 11802,
+        "quickId": 11403,
+        "diamondPurchaseId": "11603|11503",
+        "unsealedGunId": 12002,
+        "index": 54
+    },
     {
-        "id": 55,
-        "weaId": 11703,
-        "quickId": 11503
-    },
+        "id": 11703,
+        "needId": 11903,
+        "quickId": 11503,
+        "diamondPurchaseId": "12002|11603",
+        "unsealedGunId": 11703,
+        "index": 55
+    },
     {
-        "id": 56,
-        "weaId": 11902,
-        "quickId": 11603
-    },
+        "id": 11902,
+        "needId": 11803,
+        "quickId": 11603,
+        "diamondPurchaseId": "11703|12002",
+        "unsealedGunId": 11902,
+        "index": 56
+    },
     {
-        "id": 57,
-        "weaId": 11802,
-        "quickId": 12002
-    },
+        "id": 11802,
+        "needId": 12003,
+        "quickId": 12002,
+        "diamondPurchaseId": "11902|11703",
+        "unsealedGunId": 11802,
+        "index": 57
+    },
     {
-        "id": 58,
-        "weaId": 11903,
-        "quickId": 11703
-    },
+        "id": 11903,
+        "needId": 12003,
+        "quickId": 11703,
+        "diamondPurchaseId": "11802|11902",
+        "unsealedGunId": 11903,
+        "index": 58
+    },
     {
-        "id": 59,
-        "weaId": 11803,
-        "quickId": 11902
-    },
+        "id": 11803,
+        "needId": 12003,
+        "quickId": 11902,
+        "diamondPurchaseId": "11903|11802",
+        "unsealedGunId": 11803,
+        "index": 59
+    },
     {
-        "id": 60,
-        "weaId": 12003,
-        "quickId": 11802
+        "id": 12003,
+        "needId": 12003,
+        "quickId": 11802,
+        "diamondPurchaseId": "11803|11903",
+        "unsealedGunId": 12003,
+        "index": 60
     }
 ]

+ 4 - 1
assets/resources/ui/PrepareUI.prefab

@@ -19843,7 +19843,7 @@
       "__id__": 638
     },
     "_children": [],
-    "_active": true,
+    "_active": false,
     "_components": [
       {
         "__id__": 644
@@ -21542,6 +21542,9 @@
     "levelLabel": {
       "__id__": 48
     },
+    "shopButton": {
+      "__id__": 649
+    },
     "quickBuyButton": {
       "__id__": 679
     },

+ 956 - 0
assets/resources/ui/ShopUI.prefab

@@ -0,0 +1,956 @@
+[
+  {
+    "__type__": "cc.Prefab",
+    "_name": "",
+    "_objFlags": 0,
+    "_native": "",
+    "data": {
+      "__id__": 1
+    },
+    "optimizationPolicy": 0,
+    "asyncLoadAssets": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "ShopUI",
+    "_objFlags": 0,
+    "_parent": null,
+    "_children": [
+      {
+        "__id__": 2
+      },
+      {
+        "__id__": 8
+      },
+      {
+        "__id__": 18
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 28
+      },
+      {
+        "__id__": 29
+      },
+      {
+        "__id__": 30
+      }
+    ],
+    "_prefab": {
+      "__id__": 31
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 1073741824,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Background",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 3
+      },
+      {
+        "__id__": 4
+      },
+      {
+        "__id__": 5
+      },
+      {
+        "__id__": 6
+      }
+    ],
+    "_prefab": {
+      "__id__": 7
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 750,
+      "height": 1334
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "72e319bc-562c-4474-b068-4d153e08dc18@f9941"
+    },
+    "_type": 1,
+    "_fillType": 0,
+    "_sizeMode": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.WidgetComponent",
+    "_name": "Background<WidgetComponent>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_alignFlags": 45,
+    "_target": null,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 40,
+    "_originalHeight": 40,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.ButtonComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "clickEvents": [],
+    "_interactable": true,
+    "_transition": 0,
+    "_normalColor": {
+      "__type__": "cc.Color",
+      "r": 214,
+      "g": 214,
+      "b": 214,
+      "a": 255
+    },
+    "_hoverColor": {
+      "__type__": "cc.Color",
+      "r": 211,
+      "g": 211,
+      "b": 211,
+      "a": 255
+    },
+    "_pressColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_disabledColor": {
+      "__type__": "cc.Color",
+      "r": 124,
+      "g": 124,
+      "b": 124,
+      "a": 255
+    },
+    "_normalSprite": null,
+    "_hoverSprite": null,
+    "_pressedSprite": null,
+    "_disabledSprite": null,
+    "_duration": 0.1,
+    "_zoomScale": 1.2,
+    "_target": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "7ewl5XTUZDeqaW5x1vGDWk",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "BackButton",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 9
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 13
+      },
+      {
+        "__id__": 14
+      },
+      {
+        "__id__": 15
+      }
+    ],
+    "_prefab": {
+      "__id__": 17
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": -307.481,
+      "y": 585.126,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Sprite",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 8
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 10
+      },
+      {
+        "__id__": 11
+      }
+    ],
+    "_prefab": {
+      "__id__": 12
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": -2,
+      "y": 3,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 9
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 56,
+      "height": 57
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 9
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "bd3be807-f387-461c-9aae-9051d64fa928@f9941"
+    },
+    "_type": 0,
+    "_fillType": 0,
+    "_sizeMode": 1,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "d8OsgBwg5P6oP6BN46eFlx",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 8
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 108,
+      "height": 110
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 8
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "bc24ff58-f7d3-4f54-8e23-fb3a5e9d8469@f9941"
+    },
+    "_type": 1,
+    "_fillType": 0,
+    "_sizeMode": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.ButtonComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 8
+    },
+    "_enabled": true,
+    "clickEvents": [
+      {
+        "__id__": 16
+      }
+    ],
+    "_interactable": true,
+    "_transition": 2,
+    "_normalColor": {
+      "__type__": "cc.Color",
+      "r": 214,
+      "g": 214,
+      "b": 214,
+      "a": 255
+    },
+    "_hoverColor": {
+      "__type__": "cc.Color",
+      "r": 211,
+      "g": 211,
+      "b": 211,
+      "a": 255
+    },
+    "_pressColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_disabledColor": {
+      "__type__": "cc.Color",
+      "r": 124,
+      "g": 124,
+      "b": 124,
+      "a": 255
+    },
+    "_normalSprite": {
+      "__uuid__": "bc24ff58-f7d3-4f54-8e23-fb3a5e9d8469@f9941"
+    },
+    "_hoverSprite": {
+      "__uuid__": "bc24ff58-f7d3-4f54-8e23-fb3a5e9d8469@f9941"
+    },
+    "_pressedSprite": {
+      "__uuid__": "bc24ff58-f7d3-4f54-8e23-fb3a5e9d8469@f9941"
+    },
+    "_disabledSprite": {
+      "__uuid__": "bc24ff58-f7d3-4f54-8e23-fb3a5e9d8469@f9941"
+    },
+    "_duration": 0.1,
+    "_zoomScale": 1.2,
+    "_target": {
+      "__id__": 8
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.ClickEvent",
+    "target": {
+      "__id__": 1
+    },
+    "component": "",
+    "_componentId": "37fe6LfvF5F0pkrzYdfUpH2",
+    "handler": "BackButtonClick",
+    "customEventData": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "12SvuxLppMDKZMbzT73gGL",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "List",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 19
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 23
+      },
+      {
+        "__id__": 24
+      },
+      {
+        "__id__": 25
+      },
+      {
+        "__id__": 26
+      }
+    ],
+    "_prefab": {
+      "__id__": 27
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 25,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 1073741824,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "ListContent",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 18
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 20
+      },
+      {
+        "__id__": 21
+      }
+    ],
+    "_prefab": {
+      "__id__": 22
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 19
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 750,
+      "height": 984
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.LayoutComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 19
+    },
+    "_enabled": true,
+    "_resizeMode": 1,
+    "_N$layoutType": 2,
+    "_N$padding": 0,
+    "_cellSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 40
+    },
+    "_startAxis": 0,
+    "_paddingLeft": 0,
+    "_paddingRight": 0,
+    "_paddingTop": 0,
+    "_paddingBottom": 0,
+    "_spacingX": 0,
+    "_spacingY": 5,
+    "_verticalDirection": 1,
+    "_horizontalDirection": 0,
+    "_affectedByScale": false,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "478gzZbQdN0IY81ckfTuoY",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 18
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 750,
+      "height": 984
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.ScrollViewComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 18
+    },
+    "_enabled": true,
+    "bounceDuration": 1,
+    "brake": 0.5,
+    "elastic": false,
+    "inertia": true,
+    "horizontal": false,
+    "vertical": true,
+    "cancelInnerEvents": true,
+    "scrollEvents": [],
+    "_content": {
+      "__id__": 19
+    },
+    "_horizontalScrollBar": null,
+    "_verticalScrollBar": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.WidgetComponent",
+    "_name": "List<WidgetComponent>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 18
+    },
+    "_enabled": true,
+    "_alignFlags": 45,
+    "_target": null,
+    "_left": 0,
+    "_right": 0,
+    "_top": 150,
+    "_bottom": 200,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 100,
+    "_originalHeight": 100,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.MaskComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 18
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_type": 0,
+    "_inverted": false,
+    "_segments": 64,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "50JwIp2M9BfrTwY8bBhNLC",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 750,
+      "height": 1334
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.WidgetComponent",
+    "_name": "ShopUI<WidgetComponent>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "_alignFlags": 45,
+    "_target": null,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 100,
+    "_originalHeight": 100,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "37fe6LfvF5F0pkrzYdfUpH2",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "ListItemRenderPrefab": {
+      "__uuid__": "d9ffbd75-c8be-4aaa-aaef-3ccd42b04917"
+    },
+    "ListContext": {
+      "__id__": 21
+    },
+    "List": {
+      "__id__": 24
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "bblbsbKp1B1b/EQeit52L2",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  }
+]

+ 11 - 0
assets/resources/ui/ShopUI.prefab.meta

@@ -0,0 +1,11 @@
+{
+  "ver": "1.0.29",
+  "importer": "prefab",
+  "imported": true,
+  "uuid": "cf1741ad-3fe0-4ef0-9d67-87cf919434e8",
+  "files": [
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {}
+}

+ 2324 - 0
assets/resources/ui/components/ShopListItemRender.prefab

@@ -0,0 +1,2324 @@
+[
+  {
+    "__type__": "cc.Prefab",
+    "_name": "",
+    "_objFlags": 0,
+    "_native": "",
+    "data": {
+      "__id__": 1
+    },
+    "optimizationPolicy": 0,
+    "asyncLoadAssets": false
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "ShopListItemRender",
+    "_objFlags": 0,
+    "_parent": null,
+    "_children": [
+      {
+        "__id__": 2
+      },
+      {
+        "__id__": 7
+      },
+      {
+        "__id__": 12
+      },
+      {
+        "__id__": 17
+      },
+      {
+        "__id__": 25
+      },
+      {
+        "__id__": 29
+      },
+      {
+        "__id__": 43
+      },
+      {
+        "__id__": 57
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 71
+      },
+      {
+        "__id__": 72
+      }
+    ],
+    "_prefab": {
+      "__id__": 73
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 1073741824,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Background",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 3
+      },
+      {
+        "__id__": 4
+      },
+      {
+        "__id__": 5
+      }
+    ],
+    "_prefab": {
+      "__id__": 6
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 750,
+      "height": 200
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "ad575607-a07e-453a-ad61-896cc376e54f@f9941"
+    },
+    "_type": 1,
+    "_fillType": 0,
+    "_sizeMode": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.WidgetComponent",
+    "_name": "Background<WidgetComponent>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 2
+    },
+    "_enabled": true,
+    "_alignFlags": 45,
+    "_target": null,
+    "_left": 0,
+    "_right": 0,
+    "_top": 0,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 750,
+    "_originalHeight": 40,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "02G7OXqRNArbIxZRGQ9yyz",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Background1",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 8
+      },
+      {
+        "__id__": 9
+      },
+      {
+        "__id__": 10
+      }
+    ],
+    "_prefab": {
+      "__id__": 11
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": -253,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 7
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 220,
+      "height": 180
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 7
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "41ca8d43-c744-4018-848e-a0c6b0a2088c@f9941"
+    },
+    "_type": 1,
+    "_fillType": 0,
+    "_sizeMode": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.WidgetComponent",
+    "_name": "Background1<WidgetComponent>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 7
+    },
+    "_enabled": true,
+    "_alignFlags": 13,
+    "_target": null,
+    "_left": 12,
+    "_right": 0,
+    "_top": 10,
+    "_bottom": 10,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 5,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "04X7AmNsxBFLIUJcC5Y3nb",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Icon",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 13
+      },
+      {
+        "__id__": 14
+      },
+      {
+        "__id__": 15
+      }
+    ],
+    "_prefab": {
+      "__id__": 16
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": -253,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 12
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 40,
+      "height": 36
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 12
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "57520716-48c8-4a19-8acf-41c9f8777fb0@f9941"
+    },
+    "_type": 0,
+    "_fillType": 0,
+    "_sizeMode": 1,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.WidgetComponent",
+    "_name": "Icon<WidgetComponent>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 12
+    },
+    "_enabled": true,
+    "_alignFlags": 13,
+    "_target": null,
+    "_left": 102,
+    "_right": 355,
+    "_top": 82,
+    "_bottom": 82,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 40,
+    "_originalHeight": 36,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "a0b2N68GZEeaAvuOwSGIRL",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Level",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 18
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 22
+      },
+      {
+        "__id__": 23
+      }
+    ],
+    "_prefab": {
+      "__id__": 24
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": -333.893,
+      "y": -54.066,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "LevelLabel",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 17
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 19
+      },
+      {
+        "__id__": 20
+      }
+    ],
+    "_prefab": {
+      "__id__": 21
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 0.039,
+      "y": 2.978,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 18
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 22.25,
+      "height": 45.2
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.LabelComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 18
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_useOriginalSize": true,
+    "_string": "15\n",
+    "_horizontalAlign": 1,
+    "_verticalAlign": 1,
+    "_actualFontSize": 20,
+    "_fontSize": 20,
+    "_fontFamily": "Arial",
+    "_lineHeight": 20,
+    "_overflow": 0,
+    "_enableWrapText": false,
+    "_font": null,
+    "_isSystemFontUsed": true,
+    "_isItalic": false,
+    "_isBold": false,
+    "_isUnderline": false,
+    "_cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "210kmiMwROT4EnhGgWsao7",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 17
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 35,
+      "height": 36
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 17
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "bdbd5df1-085a-4551-afeb-2895ade85c53@f9941"
+    },
+    "_type": 0,
+    "_fillType": 0,
+    "_sizeMode": 1,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "adcxKqx9pFmrTHU8vsCQ2l",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "NameLabel",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 26
+      },
+      {
+        "__id__": 27
+      }
+    ],
+    "_prefab": {
+      "__id__": 28
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": -306.326,
+      "y": -54.348,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 25
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 6.66,
+      "height": 50.4
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.LabelComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 25
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_useOriginalSize": true,
+    "_string": "-",
+    "_horizontalAlign": 1,
+    "_verticalAlign": 1,
+    "_actualFontSize": 20,
+    "_fontSize": 20,
+    "_fontFamily": "Arial",
+    "_lineHeight": 40,
+    "_overflow": 0,
+    "_enableWrapText": true,
+    "_font": null,
+    "_isSystemFontUsed": true,
+    "_isItalic": false,
+    "_isBold": false,
+    "_isUnderline": false,
+    "_cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "64B+ZedGhOIrSz+5ugf62T",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "FreeBuyButton",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 30
+      },
+      {
+        "__id__": 34
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 38
+      },
+      {
+        "__id__": 39
+      },
+      {
+        "__id__": 40
+      },
+      {
+        "__id__": 41
+      }
+    ],
+    "_prefab": {
+      "__id__": 42
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 227.5,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Label",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 29
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 31
+      },
+      {
+        "__id__": 32
+      }
+    ],
+    "_prefab": {
+      "__id__": 33
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 22.858,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 30
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 40
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.LabelComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 30
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_useOriginalSize": true,
+    "_string": "10000",
+    "_horizontalAlign": 1,
+    "_verticalAlign": 1,
+    "_actualFontSize": 30,
+    "_fontSize": 30,
+    "_fontFamily": "Arial",
+    "_lineHeight": 40,
+    "_overflow": 1,
+    "_enableWrapText": false,
+    "_font": null,
+    "_isSystemFontUsed": true,
+    "_isItalic": false,
+    "_isBold": false,
+    "_isUnderline": false,
+    "_cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "697tuqKEdFhKbbAu4mErMl",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "goldIcon",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 29
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 35
+      },
+      {
+        "__id__": 36
+      }
+    ],
+    "_prefab": {
+      "__id__": 37
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": -63.496,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 34
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 68,
+      "height": 71
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 34
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "ae0bfbb3-e5a7-46e2-a2b0-aa208f99539b@f9941"
+    },
+    "_type": 0,
+    "_fillType": 0,
+    "_sizeMode": 1,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "5fF4tK1/ZPT7MtiaI+VPDa",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 29
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 271,
+      "height": 120
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 29
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "8e19f7f5-6397-4787-9cf7-9c1cd153edaa@f9941"
+    },
+    "_type": 1,
+    "_fillType": 0,
+    "_sizeMode": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.ButtonComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 29
+    },
+    "_enabled": true,
+    "clickEvents": [],
+    "_interactable": true,
+    "_transition": 2,
+    "_normalColor": {
+      "__type__": "cc.Color",
+      "r": 214,
+      "g": 214,
+      "b": 214,
+      "a": 255
+    },
+    "_hoverColor": {
+      "__type__": "cc.Color",
+      "r": 211,
+      "g": 211,
+      "b": 211,
+      "a": 255
+    },
+    "_pressColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_disabledColor": {
+      "__type__": "cc.Color",
+      "r": 124,
+      "g": 124,
+      "b": 124,
+      "a": 255
+    },
+    "_normalSprite": {
+      "__uuid__": "8e19f7f5-6397-4787-9cf7-9c1cd153edaa@f9941"
+    },
+    "_hoverSprite": {
+      "__uuid__": "8e19f7f5-6397-4787-9cf7-9c1cd153edaa@f9941"
+    },
+    "_pressedSprite": {
+      "__uuid__": "8e19f7f5-6397-4787-9cf7-9c1cd153edaa@f9941"
+    },
+    "_disabledSprite": {
+      "__uuid__": "8e19f7f5-6397-4787-9cf7-9c1cd153edaa@f9941"
+    },
+    "_duration": 0.1,
+    "_zoomScale": 1.2,
+    "_target": {
+      "__id__": 29
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.WidgetComponent",
+    "_name": "GlodBuyButton<WidgetComponent>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 29
+    },
+    "_enabled": true,
+    "_alignFlags": 34,
+    "_target": null,
+    "_left": 0,
+    "_right": 12,
+    "_top": 0,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "58R0BhdKZFTK5nPC1O2AuP",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "DiamondBuyButton",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 44
+      },
+      {
+        "__id__": 48
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 52
+      },
+      {
+        "__id__": 53
+      },
+      {
+        "__id__": 54
+      },
+      {
+        "__id__": 55
+      }
+    ],
+    "_prefab": {
+      "__id__": 56
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 227.5,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Label",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 43
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 45
+      },
+      {
+        "__id__": 46
+      }
+    ],
+    "_prefab": {
+      "__id__": 47
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 22.858,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 44
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 40
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.LabelComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 44
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_useOriginalSize": true,
+    "_string": "10000",
+    "_horizontalAlign": 1,
+    "_verticalAlign": 1,
+    "_actualFontSize": 30,
+    "_fontSize": 30,
+    "_fontFamily": "Arial",
+    "_lineHeight": 40,
+    "_overflow": 1,
+    "_enableWrapText": false,
+    "_font": null,
+    "_isSystemFontUsed": true,
+    "_isItalic": false,
+    "_isBold": false,
+    "_isUnderline": false,
+    "_cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "3a4IbDm2NBI6iWzsg3N2Ri",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "goldIcon",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 43
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 49
+      },
+      {
+        "__id__": 50
+      }
+    ],
+    "_prefab": {
+      "__id__": 51
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": -63.496,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 48
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 55,
+      "height": 45
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 48
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "7865e301-00a2-4137-8aa1-d46f75335e03@f9941"
+    },
+    "_type": 0,
+    "_fillType": 0,
+    "_sizeMode": 1,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "c5bUom82NPipUvgKvKS4nY",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 43
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 271,
+      "height": 120
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 43
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "d68f4e58-069e-476c-8112-05eb7851b775@f9941"
+    },
+    "_type": 1,
+    "_fillType": 0,
+    "_sizeMode": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.ButtonComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 43
+    },
+    "_enabled": true,
+    "clickEvents": [],
+    "_interactable": true,
+    "_transition": 2,
+    "_normalColor": {
+      "__type__": "cc.Color",
+      "r": 214,
+      "g": 214,
+      "b": 214,
+      "a": 255
+    },
+    "_hoverColor": {
+      "__type__": "cc.Color",
+      "r": 211,
+      "g": 211,
+      "b": 211,
+      "a": 255
+    },
+    "_pressColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_disabledColor": {
+      "__type__": "cc.Color",
+      "r": 124,
+      "g": 124,
+      "b": 124,
+      "a": 255
+    },
+    "_normalSprite": {
+      "__uuid__": "d68f4e58-069e-476c-8112-05eb7851b775@f9941"
+    },
+    "_hoverSprite": {
+      "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941"
+    },
+    "_pressedSprite": {
+      "__uuid__": "d68f4e58-069e-476c-8112-05eb7851b775@f9941"
+    },
+    "_disabledSprite": {
+      "__uuid__": "d68f4e58-069e-476c-8112-05eb7851b775@f9941"
+    },
+    "_duration": 0.1,
+    "_zoomScale": 1.2,
+    "_target": {
+      "__id__": 43
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.WidgetComponent",
+    "_name": "GlodBuyButton<WidgetComponent>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 43
+    },
+    "_enabled": true,
+    "_alignFlags": 34,
+    "_target": null,
+    "_left": 0,
+    "_right": 12,
+    "_top": 0,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "0daDt06dVFz72vEpJ0+ipv",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "GlodBuyButton",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 1
+    },
+    "_children": [
+      {
+        "__id__": 58
+      },
+      {
+        "__id__": 62
+      }
+    ],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 66
+      },
+      {
+        "__id__": 67
+      },
+      {
+        "__id__": 68
+      },
+      {
+        "__id__": 69
+      }
+    ],
+    "_prefab": {
+      "__id__": 70
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 227.5,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "Label",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 57
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 59
+      },
+      {
+        "__id__": 60
+      }
+    ],
+    "_prefab": {
+      "__id__": 61
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": 22.858,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 58
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 100,
+      "height": 40
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.LabelComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 58
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_useOriginalSize": true,
+    "_string": "10000",
+    "_horizontalAlign": 1,
+    "_verticalAlign": 1,
+    "_actualFontSize": 30,
+    "_fontSize": 30,
+    "_fontFamily": "Arial",
+    "_lineHeight": 40,
+    "_overflow": 1,
+    "_enableWrapText": false,
+    "_font": null,
+    "_isSystemFontUsed": true,
+    "_isItalic": false,
+    "_isBold": false,
+    "_isUnderline": false,
+    "_cacheMode": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "478X6aVKdMMZfGPwRbyUMQ",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.Node",
+    "_name": "goldIcon",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 57
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [
+      {
+        "__id__": 63
+      },
+      {
+        "__id__": 64
+      }
+    ],
+    "_prefab": {
+      "__id__": 65
+    },
+    "_lpos": {
+      "__type__": "cc.Vec3",
+      "x": -63.496,
+      "y": 0,
+      "z": 0
+    },
+    "_lrot": {
+      "__type__": "cc.Quat",
+      "x": 0,
+      "y": 0,
+      "z": 0,
+      "w": 1
+    },
+    "_lscale": {
+      "__type__": "cc.Vec3",
+      "x": 1,
+      "y": 1,
+      "z": 1
+    },
+    "_layer": 33554432,
+    "_euler": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 62
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 50,
+      "height": 49
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 62
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "0b44fc8c-d664-46d8-bddf-1514caec8e51@f9941"
+    },
+    "_type": 0,
+    "_fillType": 0,
+    "_sizeMode": 1,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "68nRDCUk5A36PkCkI6Q8sd",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 57
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 271,
+      "height": 120
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.SpriteComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 57
+    },
+    "_enabled": true,
+    "_srcBlendFactor": 2,
+    "_dstBlendFactor": 4,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_sharedMaterial": null,
+    "_spriteFrame": {
+      "__uuid__": "d68f4e58-069e-476c-8112-05eb7851b775@f9941"
+    },
+    "_type": 1,
+    "_fillType": 0,
+    "_sizeMode": 0,
+    "_fillCenter": {
+      "__type__": "cc.Vec2",
+      "x": 0,
+      "y": 0
+    },
+    "_fillStart": 0,
+    "_fillRange": 0,
+    "_isTrimmedMode": true,
+    "_useGrayscale": false,
+    "_atlas": null,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.ButtonComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 57
+    },
+    "_enabled": true,
+    "clickEvents": [],
+    "_interactable": true,
+    "_transition": 2,
+    "_normalColor": {
+      "__type__": "cc.Color",
+      "r": 214,
+      "g": 214,
+      "b": 214,
+      "a": 255
+    },
+    "_hoverColor": {
+      "__type__": "cc.Color",
+      "r": 211,
+      "g": 211,
+      "b": 211,
+      "a": 255
+    },
+    "_pressColor": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_disabledColor": {
+      "__type__": "cc.Color",
+      "r": 124,
+      "g": 124,
+      "b": 124,
+      "a": 255
+    },
+    "_normalSprite": {
+      "__uuid__": "d68f4e58-069e-476c-8112-05eb7851b775@f9941"
+    },
+    "_hoverSprite": {
+      "__uuid__": "20835ba4-6145-4fbc-a58a-051ce700aa3e@f9941"
+    },
+    "_pressedSprite": {
+      "__uuid__": "d68f4e58-069e-476c-8112-05eb7851b775@f9941"
+    },
+    "_disabledSprite": {
+      "__uuid__": "d68f4e58-069e-476c-8112-05eb7851b775@f9941"
+    },
+    "_duration": 0.1,
+    "_zoomScale": 1.2,
+    "_target": {
+      "__id__": 57
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "cc.WidgetComponent",
+    "_name": "GlodBuyButton<WidgetComponent>",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 57
+    },
+    "_enabled": true,
+    "_alignFlags": 34,
+    "_target": null,
+    "_left": 0,
+    "_right": 12,
+    "_top": 0,
+    "_bottom": 0,
+    "_horizontalCenter": 0,
+    "_verticalCenter": 0,
+    "_isAbsLeft": true,
+    "_isAbsRight": true,
+    "_isAbsTop": true,
+    "_isAbsBottom": true,
+    "_isAbsHorizontalCenter": true,
+    "_isAbsVerticalCenter": true,
+    "_originalWidth": 0,
+    "_originalHeight": 0,
+    "_alignMode": 2,
+    "_lockFlags": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "2erSBtQ8tC8ZufoxnxTTu6",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  },
+  {
+    "__type__": "cc.UITransformComponent",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "_priority": 0,
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 750,
+      "height": 200
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_id": ""
+  },
+  {
+    "__type__": "28650QIQf9OHqY5dQxD7SPy",
+    "_name": "",
+    "_objFlags": 0,
+    "node": {
+      "__id__": 1
+    },
+    "_enabled": true,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__id__": 0
+    },
+    "fileId": "789g9apWZHMoyXLqIfrZLd",
+    "sync": false,
+    "_synced": {
+      "default": false,
+      "serializable": false
+    }
+  }
+]

+ 11 - 0
assets/resources/ui/components/ShopListItemRender.prefab.meta

@@ -0,0 +1,11 @@
+{
+  "ver": "1.0.29",
+  "importer": "prefab",
+  "imported": true,
+  "uuid": "d9ffbd75-c8be-4aaa-aaef-3ccd42b04917",
+  "files": [
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {}
+}

+ 26 - 3
assets/scripts/engines/notices/NoticeManager.ts

@@ -27,18 +27,27 @@ export class NoticeManager
         let helfH:number=h/2;
         for (let yIndex = 0; yIndex < 3; yIndex++) {
             for (let xIndex = 0; xIndex < 3; xIndex++) {
-               pos=new Vec3(xIndex*w+helfW,yIndex*h+h,0);
+               pos=new Vec3(xIndex*w+helfW,yIndex*h,0);
                this.startPos.push(pos);
             }
         }
     }
 
-    public static ShowPrompt(data:any,type:string="Text",moveType:number=1,posType:number=4,time:number=1000,dis:number=100){
+    /**
+     * 显示提示
+     * @param data 提示内容
+     * @param startPos 开始位置
+     * @param type 类型
+     * @param moveType 移动类型
+     * @param time 时间
+     * @param dis  距离
+     */
+    public static ShowPromptByPos(data:any,startPos:Vec3,type:string="Text",moveType:number=1,time:number=1000,dis:number=100):void{
         let viewScript:NoticeViewScript=this.Create(type);
         viewScript.type=type;
         viewScript.data=data;
         viewScript.moveType=moveType;
-        viewScript.startPos=this.startPos[posType];
+        viewScript.startPos=startPos;
         viewScript.time=time;
         viewScript.dis=dis;
         viewScript.StartMove(data);
@@ -47,6 +56,20 @@ export class NoticeManager
         this.root.addChild(viewScript.node);
     }
 
+    /**
+     * 显示提示
+     * @param data          提示内容
+     * @param posType       位置类型789,456,123
+     * @param type          类型
+     * @param moveType      移动类型
+     * @param time          持续时间
+     * @param dis           移动距离
+     */
+    public static ShowPrompt(data:any,posType:number=4,type:string="Text",moveType:number=1,time:number=1000,dis:number=100):void{
+        let startPos:Vec3=this.startPos[posType];
+        this.ShowPromptByPos(data,startPos,type,moveType,time,dis);
+    }
+
 
     public static Create(type:string):NoticeViewScript{
         let list:NoticeViewScript[];

+ 1 - 1
assets/scripts/engines/notices/NoticeViewScript.ts

@@ -63,7 +63,7 @@ export class NoticeViewScript extends Component {
         let disX:number=this.endPos.x-this.startPos.x;
         let disY:number=this.endPos.y-this.startPos.y;
         let value:number=passTime/this.time;
-        this.node.setPosition(this.startPos.x+disX*value,this.startPos.y*disY*value,0);
+        this.node.setPosition(this.startPos.x+disX*value,this.startPos.y+disY*value,0);
         if(passTime>this.time){
             //结束
             NoticeManager.recycle(this);

+ 28 - 0
assets/scripts/engines/utils/NodeUtils.ts

@@ -0,0 +1,28 @@
+import { Node, Size, Vec2, Vec3 } from "cc";
+
+
+
+
+export default class NodeUtils
+{
+    /**
+     * 获取节点全局坐标
+     * @param node 
+     * @param out 
+     */
+    public static GetNodePos(node:Node,out:{x:number,y:number}):void{
+        let nodePos:Vec3=new Vec3();
+        let parentPos:Vec3=new Vec3();
+        let anchorPoint:Vec2=new Vec2();
+        node.getAnchorPoint(anchorPoint);
+        let nodeSize:Size=node.getContentSize();
+        while(node){
+            node.getPosition(parentPos);
+            nodePos.x+=parentPos.x;
+            nodePos.y+=parentPos.y;
+            node=node.parent;
+        }
+        out.x=nodePos.x-anchorPoint.x*nodeSize.width;
+        out.y=nodePos.y-anchorPoint.y*nodeSize.height;
+    }
+}

+ 15 - 0
assets/scripts/engines/utils/NodeUtils.ts.meta

@@ -0,0 +1,15 @@
+{
+  "ver": "2.0.14",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "1f80ace5-1923-4850-8bd6-03a56dd2d712",
+  "files": [
+    ".js",
+    ".trans"
+  ],
+  "subMetas": {},
+  "userData": {
+    "importAsPlugin": false,
+    "moduleId": "project:///assets/scripts/engines/utils/NodeUtils.js"
+  }
+}

+ 12 - 7
assets/scripts/games/models/GameConfigManager.ts

@@ -36,6 +36,11 @@ export default class GameConfigManager
      */
     private static ShopMap:Map<number,any>=new Map<number,any>();
 
+    /**
+     * 商城列表
+     */
+    public static ShopList:any[]=[];
+
     /**
      * 全局配置
      */
@@ -139,6 +144,7 @@ export default class GameConfigManager
         let list:any=jsonAsset.json;
         list.forEach(element => {
             this.ShopMap.set(element.id,element);
+            this.ShopList.push(element);
         });
     }
 
@@ -147,9 +153,8 @@ export default class GameConfigManager
      * @param weaponId 
      */
     public static GetShopConfig(weaponId:number):any{
-        let weaponConfig:any=this.GetWeaponConfig(weaponId);
-        if(this.ShopMap.has(weaponConfig.level)){
-            return this.ShopMap.get(weaponConfig.level);
+        if(this.ShopMap.has(weaponId)){
+            return this.ShopMap.get(weaponId);
         }
         return null;
     }
@@ -159,11 +164,11 @@ export default class GameConfigManager
      * @param weaponId 
      */
     public static GetQuickBuyWeaponId(weaponId:number):number{
-        let shopConfig:any=this.GetShopConfig(weaponId);
-        if(shopConfig==null){
-            throw new Error("找不到相关商城配置!");
+        if(this.ShopMap.has(weaponId)==false){
+            throw new Error("找不到快速购买配置:"+weaponId);
         }
-        return shopConfig.quickId;
+        let config:any=this.ShopMap.get(weaponId);
+        return config.quickId;
     }
 
     /**

+ 19 - 16
assets/scripts/games/models/GameModel.ts

@@ -2,6 +2,7 @@ import { _decorator, Component, Node, Prefab, director, find } from 'cc';
 import { EventDispatcher } from '../../engines/events/EventDispatcher';
 import { DataModel } from '../../engines/models/DataModel';
 import { DataModelEventType } from '../../engines/models/DataModelEventType';
+import { NoticeManager } from '../../engines/notices/NoticeManager';
 import GameConfigManager from './GameConfigManager';
 import { GamePropertys } from './GamePropertys';
 import { WeaponCell } from './weapons/WeaponCell';
@@ -47,30 +48,28 @@ export class GameModel extends DataModel{
      */
     CheckEarnings():void{
         let currentTime:number=director.getCurrentTime();
-        if(currentTime-this.lastTime<this.earningsInterval){
+        if(currentTime-this.lastTime<1000){
             return;
         }
         this.lastTime=currentTime;
 
         let earningsIntervarS:number=(this.earningsInterval/1000);
         let fullEarnings:number=0;
-        let weaponConfig:any;
         this.__weaponCells.forEach(weaponCell => {
             if(weaponCell.weaponId>=0){
-                weaponConfig=GameConfigManager.GetWeaponConfig(weaponCell.weaponId);
-                if(currentTime-weaponCell.lastOutputTime>this.earningsInterval){
-                    weaponCell.lastOutputTime=currentTime;
-                    fullEarnings+=weaponConfig.earnings;
-                }
+                // weaponConfig=GameConfigManager.GetWeaponConfig(weaponCell.weaponId);
+                // if(currentTime-weaponCell.lastOutputTime>this.earningsInterval){
+                    // weaponCell.lastOutputTime=currentTime;
+                    fullEarnings+=weaponCell.weaponConfig.earnings;
+                // }
             }
-            
         });
         if(this.__currentWeaponCell.weaponId>=0){
-            weaponConfig=GameConfigManager.GetWeaponConfig(this.__currentWeaponCell.weaponId);
-            if(currentTime-this.__currentWeaponCell.lastOutputTime>this.earningsInterval){
-                this.__currentWeaponCell.lastOutputTime=currentTime;
-                fullEarnings+=weaponConfig.earnings;
-            }
+            // weaponConfig=GameConfigManager.GetWeaponConfig(this.__currentWeaponCell.weaponId);
+            // if(currentTime-this.__currentWeaponCell.lastOutputTime>this.earningsInterval){
+                // this.__currentWeaponCell.lastOutputTime=currentTime;
+                fullEarnings+=this.__currentWeaponCell.weaponConfig.earnings;
+            // }
         }
         if(fullEarnings>0){
             console.log("产出金币:"+fullEarnings);
@@ -230,7 +229,7 @@ export class GameModel extends DataModel{
         if(buyCount<=0){
             buyCount=1;
         }
-        return price*coefficient/buyCount;
+        return Math.floor(price*Math.pow(coefficient,buyCount));
     }
 
     /**
@@ -251,13 +250,13 @@ export class GameModel extends DataModel{
     public QuickBuy():void{
         let price:number=this.GetQuickBuyPrice();
         if(this.gold<price){
-            console.log("金币不足,不能购买武器!");
+            NoticeManager.ShowPrompt("金币不足,不能购买武器!");
             return;
         }
         //找到空槽位
         let weaponCell:WeaponCell=this.FindWeaponEmptyCell();
         if(weaponCell==null){
-            console.log("没有空槽位了!");
+            NoticeManager.ShowPrompt("没有空槽位了!");
             return;
         }
         //扣钱
@@ -269,8 +268,12 @@ export class GameModel extends DataModel{
         this.gold=currentGold;
         //记录购买次数
         let weaponId:number=this.CurrentQuickBuyWeaponId;
+        let weaponConfig:any=GameConfigManager.GetWeaponConfig(weaponId);
         let buyCount:number=this.GetBuyCount(weaponId);
         buyCount++;
+        if(buyCount>weaponConfig.frequencyLimit){
+            buyCount=weaponConfig.frequencyLimit;
+        }
         this.__buyHistory.set(weaponId,buyCount);
         //发货
         this.AddWeapon(weaponCell.cellId,this.CurrentQuickBuyWeaponId);

+ 10 - 0
assets/scripts/games/models/weapons/WeaponCell.ts

@@ -18,4 +18,14 @@ export class WeaponCell{
      * 上次产出的时间
      */
     public lastOutputTime:number=0;
+
+    /**
+     * 武器配置
+     */
+    public get weaponConfig():any{
+        if(this.weaponId<0){
+            return null;
+        }
+        return GameConfigManager.GetWeaponConfig(this.weaponId);
+    }
 }

+ 6 - 0
assets/scripts/games/ui/UIConst.ts

@@ -19,10 +19,16 @@ export class UIConst extends Component {
      */
     public static GAME_OVER_UI:number=2;
 
+    /**
+     * 商城界面
+     */
+    public static SHOP_UI:number=3;
+    
     //注册所有游戏UI
     static RegisterGUI():void{
         GUIManager.single.RegisterGUI(this.PREPARE_UI,"ui/PrepareUI");
         GUIManager.single.RegisterGUI(this.FIGHTING_UI,"ui/FightingUI");
         GUIManager.single.RegisterGUI(this.GAME_OVER_UI,"ui/GameOverUI");
+        GUIManager.single.RegisterGUI(this.SHOP_UI,"ui/ShopUI");
     }
 }

+ 18 - 3
assets/scripts/games/ui/prepares/PrepareMediator.ts

@@ -1,4 +1,5 @@
 import { ButtonComponent, Color, find, instantiate, LabelComponent, LayoutComponent, loader, ModelComponent, Node, Prefab, Quat, SpriteComponent, SpriteFrame, systemEvent, SystemEventType, Touch, Vec2, view, _decorator } from 'cc';
+import { GUIManager } from '../../../engines/gui/GUIManager';
 import { GUIMediator } from '../../../engines/gui/GUIMediator';
 import { DataModelEventType } from '../../../engines/models/DataModelEventType';
 import { NoticeManager } from '../../../engines/notices/NoticeManager';
@@ -7,6 +8,7 @@ import GameConfigManager from '../../models/GameConfigManager';
 import { GameModel } from '../../models/GameModel';
 import { GamePropertys } from '../../models/GamePropertys';
 import { WeaponCell } from '../../models/weapons/WeaponCell';
+import { UIConst } from '../UIConst';
 import { WeaponCellListView } from './WeaponCellListView';
 import { WeaponCellScript } from './WeaponCellScript';
 const { ccclass, property } = _decorator;
@@ -39,6 +41,13 @@ export class PrepareMediator extends GUIMediator {
     })
     levelLabel:LabelComponent=null;
 
+    /**
+     * 商城按钮
+     */
+    @property({
+        type:ButtonComponent
+    })
+    shopButton:ButtonComponent=null;
 
     /**
      * 快捷购买武器按钮
@@ -168,7 +177,8 @@ export class PrepareMediator extends GUIMediator {
 
         GameModel.single.AddEvent(DataModelEventType.PROPERTY_CHANGED,this,this.GameModelPropertyChanged,0);
 
-        this.quickBuyButton.node.on(ButtonComponent.EventType.CLICK,this.QickBuyButtonClick,this);
+        this.quickBuyButton.node.on(ButtonComponent.EventType.CLICK,this.QickBuyButtonClickHandler,this);
+        this.shopButton.node.on(ButtonComponent.EventType.CLICK,this.ShopButtonClickHandler,this);
     }
 
     private RemoveEvents():void{
@@ -177,7 +187,7 @@ export class PrepareMediator extends GUIMediator {
         this.equipWeaponNode.off(SystemEventType.TOUCH_END,this.TouchEndHandler,this);
         GameModel.single.RemoveEvent(DataModelEventType.PROPERTY_CHANGED,this,this.GameModelPropertyChanged);
 
-        this.quickBuyButton.node.on(ButtonComponent.EventType.CLICK,this.QickBuyButtonClick,this);
+        this.quickBuyButton.node.on(ButtonComponent.EventType.CLICK,this.QickBuyButtonClickHandler,this);
     }
 
     private GameModelPropertyChanged(key:string):void{
@@ -245,7 +255,7 @@ export class PrepareMediator extends GUIMediator {
     /**
      * 购买武器
      */
-    private QickBuyButtonClick():void{
+    private QickBuyButtonClickHandler():void{
         if(GameModel.single.FindWeaponEmptyCell()==null){
             NoticeManager.ShowPrompt("没有武器槽位了!");
             return;
@@ -260,6 +270,11 @@ export class PrepareMediator extends GUIMediator {
         GameModel.single.QuickBuy();
     }
 
+    private ShopButtonClickHandler():void{
+        GUIManager.single.Show(UIConst.SHOP_UI);
+        this.HideSelf();
+    }
+
     private startRotation:Quat=new Quat();
     private currentRotation:Quat=new Quat();
     private startPoint:Vec2=new Vec2();

+ 18 - 4
assets/scripts/games/ui/prepares/WeaponCellScript.ts

@@ -1,4 +1,6 @@
-import { Component, director, find, LabelComponent, loader, Node, SpriteComponent, SpriteFrame, systemEvent, SystemEventType, Touch, _decorator } from 'cc';
+import { Component, director, find, LabelComponent, loader, Node, SpriteComponent, SpriteFrame, systemEvent, SystemEventType, Touch, Vec2, Vec3, _decorator } from 'cc';
+import { NoticeManager } from '../../../engines/notices/NoticeManager';
+import NodeUtils from '../../../engines/utils/NodeUtils';
 import GameConfigManager from '../../models/GameConfigManager';
 import { GameModel } from '../../models/GameModel';
 import { WeaponCell } from '../../models/weapons/WeaponCell';
@@ -155,9 +157,21 @@ export class WeaponCellScript extends Component {
         }
     }
 
-    // update (deltaTime: number) {
-        
-    // }
+    update (deltaTime: number) {
+        if(this.weaponCell.weaponId<0){
+            return;
+        }
+        let currentTime:number=director.getCurrentTime();
+        let IntervalTime:number=GameModel.single.earningsInterval;
+        let IntervalTimeS:number=IntervalTime/1000;
+        if(currentTime-this.weaponCell.lastOutputTime>IntervalTime){
+            let startPos:Vec3=new Vec3();
+            NodeUtils.GetNodePos(this.node,startPos);
+            startPos.x+=this.node.width/2;
+            NoticeManager.ShowPromptByPos("金币:+"+(this.weaponCell.weaponConfig.earnings* IntervalTimeS),startPos);
+            this.weaponCell.lastOutputTime=currentTime;
+        }
+    }
 
     destroy():void{
         super.destroy();

+ 9 - 0
assets/scripts/games/ui/shops.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "0.0.1",
+  "importer": "*",
+  "imported": true,
+  "uuid": "7bf95136-3159-4abb-b81e-7c4283d43798",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 30 - 0
assets/scripts/games/ui/shops/ShopItemRenderScript.ts

@@ -0,0 +1,30 @@
+import { _decorator, Component, Node } from 'cc';
+const { ccclass, property } = _decorator;
+
+@ccclass('ShopItemRenderScript')
+export class ShopItemRenderScript extends Component {
+    /* class member could be defined like this */
+    // dummy = '';
+
+    /* use `property` decorator if your want the member to be serializable */
+    // @property
+    // serializableDummy = 0;
+    
+    private data:any;
+
+    start () {
+        // Your initialization goes here.
+    }
+
+    UpdateItemRender(data:any):void{
+        this.data=data;
+    }
+
+    private RefreshItem():void{
+
+    }
+
+    // update (deltaTime: number) {
+    //     // Your update function goes here.
+    // }
+}

+ 15 - 0
assets/scripts/games/ui/shops/ShopItemRenderScript.ts.meta

@@ -0,0 +1,15 @@
+{
+  "ver": "2.0.14",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "28650408-41ff-4e1e-a639-750c43ed23f2",
+  "files": [
+    ".js",
+    ".trans"
+  ],
+  "subMetas": {},
+  "userData": {
+    "importAsPlugin": false,
+    "moduleId": "project:///assets/scripts/games/ui/shops/ShopItemRenderScript.js"
+  }
+}

+ 135 - 0
assets/scripts/games/ui/shops/ShopMediator.ts

@@ -0,0 +1,135 @@
+import { _decorator, Component, Node, Prefab, LayoutComponent, instantiate, ScrollViewComponent } from 'cc';
+import { GUIManager } from '../../../engines/gui/GUIManager';
+import { GUIMediator } from '../../../engines/gui/GUIMediator';
+import GameConfigManager from '../../models/GameConfigManager';
+import { GameModel } from '../../models/GameModel';
+import { UIConst } from '../UIConst';
+import { ShopItemRenderScript } from './ShopItemRenderScript';
+const { ccclass, property } = _decorator;
+
+@ccclass('ShopMediator')
+export class ShopMediator extends GUIMediator {
+
+    @property({
+        type:Prefab
+    })
+    ListItemRenderPrefab:Prefab=null;
+
+
+    @property({
+        type:LayoutComponent
+    })
+    ListContext:LayoutComponent=null;
+
+    @property({
+        type:ScrollViewComponent
+    })
+    List:ScrollViewComponent=null;
+
+
+    OnShow(data?:any):void{
+        super.OnShow(data);
+        this.RefreshList(true);
+        this.AddEvent();
+    }
+
+    OnHide():void{
+        this.RemoveEvent();
+    }
+
+    /**
+     * 返回按钮点击
+     */
+    public BackButtonClick():void{
+        GUIManager.single.Show(UIConst.PREPARE_UI);
+        this.HideSelf();
+    }
+
+    private AddEvent():void{
+
+    }
+
+    private RemoveEvent():void{
+
+    }
+
+    private RefreshList(srollToZ:boolean):void{
+        let itemView:Node;
+        let dataList:any[]=this.GetListData();
+        if(dataList.length!=this.ListContext.node.children.length){
+            if(dataList.length<this.ListContext.node.children.length){
+                //删除多余的
+                while(dataList.length<this.ListContext.node.children.length){
+                    this.ListContext.node.removeChild(this.ListContext.node.children[0]);
+                }
+            }else{
+                //添加缺少的
+                while(dataList.length>this.ListContext.node.children.length){
+                    itemView=instantiate(this.ListItemRenderPrefab);
+                    this.ListContext.node.addChild(itemView);
+                }
+            }
+        }
+        let itemScript:ShopItemRenderScript;
+        let count:number=dataList.length;
+        for (let index = 0; index < count; index++) {
+            itemView=this.ListContext.node.children[index];
+            itemScript=itemView.getComponent(ShopItemRenderScript);
+            if(itemScript==null){
+                throw new Error("商城列表项未挂载ShopItemRenderScript脚本!");
+            }
+            itemScript.UpdateItemRender(dataList[index]);
+        }
+        if(srollToZ){
+            this.List.scrollToTop(0.1);
+        }
+    }
+
+    /**
+     * 根据当前合成过的最大枪来计算列表数据
+     */
+    private GetListData():any[]{
+        let result:any[]=[];
+        let config:any=GameConfigManager.GetShopConfig(GameModel.single.synthesisMaxWeaponId);
+        let weaponConfig:any;
+        //解锁线
+        let unlockLevel:number;
+        if(config.unsealedGunId!=undefined){
+            weaponConfig=GameConfigManager.GetWeaponConfig(config.unsealedGunId);
+            unlockLevel=weaponConfig.level;
+        }else{
+            unlockLevel=-1;
+        }
+        let shopList:any[]=GameConfigManager.ShopList;
+        let itemData:any;
+        shopList.forEach(element => {
+            weaponConfig=GameConfigManager.GetWeaponConfig(element.id);
+            itemData={
+                id:element.id,
+                index:element.index
+            }
+            if(config.diamondPurchaseId==undefined||config.diamondPurchaseId.indexOf(element.id)<0){
+                itemData.buyType=0;
+            }else{
+                itemData.buyType=1;
+            }
+            if(unlockLevel<0){
+                itemData.state=1;
+            }else if(weaponConfig.level>=unlockLevel){
+                itemData.state=1;
+            }else{
+                itemData.state=0;
+            }
+            result.push(itemData);
+        });
+        return result;
+    }
+
+    start () {
+        // Your initialization goes here.
+    }
+
+    // update (deltaTime: number) {
+    //     // Your update function goes here.
+    // }
+}

+ 15 - 0
assets/scripts/games/ui/shops/ShopMediator.ts.meta

@@ -0,0 +1,15 @@
+{
+  "ver": "2.0.14",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "37fe62df-bc5e-45d2-992b-cd875f5291f6",
+  "files": [
+    ".js",
+    ".trans"
+  ],
+  "subMetas": {},
+  "userData": {
+    "importAsPlugin": false,
+    "moduleId": "project:///assets/scripts/games/ui/shops/ShopMediator.js"
+  }
+}