Add prototype gameplay loop with character/battlefield assets and server game APIs.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
udx
2026-10-20 18:50:00 +08:00
co-authored by Cursor
parent 79369e4473
commit 6c64210331
833 changed files with 998079 additions and 1042 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+997
View File
@@ -0,0 +1,997 @@
{
"schemaVersion": 1,
"prefabName": "UI_PrototypeBattle",
"prefabPath": "Assets/Bundles/UI/Prefab/UI_PrototypeBattle.prefab",
"description": "G0 玩法原型 / Candy。JSON→Prefab;PrototypeFlow 绑定节点并更新表现,不运行时拼接业务骨架。",
"canvas": {
"canvasScaler": {
"referenceResolution": [
1080,
1920
],
"matchWidthOrHeight": 0
}
},
"assets": {
"sprites": {
"btn_primary_disabled": "Assets/Bundles/UI/Texture/Common/btn_primary_disabled.png",
"btn_primary_normal": "Assets/Bundles/UI/Texture/Common/btn_primary_normal.png",
"btn_primary_pressed": "Assets/Bundles/UI/Texture/Common/btn_primary_pressed.png",
"btn_secondary_normal": "Assets/Bundles/UI/Texture/Common/btn_secondary_normal.png",
"btn_secondary_pressed": "Assets/Bundles/UI/Texture/Common/btn_secondary_pressed.png",
"ui_panel_content": "Assets/Bundles/UI/Texture/Common/ui_panel_content.png",
"ui_panel_popup": "Assets/Bundles/UI/Texture/Common/ui_panel_popup.png"
}
},
"nodes": [
{
"name": "UI_PrototypeBattle",
"parent": null,
"active": true,
"rect": {
"anchorMin": [
0,
0
],
"anchorMax": [
1,
1
],
"offsetMin": [
0,
0
],
"offsetMax": [
0,
0
]
},
"components": [
{
"type": "Canvas",
"sortingOrder": 300
},
{
"type": "CanvasScaler",
"referenceResolution": [
1080,
1920
],
"matchWidthOrHeight": 0
},
{
"type": "GraphicRaycaster"
}
]
},
{
"name": "Top",
"parent": "UI_PrototypeBattle",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
32,
-48
],
"sizeDelta": [
1016,
246
]
},
"components": [
{
"type": "Image",
"sprite": "ui_panel_content",
"imageType": "Sliced",
"color": "#FFFFFF",
"raycastTarget": false,
"preserveAspect": false
}
]
},
{
"name": "Txt_BattleTitle",
"parent": "Top",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
30,
-24
],
"sizeDelta": [
740,
62
]
},
"components": [
{
"type": "TextMeshProUGUI",
"text": "绿野初程 · 营地防守",
"fontSize": 40,
"color": "#5A4632",
"alignment": "Left",
"raycastTarget": false
}
]
},
{
"name": "Txt_BattleInfo",
"parent": "Top",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
30,
-108
],
"sizeDelta": [
956,
98
]
},
"components": [
{
"type": "TextMeshProUGUI",
"text": "第 1 波 / 3\n防线 10 / 10",
"fontSize": 32,
"color": "#5A4632",
"alignment": "Left",
"raycastTarget": false
}
]
},
{
"name": "Btn_Abandon",
"parent": "UI_PrototypeBattle",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
822,
-76
],
"sizeDelta": [
188,
84
]
},
"components": [
{
"type": "Image",
"sprite": "btn_secondary_normal",
"imageType": "Sliced",
"raycastTarget": true
},
{
"type": "Button",
"transition": "SpriteSwap",
"spritePressed": "btn_secondary_pressed",
"spriteDisabled": "btn_primary_disabled",
"onClick": "Prototype.Abandon"
}
]
},
{
"name": "Txt_Abandon",
"parent": "Btn_Abandon",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
12,
-6
],
"sizeDelta": [
164,
72
]
},
"components": [
{
"type": "TextMeshProUGUI",
"text": "离开",
"fontSize": 32,
"color": "#FFFFFF",
"alignment": "Center",
"raycastTarget": false
},
{
"type": "Outline",
"effectColor": "#102033CC",
"effectDistance": [
1.2,
-1.2
]
}
]
},
{
"name": "Bottom",
"parent": "UI_PrototypeBattle",
"active": true,
"rect": {
"anchorMin": [
0.5,
0
],
"anchorMax": [
0.5,
0
],
"pivot": [
0.5,
0
],
"anchoredPosition": [
0,
64
],
"sizeDelta": [
1016,
414
]
},
"components": [
{
"type": "Image",
"sprite": "ui_panel_content",
"imageType": "Sliced",
"raycastTarget": false
}
]
},
{
"name": "Txt_Party",
"parent": "Bottom",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
30,
-18
],
"sizeDelta": [
956,
220
]
},
"components": [
{
"type": "TextMeshProUGUI",
"text": "伙伴状态",
"fontSize": 25,
"color": "#5A4632",
"alignment": "Left",
"raycastTarget": false
}
]
},
{
"name": "Btn_Pause",
"parent": "Bottom",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
30,
-264
],
"sizeDelta": [
450,
110
]
},
"components": [
{
"type": "Image",
"sprite": "btn_secondary_normal",
"imageType": "Sliced",
"raycastTarget": true
},
{
"type": "Button",
"transition": "SpriteSwap",
"spritePressed": "btn_secondary_pressed",
"spriteDisabled": "btn_primary_disabled",
"onClick": "Prototype.Pause"
}
]
},
{
"name": "Txt_Pause",
"parent": "Btn_Pause",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
12,
-6
],
"sizeDelta": [
426,
98
]
},
"components": [
{
"type": "TextMeshProUGUI",
"text": "暂停",
"fontSize": 32,
"color": "#FFFFFF",
"alignment": "Center",
"raycastTarget": false
},
{
"type": "Outline",
"effectColor": "#102033CC",
"effectDistance": [
1.2,
-1.2
]
}
]
},
{
"name": "Btn_Speed",
"parent": "Bottom",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
520,
-264
],
"sizeDelta": [
466,
110
]
},
"components": [
{
"type": "Image",
"sprite": "btn_primary_normal",
"imageType": "Sliced",
"raycastTarget": true
},
{
"type": "Button",
"transition": "SpriteSwap",
"spritePressed": "btn_primary_pressed",
"spriteDisabled": "btn_primary_disabled",
"onClick": "Prototype.Speed"
}
]
},
{
"name": "Txt_Speed",
"parent": "Btn_Speed",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
12,
-6
],
"sizeDelta": [
442,
98
]
},
"components": [
{
"type": "TextMeshProUGUI",
"text": "速度 ×1",
"fontSize": 32,
"color": "#FFFFFF",
"alignment": "Center",
"raycastTarget": false
},
{
"type": "Outline",
"effectColor": "#102033CC",
"effectDistance": [
1.2,
-1.2
]
}
]
},
{
"name": "Result",
"parent": "UI_PrototypeBattle",
"active": false,
"rect": {
"anchorMin": [
0,
0
],
"anchorMax": [
1,
1
],
"offsetMin": [
0,
0
],
"offsetMax": [
0,
0
]
},
"components": [
{
"type": "Image",
"color": "#0B1724CC",
"raycastTarget": true
}
]
},
{
"name": "ResultPanel",
"parent": "Result",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
100,
-440
],
"sizeDelta": [
880,
1010
]
},
"components": [
{
"type": "Image",
"sprite": "ui_panel_popup",
"imageType": "Sliced",
"color": "#FFFFFF",
"raycastTarget": false,
"preserveAspect": false
}
]
},
{
"name": "Txt_ResultTitle",
"parent": "ResultPanel",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
40,
-40
],
"sizeDelta": [
800,
82
]
},
"components": [
{
"type": "TextMeshProUGUI",
"text": "守护成功",
"fontSize": 52,
"color": "#5A4632",
"alignment": "Center",
"raycastTarget": false
}
]
},
{
"name": "Txt_ResultInfo",
"parent": "ResultPanel",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
50,
-150
],
"sizeDelta": [
780,
180
]
},
"components": [
{
"type": "TextMeshProUGUI",
"text": "奖励",
"fontSize": 30,
"color": "#5A4632",
"alignment": "Center",
"raycastTarget": false
}
]
},
{
"name": "Txt_BattleReport",
"parent": "ResultPanel",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
42,
-350
],
"sizeDelta": [
796,
290
]
},
"components": [
{
"type": "TextMeshProUGUI",
"text": "战斗统计",
"fontSize": 25,
"color": "#687C8C",
"alignment": "Center",
"raycastTarget": false
}
]
},
{
"name": "Btn_NextStage",
"parent": "ResultPanel",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
40,
-680
],
"sizeDelta": [
800,
104
]
},
"components": [
{
"type": "Image",
"sprite": "btn_primary_normal",
"imageType": "Sliced",
"raycastTarget": true
},
{
"type": "Button",
"transition": "SpriteSwap",
"spritePressed": "btn_primary_pressed",
"spriteDisabled": "btn_primary_disabled",
"onClick": "Prototype.NextStage"
}
]
},
{
"name": "Txt_NextStage",
"parent": "Btn_NextStage",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
12,
-6
],
"sizeDelta": [
776,
92
]
},
"components": [
{
"type": "TextMeshProUGUI",
"text": "下一关",
"fontSize": 32,
"color": "#FFFFFF",
"alignment": "Center",
"raycastTarget": false
},
{
"type": "Outline",
"effectColor": "#102033CC",
"effectDistance": [
1.2,
-1.2
]
}
]
},
{
"name": "Btn_Retry",
"parent": "ResultPanel",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
40,
-836
],
"sizeDelta": [
380,
112
]
},
"components": [
{
"type": "Image",
"sprite": "btn_secondary_normal",
"imageType": "Sliced",
"raycastTarget": true
},
{
"type": "Button",
"transition": "SpriteSwap",
"spritePressed": "btn_secondary_pressed",
"spriteDisabled": "btn_primary_disabled",
"onClick": "Prototype.Retry"
}
]
},
{
"name": "Txt_Retry",
"parent": "Btn_Retry",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
12,
-6
],
"sizeDelta": [
356,
100
]
},
"components": [
{
"type": "TextMeshProUGUI",
"text": "调整阵容",
"fontSize": 32,
"color": "#FFFFFF",
"alignment": "Center",
"raycastTarget": false
},
{
"type": "Outline",
"effectColor": "#102033CC",
"effectDistance": [
1.2,
-1.2
]
}
]
},
{
"name": "Btn_Home",
"parent": "ResultPanel",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
460,
-836
],
"sizeDelta": [
380,
112
]
},
"components": [
{
"type": "Image",
"sprite": "btn_primary_normal",
"imageType": "Sliced",
"raycastTarget": true
},
{
"type": "Button",
"transition": "SpriteSwap",
"spritePressed": "btn_primary_pressed",
"spriteDisabled": "btn_primary_disabled",
"onClick": "Prototype.Home"
}
]
},
{
"name": "Txt_Home",
"parent": "Btn_Home",
"active": true,
"rect": {
"anchorMin": [
0,
1
],
"anchorMax": [
0,
1
],
"pivot": [
0,
1
],
"anchoredPosition": [
12,
-6
],
"sizeDelta": [
356,
100
]
},
"components": [
{
"type": "TextMeshProUGUI",
"text": "返回营地",
"fontSize": 32,
"color": "#FFFFFF",
"alignment": "Center",
"raycastTarget": false
},
{
"type": "Outline",
"effectColor": "#102033CC",
"effectDistance": [
1.2,
-1.2
]
}
]
}
],
"bindings": [
"Txt_BattleTitle",
"Txt_BattleInfo",
"Btn_Abandon",
"Txt_Abandon",
"Txt_Party",
"Btn_Pause",
"Txt_Pause",
"Btn_Speed",
"Txt_Speed",
"Txt_ResultTitle",
"Txt_ResultInfo",
"Txt_BattleReport",
"Btn_NextStage",
"Txt_NextStage",
"Btn_Retry",
"Txt_Retry",
"Btn_Home",
"Txt_Home"
],
"events": [
{
"name": "Prototype.Abandon",
"node": "Btn_Abandon"
},
{
"name": "Prototype.Pause",
"node": "Btn_Pause"
},
{
"name": "Prototype.Speed",
"node": "Btn_Speed"
},
{
"name": "Prototype.NextStage",
"node": "Btn_NextStage"
},
{
"name": "Prototype.Retry",
"node": "Btn_Retry"
},
{
"name": "Prototype.Home",
"node": "Btn_Home"
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff