This commit is contained in:
wuwenbo 2025-07-30 18:35:34 +08:00
commit fa57beaa6c
60 changed files with 1425 additions and 510 deletions

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -24505,7 +24505,7 @@
[Debug][OPS.OBF][Setup] Load Pipeline
[Info][OPS.OBF][OnPostBuild] Process component Post Process Unity MonoBehaviour Assets
[Info][OPS.OBF][OnPostBuild] Assets are not bundled. Obfuscating globalgamemanagers.assets file.
[Info][OPS.OBF][OnPostBuild] Obfuscating globalgamemanagers.assets file 'F:\TH1\Pack\Demo V1.0.4\TOHOTOPIA Demo_Data\globalgamemanagers.assets'.
[Info][OPS.OBF][OnPostBuild] Obfuscating globalgamemanagers.assets file 'F:\TH1\Pack\Demo V1.0.5\TOHOTOPIA Demo_Data\globalgamemanagers.assets'.
[Debug][OPS.OBF][OnPostBuild] Loaded globalgamemanagers.assets file successfully.
[Debug][OPS.OBF][OnPostBuild] Obfuscated '54' MonoScripts in assets file 'globalgamemanagers.assets'.
[Debug][OPS.OBF][OnPostBuild] Updated globalgamemanagers.assets file successfully.

View File

@ -27,7 +27,7 @@ MonoBehaviour:
_version: 3.33
_category:
_comments:
_translation: {x: 417, y: 10}
_translation: {x: 363, y: 488}
_zoomFactor: 1
_haltSerialization: 0
_externalSerializationFile: {fileID: 0}

View File

@ -23,6 +23,8 @@ MonoBehaviour:
MoveAnimTime: 0.15
ExplorerMoveDelay: 0.15
AIBeforeAnimWaitTime: 0.3
AISightActionWaitTime: 0.2
AINoSightActionWaitTime: 0.05
AIAnimCameraMoveTime: 0.3
ProjectileMoveTime: 0.3
ProjectileBombMoveTime: 0.5

View File

@ -126,4 +126,8 @@ MonoBehaviour:
- SkillType: 62
SkillDesc:
- SkillType: 63
SkillDesc: "<color=yellow>\u9635\u8425\u7279\u6027</color><br>\u5996\u7CBE\u5973\u4EC6\uFF1A\u53EF\u4EE5\u5728\u9886\u571F\u5185\u7684<color=yellow>\u6811\u6797</color>\u751F\u4EA7\u6B65\u5175\u3002"
- SkillType: 64
SkillDesc: "<color=yellow>\u5E1D\u56FD\u7279\u6027</color><br>\u5C3C\u7F57\u6CB3\u7684\u5973\u513F\uFF1A\u5F00\u5C40\u65F6\u62E5\u6709<color=yellow>\u8015\u79CD</color>\u79D1\u6280\u3002"
- SkillType: 65
SkillDesc:

View File

@ -18,6 +18,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u6B65\u5175"
Desc: "\u57FA\u7840\u5355\u4F4D\u3002\u62E5\u6709<color=yellow>\u51B2\u950B</color>\u548C<color=yellow>\u57CE\u9632</color>\u6280\u80FD\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -108,6 +109,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u6E38\u9A91\u5175"
Desc: "\u9AD8\u673A\u52A8\u6027\u5355\u4F4D\u3002\u62E5\u67092\u79FB\u52A8\u529B\u548C<color=yellow>\u51B2\u523A</color>\u3001<color=yellow>\u57CE\u9632</color>\u3001<color=yellow>\u9041\u8D70</color>\u6280\u80FD\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -198,6 +200,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u5F13\u5175"
Desc: "\u8FDC\u7A0B\u5355\u4F4D\uFF0C\u62E5\u67092\u5C04\u7A0B\u548C<color=yellow>\u51B2\u950B</color>\u3001<color=yellow>\u57CE\u9632</color>\u6280\u80FD\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -288,6 +291,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u76FE\u5175"
Desc: "\u9632\u5FA1\u5355\u4F4D\u3002\u62E5\u67093\u9632\u5FA1\u529B\u548C<color=yellow>\u57CE\u9632</color>\u6280\u80FD\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 15
@ -378,6 +382,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u9A91\u58EB"
Desc: "\u5F3A\u529B\u673A\u52A8\u5355\u4F4D\u3002\u62E5\u67093\u79FB\u52A8\u529B3.5\u653B\u51FB\u529B\u548C<color=yellow>\u51B2\u950B</color>\u3001<color=yellow>\u8FDE\u7EED\u6740\u654C</color>\u6280\u80FD\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -468,6 +473,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u70AE\u5175"
Desc: "\u5F3A\u529B\u8FDC\u7A0B\u5355\u4F4D\u3002\u62E5\u67093\u5C04\u7A0B4\u653B\u51FB\u529B\u548C<color=yellow>\u57CE\u9632</color>\u6280\u80FD\u3002\u65E0\u6CD5\u53CD\u51FB\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -558,6 +564,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u5251\u58EB"
Desc: "\u5F3A\u529B\u7EFC\u5408\u5355\u4F4D\u3002\u62E5\u67093\u9632\u5FA1\u529B3\u653B\u51FB\u529B\u548C<color=yellow>\u51B2\u950B</color>\u6280\u80FD\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 15
@ -648,6 +655,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: Cloak
Desc:
LandType: 1
NoMaxHealth: 0
MaxHealth: 5
@ -666,6 +674,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: Minder
Desc:
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -684,6 +693,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u5E06\u8239"
Desc: "\u57FA\u7840\u6D77\u4E0A\u5355\u4F4D\u3002\u62E5\u67092\u79FB\u52A8\u529B\uFF0C\u65E0\u6CD5\u653B\u51FB\u3002"
LandType: 2
NoMaxHealth: 1
MaxHealth: 0
@ -774,6 +784,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u514B\u62C9\u514B"
Desc: "\u6D77\u4E0A\u8FDC\u7A0B\u5355\u4F4D\u3002\u62E5\u67093\u79FB\u52A8\u529B2\u5C04\u7A0B\u548C<color=yellow>\u5DE1\u6D0B</color>\u3001<color=yellow>\u51B2\u950B</color>\u6280\u80FD\u3002"
LandType: 2
NoMaxHealth: 1
MaxHealth: 0
@ -864,6 +875,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u7A81\u51FB\u8247"
Desc: "\u6D77\u4E0A\u5F3A\u529B\u8FD1\u6218\u3002\u62E5\u67093\u79FB\u52A8\u529B3\u653B\u51FB\u529B3\u9632\u5FA1\u529B\u548C<color=yellow>\u51B2\u950B</color>\u6280\u80FD\u3002"
LandType: 2
NoMaxHealth: 1
MaxHealth: 0
@ -954,6 +966,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u6218\u8230"
Desc: "\u6D77\u4E0A\u8D85\u5F3A\u8FDC\u7A0B\u3002\u62E5\u67092\u79FB\u52A8\u529B3.5\u653B\u51FB\u529B3\u5C04\u7A0B\u548C<color=yellow>\u6E85\u5C04</color>\u6280\u80FD\u3002\u65E0\u6CD5\u53CD\u51FB\u3002"
LandType: 2
NoMaxHealth: 1
MaxHealth: 0
@ -1044,6 +1057,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u5DE8\u4EBA"
Desc: "\u8D85\u5F3A\u529B\u7EFC\u5408\u5355\u4F4D\u3002\u62E5\u670940\u8840\u91CF\u548C4\u653B\u51FB\u529B\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 40
@ -1134,6 +1148,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: Phantom
Desc:
LandType: 1
NoMaxHealth: 0
MaxHealth: 30
@ -1152,6 +1167,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: Dabber
Desc:
LandType: 1
NoMaxHealth: 0
MaxHealth: 30
@ -1170,6 +1186,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u8299\u5170\u6735\u9732\xB7\u65AF\u5361\u96F7\u7279"
Desc: "\u8299\u5170\u6735\u9732\xB7\u65AF\u5361\u96F7\u7279<br><color=yellow>\u9A6C</color>\u804C\u9636\u82F1\u96C4\uFF0C\u7834\u5C40\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u56DB\u91CD\u5B58\u5728</color>\u7B49\u6280\u80FD\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -1188,6 +1205,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u857E\u7C73\u8389\u4E9A\xB7\u65AF\u5361\u96F7\u7279"
Desc: "\u857E\u7C73\u8389\u4E9A\xB7\u65AF\u5361\u96F7\u7279<br><color=yellow>\u738B</color>\u804C\u9636\u82F1\u96C4\uFF0C\u9632\u5FA1\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u7EEF\u7EA2\u4E4B\u51FB</color>\u6280\u80FD\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 30
@ -1206,6 +1224,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u5341\u516D\u591C\u54B2\u591C"
Desc: "\u5341\u516D\u591C\u54B2\u591C<br><color=yellow>\u8F66</color>\u804C\u9636\u82F1\u96C4\uFF0C\u523A\u5BA2\u578B\u82F1\u96C4\uFF0C\u62E5\u6709<color=yellow>\u94F6\u4E4B\u8DF3\u8DC3</color>\u7B49\u6280\u80FD\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 30
@ -1224,6 +1243,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u7EA2\u7F8E\u94C3"
Desc: "\u7EA2\u7F8E\u94C3<br><color=yellow>\u8F66</color>\u804C\u9636\u82F1\u96C4\uFF0C\u6218\u58EB\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u8679\u8272\u592A\u6781\u62F3</color>\u7B49\u6280\u80FD\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 30
@ -1242,6 +1262,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: "\u5E15\u79CB\u8389\u8BFA\u857E\u59EC"
Desc: "\u5E15\u79CB\u8389\u8BFA\u857E\u59EC<br><color=yellow>\u76F8</color>\u804C\u9636\u82F1\u96C4\uFF0C\u8F85\u52A9\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u7687\u5BB6\u70C8\u7130</color>\u6280\u80FD\u3002"
LandType: 1
NoMaxHealth: 0
MaxHealth: 30

View File

@ -23,6 +23,8 @@ MonoBehaviour:
MoveAnimTime: 0.15
ExplorerMoveDelay: 0.15
AIBeforeAnimWaitTime: 0.3
AISightActionWaitTime: 0.2
AINoSightActionWaitTime: 0.05
AIAnimCameraMoveTime: 0.3
ProjectileMoveTime: 0.3
ProjectileBombMoveTime: 0.5

View File

@ -8322,4 +8322,196 @@ MonoBehaviour:
EN:
JP:
KR:
- ID: 1324
ZH: "\u5996\u7CBE\u5973\u4EC6\uFF1A\u53EF\u4EE5\u5728\u9886\u571F\u5185\u7684<color=yellow>\u6811\u6797</color>\u751F\u4EA7\u6B65\u5175\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1325
ZH: "\u5C3C\u7F57\u6CB3\u7684\u5973\u513F\uFF1A\u5F00\u5C40\u65F6\u62E5\u6709<color=yellow>\u8015\u79CD</color>\u79D1\u6280\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1326
ZH: "\u57FA\u7840\u5355\u4F4D\u3002\u62E5\u6709<color=yellow>\u51B2\u950B</color>\u548C<color=yellow>\u57CE\u9632</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1327
ZH: "\u8FDC\u7A0B\u5355\u4F4D\uFF0C\u62E5\u67092\u5C04\u7A0B\u548C<color=yellow>\u51B2\u950B</color>\u3001<color=yellow>\u57CE\u9632</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1328
ZH: "\u5F3A\u529B\u673A\u52A8\u5355\u4F4D\u3002\u62E5\u67093\u79FB\u52A8\u529B3.5\u653B\u51FB\u529B\u548C<color=yellow>\u51B2\u950B</color>\u3001<color=yellow>\u8FDE\u7EED\u6740\u654C</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1329
ZH: "\u5F3A\u529B\u7EFC\u5408\u5355\u4F4D\u3002\u62E5\u67093\u9632\u5FA1\u529B3\u653B\u51FB\u529B\u548C<color=yellow>\u51B2\u950B</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1330
ZH: "\u57FA\u7840\u6D77\u4E0A\u5355\u4F4D\u3002\u62E5\u67092\u79FB\u52A8\u529B\uFF0C\u65E0\u6CD5\u653B\u51FB\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1331
ZH: "\u6D77\u4E0A\u8FDC\u7A0B\u5355\u4F4D\u3002\u62E5\u67093\u79FB\u52A8\u529B2\u5C04\u7A0B\u548C<color=yellow>\u5DE1\u6D0B</color>\u3001<color=yellow>\u51B2\u950B</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1332
ZH: "\u6D77\u4E0A\u5F3A\u529B\u8FD1\u6218\u3002\u62E5\u67093\u79FB\u52A8\u529B3\u653B\u51FB\u529B3\u9632\u5FA1\u529B\u548C<color=yellow>\u51B2\u950B</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1333
ZH: "\u6D77\u4E0A\u8D85\u5F3A\u8FDC\u7A0B\u3002\u62E5\u67092\u79FB\u52A8\u529B3.5\u653B\u51FB\u529B3\u5C04\u7A0B\u548C<color=yellow>\u6E85\u5C04</color>\u6280\u80FD\u3002\u65E0\u6CD5\u53CD\u51FB\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1334
ZH: "<color=yellow>\u9A6C</color>\u804C\u9636\u82F1\u96C4\uFF0C\u7834\u5C40\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u56DB\u91CD\u5B58\u5728</color>\u7B49\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1335
ZH: "<color=yellow>\u738B</color>\u804C\u9636\u82F1\u96C4\uFF0C\u9632\u5FA1\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u7EEF\u7EA2\u4E4B\u51FB</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1336
ZH: "<color=yellow>\u8F66</color>\u804C\u9636\u82F1\u96C4\uFF0C\u523A\u5BA2\u578B\u82F1\u96C4\uFF0C\u62E5\u6709<color=yellow>\u94F6\u4E4B\u8DF3\u8DC3</color>\u7B49\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1337
ZH: "<color=yellow>\u8F66</color>\u804C\u9636\u82F1\u96C4\uFF0C\u6218\u58EB\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u8679\u8272\u592A\u6781\u62F3</color>\u7B49\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1338
ZH: "<color=yellow>\u76F8</color>\u804C\u9636\u82F1\u96C4\uFF0C\u8F85\u52A9\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u7687\u5BB6\u70C8\u7130</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1339
ZH: "<color=yellow>\u9635\u8425\u7279\u6027</color>\\n\u5996\u7CBE\u5973\u4EC6\uFF1A\u53EF\u4EE5\u5728\u9886\u571F\u5185\u7684<color=yellow>\u6811\u6797</color>\u751F\u4EA7\u6B65\u5175\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1340
ZH: "<color=yellow>\u5E1D\u56FD\u7279\u6027</color>\u5C3C\u7F57\u6CB3\u7684\u5973\u513F\uFF1A\u5F00\u5C40\u65F6\u62E5\u6709<color=yellow>\u8015\u79CD</color>\u79D1\u6280\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1341
ZH: "\u8299\u5170\u6735\u9732\xB7\u65AF\u5361\u96F7\u7279\\n<color=yellow>\u9A6C</color>\u804C\u9636\u82F1\u96C4\uFF0C\u7834\u5C40\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u56DB\u91CD\u5B58\u5728</color>\u7B49\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1342
ZH: "\u857E\u7C73\u8389\u4E9A\xB7\u65AF\u5361\u96F7\u7279\\n<color=yellow>\u738B</color>\u804C\u9636\u82F1\u96C4\uFF0C\u9632\u5FA1\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u7EEF\u7EA2\u4E4B\u51FB</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1343
ZH: "\u5341\u516D\u591C\u54B2\u591C\\n<color=yellow>\u8F66</color>\u804C\u9636\u82F1\u96C4\uFF0C\u523A\u5BA2\u578B\u82F1\u96C4\uFF0C\u62E5\u6709<color=yellow>\u94F6\u4E4B\u8DF3\u8DC3</color>\u7B49\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1344
ZH: "\u7EA2\u7F8E\u94C3\\n<color=yellow>\u8F66</color>\u804C\u9636\u82F1\u96C4\uFF0C\u6218\u58EB\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u8679\u8272\u592A\u6781\u62F3</color>\u7B49\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1345
ZH: "\u5E15\u79CB\u8389\u8BFA\u857E\u59EC\\n<color=yellow>\u76F8</color>\u804C\u9636\u82F1\u96C4\uFF0C\u8F85\u52A9\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u7687\u5BB6\u70C8\u7130</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1346
ZH: "\u5E15\u79CB\u8389\u8BFA\u857E\u59EC/n<color=yellow>\u76F8</color>\u804C\u9636\u82F1\u96C4\uFF0C\u8F85\u52A9\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u7687\u5BB6\u70C8\u7130</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1347
ZH: "\u5E15\u79CB\u8389\u8BFA\u857E\u59EC\\\\n<color=yellow>\u76F8</color>\u804C\u9636\u82F1\u96C4\uFF0C\u8F85\u52A9\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u7687\u5BB6\u70C8\u7130</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1348
ZH: "\u5E15\u79CB\u8389\u8BFA\u857E\u59EC</br><color=yellow>\u76F8</color>\u804C\u9636\u82F1\u96C4\uFF0C\u8F85\u52A9\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u7687\u5BB6\u70C8\u7130</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1349
ZH: "<color=yellow>\u9635\u8425\u7279\u6027</color><br>\u5996\u7CBE\u5973\u4EC6\uFF1A\u53EF\u4EE5\u5728\u9886\u571F\u5185\u7684<color=yellow>\u6811\u6797</color>\u751F\u4EA7\u6B65\u5175\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1350
ZH: "<color=yellow>\u5E1D\u56FD\u7279\u6027</color><br>\u5C3C\u7F57\u6CB3\u7684\u5973\u513F\uFF1A\u5F00\u5C40\u65F6\u62E5\u6709<color=yellow>\u8015\u79CD</color>\u79D1\u6280\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1351
ZH: "\u8299\u5170\u6735\u9732\xB7\u65AF\u5361\u96F7\u7279<br><color=yellow>\u9A6C</color>\u804C\u9636\u82F1\u96C4\uFF0C\u7834\u5C40\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u56DB\u91CD\u5B58\u5728</color>\u7B49\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1352
ZH: "\u857E\u7C73\u8389\u4E9A\xB7\u65AF\u5361\u96F7\u7279<br><color=yellow>\u738B</color>\u804C\u9636\u82F1\u96C4\uFF0C\u9632\u5FA1\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u7EEF\u7EA2\u4E4B\u51FB</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1353
ZH: "\u5341\u516D\u591C\u54B2\u591C<br><color=yellow>\u8F66</color>\u804C\u9636\u82F1\u96C4\uFF0C\u523A\u5BA2\u578B\u82F1\u96C4\uFF0C\u62E5\u6709<color=yellow>\u94F6\u4E4B\u8DF3\u8DC3</color>\u7B49\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1354
ZH: "\u7EA2\u7F8E\u94C3<br><color=yellow>\u8F66</color>\u804C\u9636\u82F1\u96C4\uFF0C\u6218\u58EB\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u8679\u8272\u592A\u6781\u62F3</color>\u7B49\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
- ID: 1355
ZH: "\u5E15\u79CB\u8389\u8BFA\u857E\u59EC<br><color=yellow>\u76F8</color>\u804C\u9636\u82F1\u96C4\uFF0C\u8F85\u52A9\u578B\u82F1\u96C4\u3002\u62E5\u6709<color=yellow>\u7687\u5BB6\u70C8\u7130</color>\u6280\u80FD\u3002"
TDZH:
EN:
JP:
KR:
TargetTypes: 0100000001000000010000000100000001000000

View File

@ -126,4 +126,8 @@ MonoBehaviour:
- SkillType: 62
SkillDesc:
- SkillType: 63
SkillDesc: 1349
- SkillType: 64
SkillDesc: 1350
- SkillType: 65
SkillDesc:

View File

@ -15,3 +15,4 @@ MonoBehaviour:
WinUIWinText: 1108
WinUILoseText: 1109
BottomInfoUnitDesc:
HintUIDefaultText:

View File

@ -18,6 +18,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 28
Desc: 1326
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -108,6 +109,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 1264
Desc: 1221
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -198,6 +200,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 30
Desc: 1327
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -288,6 +291,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 31
Desc: 1223
LandType: 1
NoMaxHealth: 0
MaxHealth: 15
@ -378,6 +382,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 496
Desc: 1328
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -468,6 +473,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 34
Desc: 1225
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -558,6 +564,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 32
Desc: 1329
LandType: 1
NoMaxHealth: 0
MaxHealth: 15
@ -648,6 +655,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 532
Desc:
LandType: 1
NoMaxHealth: 0
MaxHealth: 5
@ -666,6 +674,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 533
Desc:
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -684,6 +693,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 46
Desc: 1330
LandType: 2
NoMaxHealth: 1
MaxHealth: 0
@ -774,6 +784,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 1195
Desc: 1331
LandType: 2
NoMaxHealth: 1
MaxHealth: 0
@ -864,6 +875,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 1197
Desc: 1332
LandType: 2
NoMaxHealth: 1
MaxHealth: 0
@ -954,6 +966,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 48
Desc: 1333
LandType: 2
NoMaxHealth: 1
MaxHealth: 0
@ -1044,6 +1057,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 395
Desc: 1227
LandType: 1
NoMaxHealth: 0
MaxHealth: 40
@ -1134,6 +1148,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 539
Desc:
LandType: 1
NoMaxHealth: 0
MaxHealth: 30
@ -1152,6 +1167,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 540
Desc:
LandType: 1
NoMaxHealth: 0
MaxHealth: 30
@ -1170,6 +1186,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 144
Desc: 1351
LandType: 1
NoMaxHealth: 0
MaxHealth: 10
@ -1188,6 +1205,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 147
Desc: 1352
LandType: 1
NoMaxHealth: 0
MaxHealth: 30
@ -1206,6 +1224,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 37
Desc: 1353
LandType: 1
NoMaxHealth: 0
MaxHealth: 30
@ -1224,6 +1243,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 38
Desc: 1354
LandType: 1
NoMaxHealth: 0
MaxHealth: 30
@ -1242,6 +1262,7 @@ MonoBehaviour:
GiantCivId: 0
GiantForceId: 0
Name: 39
Desc: 1355
LandType: 1
NoMaxHealth: 0
MaxHealth: 30

View File

@ -1359,7 +1359,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!4 &7844018954484554438
Transform:
m_ObjectHideFlags: 0
@ -1369,9 +1369,9 @@ Transform:
m_GameObject: {fileID: 4166703505505008710}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0.95}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_LocalPosition: {x: 0, y: -0.45, z: 0.95}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 1494252107283779432}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -2639,7 +2639,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!4 &7138399367229989029
Transform:
m_ObjectHideFlags: 0
@ -2649,9 +2649,9 @@ Transform:
m_GameObject: {fileID: 7943349828493455221}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0.94}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_LocalPosition: {x: 0, y: -0.45, z: 0.94}
m_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 1494252107283779432}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@ -1651,7 +1651,7 @@ SpriteRenderer:
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: -124165537
m_SortingLayer: 5
m_SortingOrder: 1
m_SortingOrder: 2
m_Sprite: {fileID: 21300000, guid: e19ca1e5ce2b5cb4fbc8d4a7eb76c81f, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0

View File

@ -11670,6 +11670,7 @@ GameObject:
- component: {fileID: 105471439}
- component: {fileID: 105471441}
- component: {fileID: 105471440}
- component: {fileID: 105471442}
m_Layer: 5
m_Name: Info2
m_TagString: Untagged
@ -11735,6 +11736,40 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 105471438}
m_CullTransparentMesh: 1
--- !u!114 &105471442
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 105471438}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 877da1f2a753cba41a4ae5bf9e3a37bd, type: 3}
m_Name:
m_EditorClassIdentifier:
positionOffset: {x: 15, y: -15}
DataProvider:
HintDataType: 0
Text: "\u9ED8\u8BA4\u9759\u6001\u6587\u672C..."
TechTypeData: 0
SkillTypeData: 63
ActionIdData:
ActionType: 0
WonderType: 0
ResourceType: 0
FeatureType: 0
TerrainType: 0
UnitType: 0
GiantType: 0
Vegetation: 0
UnitActionType: 0
CityLevelUpActionType: 0
GridMiscActionType: 0
SkillType: 0
TechType: 0
UnitType: 0
GiantType: 0
--- !u!1 &105822060
GameObject:
m_ObjectHideFlags: 0
@ -32433,7 +32468,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -38264,7 +38299,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -91180,6 +91215,7 @@ GameObject:
- component: {fileID: 735834391}
- component: {fileID: 735834390}
- component: {fileID: 735834389}
- component: {fileID: 735834392}
m_Layer: 5
m_Name: BG
m_TagString: Untagged
@ -91259,6 +91295,40 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 735834387}
m_CullTransparentMesh: 1
--- !u!114 &735834392
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 735834387}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 877da1f2a753cba41a4ae5bf9e3a37bd, type: 3}
m_Name:
m_EditorClassIdentifier:
positionOffset: {x: 15, y: -15}
DataProvider:
HintDataType: 4
Text: "\u9ED8\u8BA4\u9759\u6001\u6587\u672C..."
TechTypeData: 0
SkillTypeData: 0
ActionIdData:
ActionType: 0
WonderType: 0
ResourceType: 0
FeatureType: 0
TerrainType: 0
UnitType: 0
GiantType: 0
Vegetation: 0
UnitActionType: 0
CityLevelUpActionType: 0
GridMiscActionType: 0
SkillType: 0
TechType: 0
UnitType: 14
GiantType: 5
--- !u!1 &736948066
GameObject:
m_ObjectHideFlags: 0
@ -96644,9 +96714,9 @@ MonoBehaviour:
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_enableAutoSizing: 1
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontSizeMax: 36
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 512
@ -104735,7 +104805,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -117902,8 +117972,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -55, y: -40}
m_SizeDelta: {x: 100, y: 100}
m_AnchoredPosition: {x: -26, y: -10}
m_SizeDelta: {x: 50, y: 50}
m_Pivot: {x: 1, y: 1}
--- !u!114 &935515444
MonoBehaviour:
@ -129746,6 +129816,7 @@ GameObject:
- component: {fileID: 1029604520}
- component: {fileID: 1029604522}
- component: {fileID: 1029604521}
- component: {fileID: 1029604523}
m_Layer: 5
m_Name: Info1
m_TagString: Untagged
@ -129811,6 +129882,40 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1029604519}
m_CullTransparentMesh: 1
--- !u!114 &1029604523
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1029604519}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 877da1f2a753cba41a4ae5bf9e3a37bd, type: 3}
m_Name:
m_EditorClassIdentifier:
positionOffset: {x: 15, y: -15}
DataProvider:
HintDataType: 0
Text: "\u5C3C\u7F57\u6CB3\u7684\u5973\u513F\uFF1A\u5F00\u5C40\u65F6\u62E5\u6709<color=yellow>\u8015\u79CD</color>\u79D1\u6280\u3002"
TechTypeData: 0
SkillTypeData: 64
ActionIdData:
ActionType: 0
WonderType: 0
ResourceType: 0
FeatureType: 0
TerrainType: 0
UnitType: 0
GiantType: 0
Vegetation: 0
UnitActionType: 0
CityLevelUpActionType: 0
GridMiscActionType: 0
SkillType: 0
TechType: 0
UnitType: 0
GiantType: 0
--- !u!1 &1030630515
GameObject:
m_ObjectHideFlags: 0
@ -134114,7 +134219,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -137512,7 +137617,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!224 &1082107953
RectTransform:
m_ObjectHideFlags: 0
@ -139839,7 +139944,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -140730,7 +140835,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -141704,8 +141809,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -55, y: -40}
m_SizeDelta: {x: 100, y: 100}
m_AnchoredPosition: {x: -26, y: -10}
m_SizeDelta: {x: 50, y: 50}
m_Pivot: {x: 1, y: 1}
--- !u!114 &1107982508
MonoBehaviour:
@ -162672,8 +162777,7 @@ GameObject:
- component: {fileID: 1277632349}
- component: {fileID: 1277632348}
- component: {fileID: 1277632347}
- component: {fileID: 1277632351}
- component: {fileID: 1277632350}
- component: {fileID: 1277632352}
m_Layer: 5
m_Name: BG
m_TagString: Untagged
@ -162753,7 +162857,7 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1277632345}
m_CullTransparentMesh: 1
--- !u!114 &1277632350
--- !u!114 &1277632352
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@ -162762,35 +162866,31 @@ MonoBehaviour:
m_GameObject: {fileID: 1277632345}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0eb483accab23a14bb264f0eaa0d9bc2, type: 3}
m_Name:
m_EditorClassIdentifier:
ActionId:
ActionType: 0
WonderType: 0
ResourceType: 1
FeatureType: 0
TerrainType: 0
UnitType: 0
GiantType: 0
Vegetation: 0
UnitActionType: 0
CityLevelUpActionType: 0
GridMiscActionType: 0
SkillType: 0
TechType: 0
--- !u!114 &1277632351
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1277632345}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 309f3ee9008b7c94e90d09b29d0f17ad, type: 3}
m_Script: {fileID: 11500000, guid: 877da1f2a753cba41a4ae5bf9e3a37bd, type: 3}
m_Name:
m_EditorClassIdentifier:
positionOffset: {x: 15, y: -15}
DataProvider:
HintDataType: 4
Text: "\u9ED8\u8BA4\u9759\u6001\u6587\u672C..."
TechTypeData: 0
SkillTypeData: 0
ActionIdData:
ActionType: 4
WonderType: 0
ResourceType: 0
FeatureType: 0
TerrainType: 0
UnitType: 14
GiantType: 3
Vegetation: 0
UnitActionType: 0
CityLevelUpActionType: 0
GridMiscActionType: 0
SkillType: 0
TechType: 0
UnitType: 14
GiantType: 3
--- !u!1 &1277666041
GameObject:
m_ObjectHideFlags: 0
@ -176933,7 +177033,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -184966,6 +185066,7 @@ GameObject:
- component: {fileID: 1480211985}
- component: {fileID: 1480211984}
- component: {fileID: 1480211983}
- component: {fileID: 1480211986}
m_Layer: 5
m_Name: BG
m_TagString: Untagged
@ -185045,6 +185146,40 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1480211981}
m_CullTransparentMesh: 1
--- !u!114 &1480211986
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1480211981}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 877da1f2a753cba41a4ae5bf9e3a37bd, type: 3}
m_Name:
m_EditorClassIdentifier:
positionOffset: {x: 15, y: -15}
DataProvider:
HintDataType: 4
Text: "\u9ED8\u8BA4\u9759\u6001\u6587\u672C..."
TechTypeData: 0
SkillTypeData: 0
ActionIdData:
ActionType: 0
WonderType: 0
ResourceType: 0
FeatureType: 0
TerrainType: 0
UnitType: 0
GiantType: 0
Vegetation: 0
UnitActionType: 0
CityLevelUpActionType: 0
GridMiscActionType: 0
SkillType: 0
TechType: 0
UnitType: 14
GiantType: 4
--- !u!1 &1480447913
GameObject:
m_ObjectHideFlags: 0
@ -188021,7 +188156,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -191868,7 +192003,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -202740,6 +202875,7 @@ GameObject:
- component: {fileID: 1614963470}
- component: {fileID: 1614963469}
- component: {fileID: 1614963468}
- component: {fileID: 1614963471}
m_Layer: 5
m_Name: BG
m_TagString: Untagged
@ -202819,6 +202955,40 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1614963466}
m_CullTransparentMesh: 1
--- !u!114 &1614963471
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1614963466}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 877da1f2a753cba41a4ae5bf9e3a37bd, type: 3}
m_Name:
m_EditorClassIdentifier:
positionOffset: {x: 15, y: -15}
DataProvider:
HintDataType: 4
Text: "\u9ED8\u8BA4\u9759\u6001\u6587\u672C..."
TechTypeData: 0
SkillTypeData: 0
ActionIdData:
ActionType: 0
WonderType: 0
ResourceType: 0
FeatureType: 0
TerrainType: 0
UnitType: 0
GiantType: 0
Vegetation: 0
UnitActionType: 0
CityLevelUpActionType: 0
GridMiscActionType: 0
SkillType: 0
TechType: 0
UnitType: 14
GiantType: 2
--- !u!1 &1616248698
GameObject:
m_ObjectHideFlags: 0
@ -206248,8 +206418,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -56, y: -30}
m_SizeDelta: {x: 100, y: 100}
m_AnchoredPosition: {x: -26, y: -10}
m_SizeDelta: {x: 50, y: 50}
m_Pivot: {x: 1, y: 1}
--- !u!114 &1644109752
MonoBehaviour:
@ -215431,7 +215601,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -233903,7 +234073,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
@ -235405,9 +235575,9 @@ MonoBehaviour:
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_enableAutoSizing: 1
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontSizeMax: 36
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 512
@ -241392,7 +241562,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!224 &1937684649
RectTransform:
m_ObjectHideFlags: 0
@ -241835,6 +242005,7 @@ GameObject:
- component: {fileID: 1941499506}
- component: {fileID: 1941499505}
- component: {fileID: 1941499504}
- component: {fileID: 1941499507}
m_Layer: 5
m_Name: BG
m_TagString: Untagged
@ -241914,6 +242085,40 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1941499502}
m_CullTransparentMesh: 1
--- !u!114 &1941499507
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1941499502}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 877da1f2a753cba41a4ae5bf9e3a37bd, type: 3}
m_Name:
m_EditorClassIdentifier:
positionOffset: {x: 15, y: -15}
DataProvider:
HintDataType: 4
Text: "\u9ED8\u8BA4\u9759\u6001\u6587\u672C..."
TechTypeData: 0
SkillTypeData: 0
ActionIdData:
ActionType: 0
WonderType: 0
ResourceType: 0
FeatureType: 0
TerrainType: 0
UnitType: 0
GiantType: 0
Vegetation: 0
UnitActionType: 0
CityLevelUpActionType: 0
GridMiscActionType: 0
SkillType: 0
TechType: 0
UnitType: 14
GiantType: 1
--- !u!1 &1941701033
GameObject:
m_ObjectHideFlags: 0
@ -249688,7 +249893,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:

View File

@ -26,6 +26,19 @@ public class ActionDataAssets : ScriptableObject
//Debug.Log(actionId.GridMiscActionType);
return false;
}
public bool GetActionDesc(CommonActionId actionId, out string ret)
{
ret = "";
foreach(var t in ActionList)
if (actionId == t.ActionId)
{
ret = t.Desc;
return true;
}
return false;
}
}
[Serializable]

View File

@ -21,6 +21,8 @@ public class AnimDataAssets : ScriptableObject
//AI move或者attack后等待的时间
public float AIBeforeAnimWaitTime;
public float AISightActionWaitTime;
public float AINoSightActionWaitTime;
public float AIAnimCameraMoveTime;
//飞行道具移动的时间

View File

@ -41,6 +41,19 @@ public class TechDataAssets : ScriptableObject
Init();
return _techInfoDict[techType];
}
public bool GetTechDesc(TechType techType, out string ret)
{
Init();
ret = "";
if (_techInfoDict.TryGetValue(techType, out var info))
{
ret = info.Description;
return true;
}
return false;
}
// 获取科技的所有后继科技 (非伟人科技)
public HashSet<TechType> GetNextTechs(TechType techType)

View File

@ -14,4 +14,8 @@ public class TextDataAssets : ScriptableObject
[MultilingualField]public string BottomInfoUnitDesc;
[MultilingualField]public string HintUIDefaultText;
}

View File

@ -72,7 +72,16 @@ public class UnitTypeDataAssets : ScriptableObject
else unitTypeInfo = _giantTypeDict[giantType];
return true;
}
public bool GetUnitDesc(UnitType UnitType,GiantType GiantType, out string ret)
{
ret = "";
if (!GetUnitTypeInfo(UnitType, GiantType, out var info))
return false;
ret = info.Desc;
return true;
}
public bool GetUnitSpriteGlow(MapData mapData, UnitData unitData, out Sprite sprite)
{
sprite = null;
@ -149,6 +158,8 @@ public class UnitTypeInfo
public uint GiantForceId;
[MultilingualField]
public string Name;
[MultilingualField]
public string Desc;
public LandType LandType;
public bool NoMaxHealth;
public int MaxHealth;

View File

@ -88,6 +88,11 @@ public enum SkillType
RECYCLE,
THIRDEYE,
SUPERHIDE,
// 文明技能
RemiliaForcesSkill1,
EgyptCivSkill1,
Max
}
@ -419,23 +424,23 @@ public class Table
ret[1] = ret[0] switch
{
"步兵" => "基础单位。拥有<color=yellow>冲</color>和<color=yellow>城防</color>技能。",
"步兵" => "基础单位。拥有<color=yellow>冲</color>和<color=yellow>城防</color>技能。",
"游骑兵" => "高机动性单位。拥有2移动力和<color=yellow>冲刺</color>、<color=yellow>城防</color>、<color=yellow>遁走</color>技能。",
"弓兵" => "远程单位拥有2射程和<color=yellow>冲刺</color>、<color=yellow>城防</color>技能。",
"盾兵" => "防御单位。拥有3防御力和<color=yellow>城防</color>技能。",
"骑士" => "强力机动单位。拥有3移动力3.5攻击力和<color=yellow>冲</color>、<color=yellow>连续杀敌</color>技能。",
"骑士" => "强力机动单位。拥有3移动力3.5攻击力和<color=yellow>冲</color>、<color=yellow>连续杀敌</color>技能。",
"炮兵" => "强力远程单位。拥有3射程4攻击力和<color=yellow>城防</color>技能。无法反击。",
"剑士" => "强力综合单位。拥有3防御力3攻击力和<color=yellow>冲</color>技能。",
"剑士" => "强力综合单位。拥有3防御力3攻击力和<color=yellow>冲</color>技能。",
"巨人" => "超强力综合单位。拥有40血量和4攻击力。",
"帆船" => "基础海上单位。拥有2移动力无法攻击。",
"克拉克" => "海上远程单位。拥有3移动力2射程和<color=yellow>巡洋</color>、<color=yellow>冲</color>技能。",
"突击艇" => "海上强力近战。拥有3移动力3攻击力3防御力和<color=yellow>冲</color>技能。",
"克拉克" => "海上远程单位。拥有3移动力2射程和<color=yellow>巡洋</color>、<color=yellow>冲</color>技能。",
"突击艇" => "海上强力近战。拥有3移动力3攻击力3防御力和<color=yellow>冲</color>技能。",
"战舰" => "海上超强远程。拥有2移动力3.5攻击力3射程和<color=yellow>溅射</color>技能。无法反击。",
"芙兰朵露·斯卡雷特" => "<color=yellow>马</color>职阶英雄,破局型英雄。拥有<color=yellow>四重存在</color>技能。",
"红美铃" => "<color=yellow>车</color>职阶英雄,战士型英雄。拥有<color=yellow>太极</color>技能。",
"芙兰朵露·斯卡雷特" => "<color=yellow>马</color>职阶英雄,破局型英雄。拥有<color=yellow>四重存在</color>技能。",
"红美铃" => "<color=yellow>车</color>职阶英雄,战士型英雄。拥有<color=yellow>虹色太极</color>技能。",
"帕秋莉·诺蕾姬" => "<color=yellow>相</color>职阶英雄,辅助型英雄。拥有<color=yellow>皇家烈焰</color>技能。",
"蕾米莉亚·斯卡雷特" => "<color=yellow>王</color>职阶英雄,防御型英雄。拥有<color=yellow>吸血盛宴</color>技能。",
"十六夜咲夜" => "<color=yellow>车</color>职阶英雄,刺客型英雄,拥有<color=yellow>时间停止</color>技能。",
"蕾米莉亚·斯卡雷特" => "<color=yellow>王</color>职阶英雄,防御型英雄。拥有<color=yellow>绯红之击</color>技能。",
"十六夜咲夜" => "<color=yellow>车</color>职阶英雄,刺客型英雄,拥有<color=yellow>银之跳跃</color>等技能。",
_ => ""
};

View File

@ -1792,16 +1792,22 @@ namespace Logic.AI
{
if (!IsInSight)
{
Duration = 0.04f;
Duration = Table.Instance.AnimDataAssets.AINoSightActionWaitTime;
return;
}
if (ActionLogic.ActionId.ActionType == CommonActionType.UnitAttack)
if (ActionLogic.ActionId.ActionType == CommonActionType.UnitMove)
{
Duration = ActionLogic.Duration;
Duration = Table.Instance.AnimDataAssets.MoveAnimTime + Table.Instance.AnimDataAssets.AISightActionWaitTime;
return;
}
Duration = Table.Instance.AnimDataAssets.AIBeforeAnimWaitTime;
if (ActionLogic.ActionId.ActionType == CommonActionType.UnitAttack)
{
Duration = ActionLogic.Duration + Table.Instance.AnimDataAssets.AIBeforeAnimWaitTime;
return;
}
Duration = Table.Instance.AnimDataAssets.AISightActionWaitTime;
}
public string DebugInfo()

View File

@ -399,6 +399,7 @@ namespace Logic.Editor
if (!Regex.IsMatch(com.text, @"[\u4E00-\u9FFF\u3400-\u4DBFa-zA-Z]")) continue;
// 去除首尾空格和换行符
com.text = com.text.Trim().Replace("\r\n", "\n");
var textCom = com.gameObject.GetComponent<MultilingualTextMono>();
if (!textCom) textCom = com.gameObject.AddComponent<MultilingualTextMono>();

View File

@ -6,35 +6,88 @@
*/
using System;
using System.Collections.Generic;
using RuntimeData;
using TH1Renderer;
namespace Logic.Event
{
public interface IEventEnter
public static class EventManager
{
public void PlayEffectEvent(GridVFXParams para, GridData grid);
}
public class ServerEventClient : IEventEnter
{
public void PlayEffectEvent(GridVFXParams para, GridData grid)
// 使用一个字典来存储所有事件的订阅者。
// 键(Key)是事件的类型(Type),值(Value)是响应该事件的委托(Delegate)。
private static Dictionary<Type, Delegate> eventListeners = new Dictionary<Type, Delegate>();
/// <summary>
/// 订阅一个事件。
/// </summary>
/// <typeparam name="T">要订阅的事件类型必须是struct。</typeparam>
/// <param name="listener">事件发生时要执行的回调方法。</param>
public static void Subscribe<T>(Action<T> listener) where T : struct
{
Type eventType = typeof(T);
// 如果字典中已存在该事件类型的委托
if (eventListeners.TryGetValue(eventType, out Delegate existingDelegate))
{
// 将新的监听器添加到现有委托链中
eventListeners[eventType] = Delegate.Combine(existingDelegate, listener);
}
else // 如果是第一次订阅该事件
{
// 直接将监听器作为新的委托存入字典
eventListeners[eventType] = listener;
}
}
}
public class EventManager
{
public static EventManager Instance = new EventManager();
public IEventEnter EventEnter;
public EventManager()
/// <summary>
/// 取消订阅一个事件。
/// </summary>
/// <typeparam name="T">要取消订阅的事件类型必须是struct。</typeparam>
/// <param name="listener">之前订阅时使用的回调方法。</param>
public static void Unsubscribe<T>(Action<T> listener) where T : struct
{
EventEnter = new ServerEventClient();
Type eventType = typeof(T);
// 只有在字典中存在该事件类型时才进行操作
if (eventListeners.TryGetValue(eventType, out Delegate existingDelegate))
{
// 从委托链中移除指定的监听器
Delegate resultDelegate = Delegate.Remove(existingDelegate, listener);
// 如果移除后委托链不为空,则更新字典
if (resultDelegate != null)
{
eventListeners[eventType] = resultDelegate;
}
else // 如果移除后委托链为空,则从字典中移除该事件类型
{
eventListeners.Remove(eventType);
}
}
}
/// <summary>
/// 发布一个事件。
/// 所有订阅了该事件的监听器都将被同步调用。
/// </summary>
/// <typeparam name="T">要发布的事件类型必须是struct。</typeparam>
/// <param name="eventData">要传递给监听器的事件数据。</param>
public static void Publish<T>(T eventData) where T : struct
{
Type eventType = typeof(T);
// 尝试从字典中获取该事件的委托链
if (eventListeners.TryGetValue(eventType, out Delegate existingDelegate))
{
// 将通用的 Delegate 类型安全地转换为具体的 Action<T> 类型
// 使用 ?.Invoke() 可以安全地调用,即使委托为空也不会抛出异常
var action = existingDelegate as Action<T>;
action?.Invoke(eventData);
}
// 如果没有找到任何订阅者,则什么也不做。这是一种正常情况。
}
}
}

View File

@ -0,0 +1,27 @@
using System.Collections;
using System.Collections.Generic;
using UI.HintUI;
using UnityEngine;
namespace Logic.Event
{
public struct ShowHintEvent
{
// CHANGED: 不再直接传递文本,而是传递一个数据提供者
public HintDataProvider DataProvider;
public Vector2 Position;
}
public struct HideHintEvent { }
public class UIEvents
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7dc7f2d0fbc6e3f4db89210ef1dec46b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -12,6 +12,7 @@ using UnityEngine.EventSystems;
using RuntimeData;
using TMPro;
using Logic.Multilingual;
using UI;
using UnityEngine.UI;
namespace Logic

View File

@ -11,6 +11,7 @@ using Logic.AI;
using Logic.Audio;
using UnityEngine.PlayerLoop;
using RuntimeData;
using UI;
using UnityEngine;

View File

@ -15,6 +15,7 @@ using UnityEngine;
using RuntimeData;
using TH1Renderer;
using TH1Resource;
using UI;
using UnityEngine.Diagnostics;

View File

@ -10,6 +10,7 @@ using Logic.Audio;
using UnityEngine;
using RuntimeData;
using TH1Renderer;
using UI;
namespace Logic
{

View File

@ -6,6 +6,7 @@ using Logic.Action;
using Logic.Config;
using Logic.CrashSight;
using TH1Renderer;
using UI;
using Unity.VisualScripting;
namespace Logic

View File

@ -112,7 +112,7 @@ namespace TH1Renderer
private MapRenderer(Main main, MapData mapData)
{
EventManager.Instance.EventEnter = new ViewEventEnter();
//EventManager.Instance.EventEnter = new ViewEventEnter();
_main = main;
_mapData = mapData;
ROMap = main.ROMapRenderer;
@ -1109,13 +1109,5 @@ namespace TH1Renderer
return false;
}
}
public class ViewEventEnter : IEventEnter
{
public void PlayEffectEvent(GridVFXParams para, GridData grid)
{
//!!!!!!!!!!!!!!!!
}
}
}

View File

@ -4,6 +4,7 @@ using UnityEngine;
using RuntimeData;
using Logic;
using TMPro;
using UI;
using Unity.Collections;
namespace TH1Renderer

View File

@ -2,6 +2,7 @@
using Logic;
using RuntimeData;
using Animancer;
using UI;
using UnityEngine.UI;
public class AboutUI

View File

@ -4,6 +4,7 @@ using Logic;
using MongoDB.Driver;
using RuntimeData;
using TH1Resource;
using UI;
using UnityEngine.UI;
using Unity.VisualScripting;
using UnityEditor;

View File

@ -8,6 +8,7 @@ using Logic.Multilingual;
using Logic.Skill;
using TH1Renderer;
using TH1Resource;
using UI;
using Unity.VisualScripting;
using UnityEngine.UIElements;
using Button = UnityEngine.UI.Button;

View File

@ -8,6 +8,7 @@ using System.Collections.Generic;
using Logic.Audio;
using Logic.Multilingual;
using TH1Renderer;
using UI;
using UnityEngine.Tilemaps;
// 数据结构

View File

@ -7,6 +7,7 @@ using UnityEngine.UI;
using Logic.Audio;
using TH1Renderer;
using TH1Resource;
using UI;
public class ChooseUI
{
@ -232,6 +233,7 @@ public class ChooseUI
_isShowing = true;
_isAnimating = true;
ROChooseUI.SetActive(true);
_secondChoosePanel.SetActive(false);
AudioManager.Instance.PlayMusic("RemiliaEgyptian",1f,1f,true);
AnimancerComponent animancer = ROChooseUI.GetComponent<AnimancerComponent>();
AnimationClip fadeInClip = Resources.Load<AnimationClip>("Animations/UI/SettingPanelFadeIn");

View File

@ -3,6 +3,7 @@ using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections.Generic;
using Logic.CrashSight;
using UI;
public class ChooseUISettingBarController : MonoBehaviour
{

View File

@ -5,6 +5,8 @@ using Logic;
using Logic.Action;
using UnityEngine;
using RuntimeData;
using UI;
public class CityUpgradeActionUI
{
public MapData MapData;

View File

@ -4,6 +4,8 @@ using UnityEngine.UI;
using Logic;
using RuntimeData;
using TMPro;
using UI;
public class DebugUI
{
private Main _main;

View File

@ -5,6 +5,7 @@ using UnityEngine.UI;
using TMPro;
using Unity.VisualScripting;
using RuntimeData;
using UI;
using UnityEngine.AI;
using UI.LibraryUI;
public class GameUI

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 33d78b460dff951478dc8897a0ff2690
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,101 @@
using Logic.Action;
using Logic.Multilingual;
using Unity.Burst.CompilerServices;
using UnityEngine;
// using Logic.Tech; // 假设TechType在这里
// using Logic.Skill; // 假设SkillType在这里
// using Logic.City; // 假设CityUpgradeId在这里
// 建议将所有与HintUI相关的逻辑类都放在这个命名空间下
namespace UI.HintUI
{
/// <summary>
/// 定义提示所依赖的数据类型
/// </summary>
public enum HintDataType
{
SkillHintData,
ActionHintData,
TechHintData,
CityUpgradeHintData,
UnitHintData,
// 直接显示静态文本
TextData
}
/// <summary>
/// 一个统一的提示数据提供者。
/// 它包含所有可能用到的数据字段通过HintDataType枚举来决定使用哪个。
/// </summary>
[System.Serializable] // 必须标记为Serializable这样才能在Inspector中显示
public class HintDataProvider
{
// --- 核心控制字段 ---
public HintDataType HintDataType;
// --- 所有可能的数据字段 ---
// 用于 TextData
[Tooltip("当类型为TextData时直接显示此文本")]
public string Text = "默认静态文本...";
// 用于 TechHintData
[Tooltip("当类型为TechHintData时使用此数据")]
public TechType TechTypeData;
// 用于 SkillHintData
[Tooltip("当类型为SkillHintData时使用此数据")]
public SkillType SkillTypeData;
// 用于 ActionHintData
[Tooltip("当类型为ActionHintData时使用此数据")]
public CommonActionId ActionIdData;
[Tooltip("unitData")]
public UnitType UnitType;
public GiantType GiantType;
// 用于 CityUpgradeHintData (注意:我根据推断为您增加了这个字段)
//[Tooltip("当类型为CityUpgradeHintData时使用此数据")]
//public CityUpgradeId CityUpgradeIdData; // 假设存在一个CityUpgradeId类型
/// <summary>
/// 根据HintDataType动态获取最终应显示的提示文本
/// </summary>
/// <returns>提示字符串</returns>
public string GetHintText()
{
string ret = Text;
switch (this.HintDataType)
{
case HintDataType.SkillHintData:
// 假设GetSkillDesc存在并且接收SkillTypeData
Table.Instance.SkillDataAssets.GetSkillDesc(this.SkillTypeData,out ret);
break;
case HintDataType.ActionHintData:
// 仿写从Action数据表中获取描述
Table.Instance.ActionDataAssets.GetActionDesc(this.ActionIdData,out ret);
break;
case HintDataType.TechHintData:
// 仿写从Tech数据表中获取描述
Table.Instance.TechDataAssets.GetTechDesc(this.TechTypeData,out ret);
break;
case HintDataType.CityUpgradeHintData:
// 仿写从CityUpgrade数据表中获取描述
//return Table.Instance.CityUpgradeDataAssets.GetUpgradeDesc(this.CityUpgradeIdData);
break;
case HintDataType.UnitHintData:
Table.Instance.UnitTypeDataAssets.GetUnitDesc(UnitType,GiantType,out ret);
break;
default:
// 处理未知的或默认的枚举值,方便调试
UnityEngine.Debug.LogWarning($"未处理的HintDataType: {this.HintDataType}");
break;
}
return MultilingualManager.Instance.GetMultilingualText(uint.Parse(ret));
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 11dd307d5ce29ed4d9378e7ac68bd805
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,58 @@
using UnityEngine;
using UnityEngine.EventSystems;
using Logic.Event;
namespace UI.HintUI
{
/// <summary>
/// 悬浮提示的触发器。
/// 此组件内部包含一个可配置的数据提供者(DataProvider),用于生成提示内容。
/// </summary>
[RequireComponent(typeof(RectTransform))]
public class HintTrigger : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
[Tooltip("提示窗口相对于鼠标位置的偏移量。")]
[SerializeField]
private Vector2 positionOffset = new Vector2(15f, -15f);
[SerializeField]
[Tooltip("hinttext数据来源")]
public HintDataProvider DataProvider;
#region --- Unity UI Event System Callbacks ---
public void OnPointerEnter(PointerEventData eventData)
{
// 检查数据提供者是否已配置
if (DataProvider == null)
{
return;
}
// 如果提供者有效,但它生成了空内容,也不显示
// (这一步也可以移到HintUI里做但在这里提前判断可以避免无效的事件发布)
if (string.IsNullOrEmpty(DataProvider.GetHintText()))
{
return;
}
// 创建并填充请求显示提示的事件
ShowHintEvent showHintEvent = new ShowHintEvent
{
DataProvider = this.DataProvider,
Position = (Vector2)eventData.position + this.positionOffset
};
// 通过事件管理器发布事件,通知系统显示提示
EventManager.Publish(showHintEvent);
}
public void OnPointerExit(PointerEventData eventData)
{
// 发布隐藏提示的事件
EventManager.Publish(new HideHintEvent());
}
#endregion
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 877da1f2a753cba41a4ae5bf9e3a37bd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,119 @@
using UnityEngine;
using TMPro;
using Logic.Event;
using System;
namespace UI.HintUI
{
public class HintUI
{
// 视图引用
private readonly GameObject ROHintWindow;
private readonly RectTransform _rectTransform;
private TextMeshProUGUI _hintTextComponent;
// 【新增】缓存根Canvas的引用用于坐标转换
private readonly Canvas _rootCanvas;
// 缓存委托以用于取消订阅
private readonly Action<ShowHintEvent> _onShowHintAction;
private readonly Action<HideHintEvent> _onHideHintAction;
public HintUI(GameObject hintWindowRoot)
{
if (hintWindowRoot == null)
{
Debug.LogError("HintWindowUI的构造函数收到了一个空的GameObject引用");
return;
}
this.ROHintWindow = hintWindowRoot;
this._rectTransform = ROHintWindow.GetComponent<RectTransform>();
// 【新增】获取UI所在的根Canvas
// 这是坐标转换所必需的上下文环境
this._rootCanvas = ROHintWindow.GetComponentInParent<Canvas>();
if (this._rootCanvas == null)
{
Debug.LogError("在HintWindow的父级中找不到Canvas组件坐标转换将失败。", ROHintWindow);
}
// 缓存Action委托
_onShowHintAction = OnShowHint;
_onHideHintAction = OnHideHint;
init();
}
private void init()
{
Transform textTransform = ROHintWindow.transform.Find("Text");
if (textTransform != null)
{
_hintTextComponent = textTransform.GetComponent<TextMeshProUGUI>();
}
if (_hintTextComponent == null)
{
Debug.LogError("在ROHintWindow下未能找到路径 'Text' 或其上的TextMeshProUGUI组件", ROHintWindow);
return;
}
EventManager.Subscribe(_onShowHintAction);
EventManager.Subscribe(_onHideHintAction);
ROHintWindow.SetActive(false);
}
public void Dispose()
{
EventManager.Unsubscribe(_onShowHintAction);
EventManager.Unsubscribe(_onHideHintAction);
}
// --- 事件处理方法 (核心修改点) ---
private void OnShowHint(ShowHintEvent e)
{
// 基础的有效性检查
if (ROHintWindow == null || _hintTextComponent == null || _rectTransform == null || e.DataProvider == null)
{
ROHintWindow.SetActive(false);
return;
}
string textToShow = e.DataProvider.GetHintText();
if (string.IsNullOrEmpty(textToShow))
{
ROHintWindow.SetActive(false);
return;
}
// --- 【核心修改逻辑】从这里开始 ---
ROHintWindow.SetActive(true);
_hintTextComponent.text = textToShow;
// 1. 调用坐标转换工具
// 参数1: 我们要把坐标转换到哪个RectTransform内部这里是Hint窗口的父级。
// 参数2: 屏幕坐标点,从事件中传来 (它已经包含了您在HintTrigger里设置的offset)。
// 参数3: 当前Canvas使用的渲染相机。对于ScreenSpace-Overlay模式这个为null函数能正确处理。
// 参数4: 输出转换后的局部坐标。
RectTransformUtility.ScreenPointToLocalPointInRectangle(
_rectTransform.parent as RectTransform,
e.Position,
_rootCanvas.worldCamera,
out Vector2 localPoint
);
// 2. 将计算出的局部坐标赋值给localPosition
_rectTransform.localPosition = localPoint;
// --- 核心修改逻辑结束 ---
_rectTransform.SetAsLastSibling();
}
private void OnHideHint(HideHintEvent e)
{
if (ROHintWindow == null) return;
ROHintWindow.SetActive(false);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8814d39f70d930744946e521012475fc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -4,6 +4,7 @@ using Logic;
using RuntimeData;
using Animancer;
using TMPro;
using UI;
using UnityEngine.UI;
public class HistoryUI

View File

@ -6,6 +6,7 @@ using TMPro;
using UnityEngine.UI;
using Logic.Audio;
using TH1Resource;
using UI;
public class MainUI
{

View File

@ -6,6 +6,8 @@ using Animancer;
using Logic.CrashSight;
using TMPro;
using Logic.Multilingual;
using UI;
public class MessageUI
{
private Main _main;

View File

@ -8,6 +8,7 @@ using TMPro;
using UnityEngine.UI;
using Logic.Multilingual;
using TH1Resource;
using UI;
public class RankingUI
{

View File

@ -6,6 +6,7 @@ using Animancer;
using Logic.Config;
using UnityEngine.UI;
using Logic.Multilingual;
using UI;
public class SettingUI
{

View File

@ -14,6 +14,7 @@ using Logic.Multilingual;
using Logic.Skill;
using TH1Renderer;
using TH1Resource;
using UI;
public class TechTreeUI
{

View File

@ -6,6 +6,7 @@ using Logic;
using RuntimeData;
using Logic.Multilingual;
using TH1Resource;
using UI;
public class TopBarUI
{

View File

@ -1,117 +1,119 @@
using Logic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using TMPro;
using Unity.VisualScripting;
using RuntimeData;
using UnityEngine.AI;
public class UIManager
{
public static UIManager Instance { get; private set; }
private Main _main;
private MapData _mapData;
public GameObject ROUIManager;
public TopBarUI TopBarUI;
public BottomBarUI BottomBarUI;
public BottomInfoUI BottomInfoUI;
public CenterMessageUI CenterMessageUI;
public TechTreeUI TechTreeUI;
public CityUpgradeActionUI CityUpgradeActionUI;
public GameUI GameUI;
public GameObject ROHintWindow;//提示窗口
// ✅ 新增的 UI 类成员
public SettingUI SettingUI;
public WinUI WinUI;
public MessageUI MessageUI;
public RankingUI RankingUI;
public DebugUI DebugUI;
public GameObject AIPlayingHint;
public bool AIPlaying = false;
public UIManager()
namespace UI{
public class UIManager
{
Instance = this;
}
public void Init(Main main)
{
_main = main;
//_mapData = mapData;
Scene currentScene = SceneManager.GetActiveScene();
GameObject[] rootObjects = currentScene.GetRootGameObjects();
foreach (GameObject rootObject in rootObjects)
if (rootObject.name == "UICanvas"){
ROUIManager = rootObject;
break;
}
AIPlayingHint = ROUIManager.transform.Find("AIPlayingHint").gameObject;
SettingUI = new SettingUI();
GameUI = new GameUI(_main,_mapData);
ROHintWindow = ROUIManager.transform.Find("HintWindow").gameObject;
//这里要异步new和init不然new里会用到还没被new完的自己
GameUI.Init();
}
public void GameInit(MapData mapData)
{
_mapData = mapData;
WinUI = new WinUI(_main, _mapData);
MessageUI = new MessageUI(_main, _mapData);
RankingUI = new RankingUI();
TopBarUI = new TopBarUI(_main,_mapData);
BottomInfoUI = new BottomInfoUI(_main,_mapData);
BottomBarUI = new BottomBarUI(_main);
CenterMessageUI = new CenterMessageUI(_main,_mapData);
TechTreeUI = new TechTreeUI();
CityUpgradeActionUI = new CityUpgradeActionUI(_main,_mapData);
DebugUI = new DebugUI(_main,_mapData);
public static UIManager Instance { get; private set; }
private Main _main;
private MapData _mapData;
public GameObject ROUIManager;
public TopBarUI TopBarUI;
public BottomBarUI BottomBarUI;
public BottomInfoUI BottomInfoUI;
public CenterMessageUI CenterMessageUI;
public TechTreeUI TechTreeUI;
public CityUpgradeActionUI CityUpgradeActionUI;
public GameUI GameUI;
}
public void Update(MapData mapData)
{
if (mapData != null)
public GameObject ROHintWindow;//提示窗口
// ✅ 新增的 UI 类成员
public SettingUI SettingUI;
public WinUI WinUI;
public MessageUI MessageUI;
public RankingUI RankingUI;
public DebugUI DebugUI;
public GameObject AIPlayingHint;
public HintUI.HintUI HintUI;
public bool AIPlaying = false;
public UIManager()
{
Instance = this;
CenterMessageUI.Update();
CityUpgradeActionUI.Update();
BottomBarUI.Update();
BottomInfoUI.Update();
if(mapData != null)
TechTreeUI.Update(mapData);
TopBarUI.Update();
WinUI.Update();
MessageUI.Update();
RankingUI.Update();
DebugUI.Update();
}
public void Init(Main main)
{
_main = main;
//_mapData = mapData;
Scene currentScene = SceneManager.GetActiveScene();
GameObject[] rootObjects = currentScene.GetRootGameObjects();
foreach (GameObject rootObject in rootObjects)
if (rootObject.name == "UICanvas"){
ROUIManager = rootObject;
break;
}
AIPlayingHint = ROUIManager.transform.Find("AIPlayingHint").gameObject;
SettingUI = new SettingUI();
GameUI = new GameUI(_main,_mapData);
ROHintWindow = ROUIManager.transform.Find("HintWindow").gameObject;
HintUI = new HintUI.HintUI(ROUIManager.transform.Find("HintWindow").gameObject);
//这里要异步new和init不然new里会用到还没被new完的自己
GameUI.Init();
}
// ✅ 每帧更新新增的 UI
SettingUI.Update();
GameUI.Update();
//每次新开游戏都会更新,注意内存泄露问题!!!
public void GameInit(MapData mapData)
{
_mapData = mapData;
WinUI = new WinUI(_main, _mapData);
MessageUI = new MessageUI(_main, _mapData);
RankingUI = new RankingUI();
TopBarUI = new TopBarUI(_main,_mapData);
BottomInfoUI = new BottomInfoUI(_main,_mapData);
BottomBarUI = new BottomBarUI(_main);
CenterMessageUI = new CenterMessageUI(_main,_mapData);
TechTreeUI = new TechTreeUI();
CityUpgradeActionUI = new CityUpgradeActionUI(_main,_mapData);
DebugUI = new DebugUI(_main,_mapData);
}
}
public void EndTurn()
{
TopBarUI.RenderMark = true;
AIPlayingHint.SetActive(false);
//TODO 这里endturn和startturn逻辑不对
}
public void Update(MapData mapData)
{
if (mapData != null)
{
CenterMessageUI.Update();
CityUpgradeActionUI.Update();
BottomBarUI.Update();
BottomInfoUI.Update();
if(mapData != null)
TechTreeUI.Update(mapData);
TopBarUI.Update();
WinUI.Update();
MessageUI.Update();
RankingUI.Update();
DebugUI.Update();
}
// ✅ 每帧更新新增的 UI
SettingUI.Update();
GameUI.Update();
}
}
public void EndTurn()
{
TopBarUI.RenderMark = true;
AIPlayingHint.SetActive(false);
//TODO 这里endturn和startturn逻辑不对
}
}
}

View File

@ -8,6 +8,7 @@ using System.Collections.Generic;
using Logic.Multilingual;
using ParadoxNotion.Design;
using TH1Resource;
using UI;
public class WinUI
{