This commit is contained in:
2026-10-09 22:06:36 +08:00
parent 3a985587bf
commit 1f4c19904f
25 changed files with 715 additions and 371 deletions
@@ -37,7 +37,7 @@ MonoBehaviour:
m_Id: 2dc81615c3947e64493d7c6552a3f24d m_Id: 2dc81615c3947e64493d7c6552a3f24d
m_LoadPath: m_LoadPath:
m_Id: 6bd5fad857b09dd439c8b71f4ae1a9d8 m_Id: 6bd5fad857b09dd439c8b71f4ae1a9d8
m_BundleMode: 0 m_BundleMode: 1
m_AssetBundleProviderType: m_AssetBundleProviderType:
m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_AssemblyName: Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider m_ClassName: UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider
@@ -24,13 +24,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 0233946f0c4584846aa517b3c3fd44c3
m_Address: paotai11005
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 03a13fd733cabb145ab955ff6418f64d - m_GUID: 03a13fd733cabb145ab955ff6418f64d
m_Address: Assets/MyGame/aa/Game/Turrets/paotai11006.prefab m_Address: Assets/MyGame/aa/Game/Turrets/paotai11006.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -45,8 +38,15 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 098d43abfc1006e44acbd9822deb09bb - m_GUID: 0508b432151cafb488105a9c157dad8d
m_Address: paotai11018 m_Address: Assets/MyGame/aa/UI/Atlases/PaoTaiSprite.spriteatlas
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 0866d7cf8d02e054098a519554ef8a43
m_Address: Assets/MyGame/aa/UI/Atlases/chibangSprite.spriteatlas
m_ReadOnly: 0 m_ReadOnly: 0
m_SerializedLabels: m_SerializedLabels:
- Default - Default
@@ -73,13 +73,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 15ed386cee52ebc439d2290ba9c612da
m_Address: paotai11034
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 1618becd075eee742ac5619257814ae7 - m_GUID: 1618becd075eee742ac5619257814ae7
m_Address: Assets/MyGame/aa/Game/Turrets/paotai11001.prefab m_Address: Assets/MyGame/aa/Game/Turrets/paotai11001.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -87,13 +80,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 16c009b483e78364ca859c3be882bc42
m_Address: paotai11033
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 171c124c1d6ab2941b0f8823fa60d526 - m_GUID: 171c124c1d6ab2941b0f8823fa60d526
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17033.png m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17033.png
m_ReadOnly: 0 m_ReadOnly: 0
@@ -171,13 +157,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 270274fc851bfcd4b83a3a48cfd58924
m_Address: paotai11019
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 270cf29515c75574a8513c21289ca7d8 - m_GUID: 270cf29515c75574a8513c21289ca7d8
m_Address: Assets/MyGame/aa/Game/ZhanShen/MeiRenYu/display_FishEntry_6004.prefab m_Address: Assets/MyGame/aa/Game/ZhanShen/MeiRenYu/display_FishEntry_6004.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -185,13 +164,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 2890b76ba375ba948a73f1058220edaa
m_Address: paotai11006
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 2a06ddc2b6df9454b9b5c8d39117a75b - m_GUID: 2a06ddc2b6df9454b9b5c8d39117a75b
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17015.png m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17015.png
m_ReadOnly: 0 m_ReadOnly: 0
@@ -213,13 +185,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 2fef7572fe9392d48b4fa8040029859c
m_Address: paotai11021
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 3002bf23f86178142b830b43bdba22a7 - m_GUID: 3002bf23f86178142b830b43bdba22a7
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang17037.prefab m_Address: Assets/MyGame/aa/Game/ChiBang/chibang17037.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -297,13 +262,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 46a32cd561da5b443b80feaafb4e4f06
m_Address: paotai11015
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 47af3cd36cbd6b44bbb0c77f1935ed95 - m_GUID: 47af3cd36cbd6b44bbb0c77f1935ed95
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang17002.prefab m_Address: Assets/MyGame/aa/Game/ChiBang/chibang17002.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -332,20 +290,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 58d6c583854d4a94bb0aaf4cf305072b
m_Address: paotai11028
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 598795f8ee8efe945b21525d42cecc14
m_Address: paotai11027
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 59ff990509b91d742a1c5942343c87c3 - m_GUID: 59ff990509b91d742a1c5942343c87c3
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17009.png m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17009.png
m_ReadOnly: 0 m_ReadOnly: 0
@@ -360,20 +304,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 5bc7ee217f99ebd459216f2c08311bbc
m_Address: paotai11001
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 5bec01646b74aec4895fbd83494ed19f
m_Address: paotai11037
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 5f77689521c5f7e42bff3ec9a294569c - m_GUID: 5f77689521c5f7e42bff3ec9a294569c
m_Address: Assets/MyGame/aa/Game/Turrets/paotai11038.prefab m_Address: Assets/MyGame/aa/Game/Turrets/paotai11038.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -402,13 +332,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 63d3cb139a0c40043aab063639266e72
m_Address: paotai11016
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 63dadb73d8560bd4f928125809742234 - m_GUID: 63dadb73d8560bd4f928125809742234
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17013.png m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17013.png
m_ReadOnly: 0 m_ReadOnly: 0
@@ -416,13 +339,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 64508e66cdd421e42b0422d7ee49ed1c
m_Address: paotai11035
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 646b01713265d4340af82ae6725364a9 - m_GUID: 646b01713265d4340af82ae6725364a9
m_Address: Assets/MyGame/aa/Game/ZhanShen/DaQiao/display_wargod_in_14053_0_dev.prefab m_Address: Assets/MyGame/aa/Game/ZhanShen/DaQiao/display_wargod_in_14053_0_dev.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -472,22 +388,8 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 7155c77aef0a7aa4b9aee91968db0c60 - m_GUID: 72008a1238b2b5f48b76ec9f8bb16892
m_Address: paotai11041 m_Address: Assets/MyGame/aa/UI/Atlases/ZhanShenSprite.spriteatlas
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 72196431bdb830542be0fb94f40011ae
m_Address: paotai11036
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 756d775cf03c4fb4f8d7cb3654fc79e7
m_Address: paotai11044
m_ReadOnly: 0 m_ReadOnly: 0
m_SerializedLabels: m_SerializedLabels:
- Default - Default
@@ -514,13 +416,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 799389f1fc628394cb8d5030967d2535
m_Address: paotai11040
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 7c3f4b08bdbaf2540b7baf15c749dd8d - m_GUID: 7c3f4b08bdbaf2540b7baf15c749dd8d
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17017.png m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17017.png
m_ReadOnly: 0 m_ReadOnly: 0
@@ -549,13 +444,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 82dedb83fc04a5c45b3bd01ed2d6d64a
m_Address: paotai11024
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 840a48356f951834cb0d3871d6089b39 - m_GUID: 840a48356f951834cb0d3871d6089b39
m_Address: Assets/MyGame/aa/Game/Turrets/paotai11024.prefab m_Address: Assets/MyGame/aa/Game/Turrets/paotai11024.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -591,13 +479,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 879078866c383ec418496cebbf48d63d
m_Address: paotai11012
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 880e680de116b4d4d8fac3a31f99f985 - m_GUID: 880e680de116b4d4d8fac3a31f99f985
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17022.png m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17022.png
m_ReadOnly: 0 m_ReadOnly: 0
@@ -605,13 +486,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 894fce34a8f961c4385fa03e267e6009
m_Address: paotai11032
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 8956a6732ec8b45408cf133d27c34c5d - m_GUID: 8956a6732ec8b45408cf133d27c34c5d
m_Address: Assets/MyGame/aa/Game/Turrets/paotai11018.prefab m_Address: Assets/MyGame/aa/Game/Turrets/paotai11018.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -640,20 +514,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 8dc0814926948af45ac390a6a1e36613
m_Address: paotai11030
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 8e864412df60c9648b8ab2c6837dc2c6
m_Address: paotai11003
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 8ea133904ecd05e47a71995fa7efcdc8 - m_GUID: 8ea133904ecd05e47a71995fa7efcdc8
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17008.png m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17008.png
m_ReadOnly: 0 m_ReadOnly: 0
@@ -675,20 +535,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 91975cae1b7b29b46ad3ccab45f9efad
m_Address: paotai11031
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 923621881011f3b4eae7c836e048afc9
m_Address: paotai11025
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 9265d731e0440e546bc43128c2f8d975 - m_GUID: 9265d731e0440e546bc43128c2f8d975
m_Address: Assets/MyGame/aa/Game/Turrets/paotai11022.prefab m_Address: Assets/MyGame/aa/Game/Turrets/paotai11022.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -759,13 +605,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 9af3561f85630aa4b8280cee66eeb0a6
m_Address: paotai11017
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 9e05ce7f2fc019f458c55476d32576ec - m_GUID: 9e05ce7f2fc019f458c55476d32576ec
m_Address: Assets/MyGame/aa/Game/Turrets/paotai11021.prefab m_Address: Assets/MyGame/aa/Game/Turrets/paotai11021.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -780,13 +619,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: 9f2fe4d8325b1c54489e87ff0b00f962
m_Address: paotai11026
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: a1a9b7ab7e8ed234fa3c71e80304d0ec - m_GUID: a1a9b7ab7e8ed234fa3c71e80304d0ec
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17045.png m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17045.png
m_ReadOnly: 0 m_ReadOnly: 0
@@ -843,13 +675,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: aa20d1ffa138eb74ebbb2666d215397c
m_Address: paotai11020
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: aa7d3523102354f4cb8290648facf303 - m_GUID: aa7d3523102354f4cb8290648facf303
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang17029.prefab m_Address: Assets/MyGame/aa/Game/ChiBang/chibang17029.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -898,13 +723,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: ae29fff35afc8ab4bb5afbe82d009920
m_Address: paotai11043
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: af52d63dc03d7ed4e909feaf07412d7a - m_GUID: af52d63dc03d7ed4e909feaf07412d7a
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang17030.prefab m_Address: Assets/MyGame/aa/Game/ChiBang/chibang17030.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -933,13 +751,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: b3a4393229be999448ca7aa65d93811b
m_Address: paotai11039
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: b54d2dca67f52504c80dec631f783bdf - m_GUID: b54d2dca67f52504c80dec631f783bdf
m_Address: Assets/MyGame/aa/Game/Turrets/paotai11041.prefab m_Address: Assets/MyGame/aa/Game/Turrets/paotai11041.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -961,13 +772,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: b9e3729cca6ffcb4cb6d4fab51dd7eea
m_Address: paotai11023
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: bbe341fae0eebde4a877ecd56ce2a749 - m_GUID: bbe341fae0eebde4a877ecd56ce2a749
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang17047.prefab m_Address: Assets/MyGame/aa/Game/ChiBang/chibang17047.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -1024,13 +828,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: c38b5ecdda8cb924bb65905500834cc8
m_Address: paotai11013
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: c4e2c42c620e3e34ba25353b9e6391a5 - m_GUID: c4e2c42c620e3e34ba25353b9e6391a5
m_Address: Assets/MyGame/aa/Game/Turrets/paotai11004.prefab m_Address: Assets/MyGame/aa/Game/Turrets/paotai11004.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -1045,20 +842,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: c8f17a53c456a094c925ed6b5d0c5fc3
m_Address: paotai11042
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: ca50562a6437ff645ab9babfbc5ff62b
m_Address: paotai11014
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: ca8e87a020a0a794da39ace6272f6dde - m_GUID: ca8e87a020a0a794da39ace6272f6dde
m_Address: Assets/MyGame/aa/Game/Turrets/paotai11025.prefab m_Address: Assets/MyGame/aa/Game/Turrets/paotai11025.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -1115,27 +898,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: d93de63344587384fb14f3ff45381f28
m_Address: paotai11011
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: d973011aa0edb0d498af4cd25a4321e9
m_Address: paotai11007
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: d9987b80bdec5db4cb5fb7a628569d63
m_Address: paotai11008
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: d9fbfa83d49f2e748aca525ca409e482 - m_GUID: d9fbfa83d49f2e748aca525ca409e482
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17035.png m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17035.png
m_ReadOnly: 0 m_ReadOnly: 0
@@ -1150,13 +912,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: db1e75ab94596fe438c7ccce9e927100
m_Address: paotai11009
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: db5657a4d01fd0e4f808862e9afe54ce - m_GUID: db5657a4d01fd0e4f808862e9afe54ce
m_Address: Assets/MyGame/aa/Game/Turrets/paotai11020.prefab m_Address: Assets/MyGame/aa/Game/Turrets/paotai11020.prefab
m_ReadOnly: 0 m_ReadOnly: 0
@@ -1227,20 +982,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: e5c795ee32b1c6f4da546aa5b6f112ec
m_Address: paotai11010
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: e82167568bd20264a8d958000f831d5b
m_Address: paotai11045
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: e93f4ba58a94580478170c21710a5818 - m_GUID: e93f4ba58a94580478170c21710a5818
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17012.png m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17012.png
m_ReadOnly: 0 m_ReadOnly: 0
@@ -1269,27 +1010,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: f0a59ae3f69ff7b4994056c890bce8e2
m_Address: paotai11002
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: f26a5b78050def843a39dd018a06768a
m_Address: paotai11038
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: f273626ec5b802c448a2b5331af8a980
m_Address: paotai11029
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: f3c68cecf1b289b46a99a3687cd02fed - m_GUID: f3c68cecf1b289b46a99a3687cd02fed
m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17016.png m_Address: Assets/MyGame/aa/Game/ChiBang/chibang/chibang17016.png
m_ReadOnly: 0 m_ReadOnly: 0
@@ -1311,20 +1031,6 @@ MonoBehaviour:
- Default - Default
- PTCBZS - PTCBZS
FlaggedDuringContentUpdateRestriction: 0 FlaggedDuringContentUpdateRestriction: 0
- m_GUID: f9c72cbb6d886e54eab455352d067697
m_Address: paotai11022
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: fbe77e7b89992564fa949297c8e45388
m_Address: paotai11004
m_ReadOnly: 0
m_SerializedLabels:
- Default
- PTCBZS
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: fd46c83304608134492d5cb82cc0aaef - m_GUID: fd46c83304608134492d5cb82cc0aaef
m_Address: Assets/MyGame/aa/Game/Turrets/paotai11007.prefab m_Address: Assets/MyGame/aa/Game/Turrets/paotai11007.prefab
m_ReadOnly: 0 m_ReadOnly: 0
+91 -13
View File
@@ -1429,12 +1429,33 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
currentTurretNumber = turretNumber; currentTurretNumber = turretNumber;
// 从 TurretResourcesData 拿预制体 // ⭐ 散包按需加载:缓存没有时异步取(PT{编号} 标签),完成后实例化
StartCoroutine(LoadTurretRoutine(turretNumber, ++_turretLoadSeq));
}
/// <summary>炮台加载序号(防加载期间再次切换的竞态)</summary>
private int _turretLoadSeq = 0;
/// <summary>炮台异步按需加载协程:AcquireTurretPrefabAsync 完成后实例化(原同步逻辑后半段)</summary>
private IEnumerator LoadTurretRoutine(int turretNumber, int seq)
{
GameObject prefab = TurretResourcesData.GetTurretPrefab(turretNumber); GameObject prefab = TurretResourcesData.GetTurretPrefab(turretNumber);
if (prefab == null) if (prefab == null)
{ {
Debug.LogWarning($"[SitPosData] 炮台预制体未加载: #{turretNumber}"); var task = TurretResourcesData.AcquireTurretPrefabAsync(turretNumber);
return; while (!task.IsCompleted) yield return null;
if (seq != _turretLoadSeq) // 期间又切换了炮台 → 丢弃并归还引用
{
TurretResourcesData.ReleaseTurretPrefab(turretNumber);
yield break;
}
prefab = task.Result;
}
if (prefab == null)
{
TurretResourcesData.ReleaseTurretPrefab(turretNumber);
Debug.LogWarning($"[SitPosData] 炮台预制体未加载: #{turretNumber}(检查 PT{turretNumber} 标签配置)");
yield break;
} }
// 克隆到父节点 // 克隆到父节点
@@ -1451,11 +1472,14 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{ {
Debug.LogError($"[SitPosData] 预制体上未找到 TurretData 组件: #{turretNumber}"); Debug.LogError($"[SitPosData] 预制体上未找到 TurretData 组件: #{turretNumber}");
Destroy(instance); Destroy(instance);
return; yield break;
} }
currentTurret.turretNumber = turretNumber; currentTurret.turretNumber = turretNumber;
// ⭐ 战神装备中判断:异步加载完成后实时读(原方法开头局部变量 zhanShenActive 不能跨协程)
bool zhanShenActive = currentZhanShenData != null;
// 缓存旋转节点:优先用 TurretData.tra_RotationPivot,否则回退父节点 // 缓存旋转节点:优先用 TurretData.tra_RotationPivot,否则回退父节点
tra_CurrTurret = GetTurretRotationPivot(currentTurret); tra_CurrTurret = GetTurretRotationPivot(currentTurret);
@@ -1591,12 +1615,30 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
// 先清理已有翅膀 // 先清理已有翅膀
ClearWing(); ClearWing();
// 从 TurretResourcesData 拿预制体 // ⭐ 散包按需加载(异步):缓存没有时按 PT{编号} 标签取,完成后实例化
StartCoroutine(LoadWingRoutine(turretNumber, ++_turretLoadSeq));
}
/// <summary>翅膀异步按需加载协程(模式同炮台:seq 防竞态)</summary>
private IEnumerator LoadWingRoutine(int turretNumber, int seq)
{
GameObject prefab = TurretResourcesData.GetTurretPrefab(turretNumber); GameObject prefab = TurretResourcesData.GetTurretPrefab(turretNumber);
if (prefab == null) if (prefab == null)
{ {
Debug.LogWarning($"[SitPosData] 翅膀预制体未加载: #{turretNumber}"); var task = TurretResourcesData.AcquireTurretPrefabAsync(turretNumber);
return; while (!task.IsCompleted) yield return null;
if (seq != _turretLoadSeq)
{
TurretResourcesData.ReleaseTurretPrefab(turretNumber);
yield break;
}
prefab = task.Result;
}
if (prefab == null)
{
TurretResourcesData.ReleaseTurretPrefab(turretNumber);
Debug.LogWarning($"[SitPosData] 翅膀预制体未加载: #{turretNumber}(检查 PT{turretNumber} 标签配置)");
yield break;
} }
// 克隆到 wingParent,保持预制体原始位置/旋转/缩放 // 克隆到 wingParent,保持预制体原始位置/旋转/缩放
@@ -1637,20 +1679,52 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
/// (渲染由座位预设的 Camera + RawImage 完成,显示节点挂在 turretRotate 下会跟随瞄准旋转)。 /// (渲染由座位预设的 Camera + RawImage 完成,显示节点挂在 turretRotate 下会跟随瞄准旋转)。
/// ⭐ 炮台/战神显示二选一:加载战神后隐藏 turretParent(仅游戏内,切换面板 UI 不受影响)。 /// ⭐ 炮台/战神显示二选一:加载战神后隐藏 turretParent(仅游戏内,切换面板 UI 不受影响)。
/// </summary> /// </summary>
/// <summary>战神加载序号(防加载期间再次切换的竞态:旧协程完成后丢弃结果)</summary>
private int _zsLoadSeq = 0;
public void LoadZhanShen(int zhanShenNumber) public void LoadZhanShen(int zhanShenNumber)
{ {
// XJMH 模式没有战神概念,直接跳过(和翅膀一致) // XJMH 模式没有战神概念,直接跳过(和翅膀一致)
if (turretControlMode == TurretControlMode.XJMH) return; if (turretControlMode == TurretControlMode.XJMH) return;
// 先清理已有战神(保留预设的 Camera,它是用来渲染战神到 RawImage 的) // ⭐ 切换战神:释放上一个的按需资源引用(别的座位还在用同一个战神则只减计数不卸载)
ClearZhanShenInstance(); int prevNumber = currentZhanShenNumber;
ClearZhanShenInstance(); // 先清理已有战神实例(保留预设的 Camera)
if (prevNumber > 0 && prevNumber != zhanShenNumber)
TurretResourcesData.ReleaseZhanShen(prevNumber, ZhanShenUsage.GamePlay);
// 从 TurretResourcesData 拿游戏内使用的战神预制体 // ⭐ 异步按需加载(不再阻塞主线程):散包模式下战神不预载,这里现取
GameObject prefab = TurretResourcesData.GetZhanShenPrefab(zhanShenNumber, ZhanShenUsage.GamePlay); StartCoroutine(LoadZhanShenRoutine(zhanShenNumber, ++_zsLoadSeq));
}
/// <summary>
/// 战神异步加载协程:等 AcquireZhanShenAsync 完成后实例化。
/// 加载期间座位被销毁 / 又切换了别的战神 → 丢弃本次结果并归还引用。
/// </summary>
private IEnumerator LoadZhanShenRoutine(int zhanShenNumber, int seq)
{
var task = TurretResourcesData.AcquireZhanShenAsync(zhanShenNumber, ZhanShenUsage.GamePlay);
while (!task.IsCompleted)
yield return null;
// 竞态丢弃:期间又切换了战神(seq 变了)→ 归还本次引用
if (seq != _zsLoadSeq)
{
TurretResourcesData.ReleaseZhanShen(zhanShenNumber, ZhanShenUsage.GamePlay);
yield break;
}
GameObject prefab = task.Result;
if (prefab == null) if (prefab == null)
{ {
Debug.LogWarning($"[SitPosData] 战神使用预制体未加载: #{zhanShenNumber}(检查 ZSYX 标签配置)"); // 标签未配置(散包未拆):回退全量字典(启动 PT+ZSYX 加载的)
return; prefab = TurretResourcesData.GetZhanShenPrefab(zhanShenNumber, ZhanShenUsage.GamePlay);
}
if (prefab == null)
{
TurretResourcesData.ReleaseZhanShen(zhanShenNumber, ZhanShenUsage.GamePlay);
Debug.LogWarning($"[SitPosData] 战神使用预制体未加载: #{zhanShenNumber}(检查 ZS{zhanShenNumber}+ZSYX 标签配置)");
yield break;
} }
// 克隆到 zhanShenParent,保持预制体原始位置/旋转/缩放 // 克隆到 zhanShenParent,保持预制体原始位置/旋转/缩放
@@ -1702,7 +1776,11 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
/// <summary>清除战神并恢复普通炮台显示(炮台/战神显示二选一的另一半)</summary> /// <summary>清除战神并恢复普通炮台显示(炮台/战神显示二选一的另一半)</summary>
public void ClearZhanShen() public void ClearZhanShen()
{ {
// ⭐ 卸下战神:释放按需资源引用(归零才真正卸包)
int prevNumber = currentZhanShenNumber;
ClearZhanShenInstance(); ClearZhanShenInstance();
if (prevNumber > 0)
TurretResourcesData.ReleaseZhanShen(prevNumber, ZhanShenUsage.GamePlay);
currentZhanShenNumber = 0; currentZhanShenNumber = 0;
// 恢复普通炮台显示(特殊鱼炮台使用中不显示:等 RestoreTurretVisual 统一恢复) // 恢复普通炮台显示(特殊鱼炮台使用中不显示:等 RestoreTurretVisual 统一恢复)
@@ -5,6 +5,7 @@ using System.Threading.Tasks;
using UnityEngine; using UnityEngine;
using UnityEngine.AddressableAssets; using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.U2D;
using static UnityEngine.AddressableAssets.Addressables; using static UnityEngine.AddressableAssets.Addressables;
/// <summary> /// <summary>
@@ -50,6 +51,156 @@ public class TurretResourcesData
// ---- 保留的 AA Handle(不释放,避免 Build 下资源被卸载)---- // ---- 保留的 AA Handle(不释放,避免 Build 下资源被卸载)----
private static readonly List<AsyncOperationHandle> _loadedHandles = new List<AsyncOperationHandle>(); private static readonly List<AsyncOperationHandle> _loadedHandles = new List<AsyncOperationHandle>();
// ==================== 战神按需加载(散包:用哪个加载哪个) ====================
// 每个战神单独打标签 ZS{编号}(如 ZS14901),展示 prefab = ZS{id}+Default,游戏内 = ZS{id}+ZSYX。
// 战神 prefab 不再带 PTCBZS 标签 → 启动全量加载(PT+Default/PT+ZSYX)不再拉出战神,
// turretchibangzhanshenres 包只剩炮台/翅膀/sprite,战神包按需单独加载。
/// <summary>战神 prefab 缓存:(编号, 用途) → prefab</summary>
private static readonly Dictionary<(int id, ZhanShenUsage usage), GameObject> _zsPrefabCache
= new Dictionary<(int, ZhanShenUsage), GameObject>();
/// <summary>战神加载句柄:(编号, 用途) → handle(卸载用;LoadAssetsAsync 返回 IList 句柄)</summary>
private static readonly Dictionary<(int id, ZhanShenUsage usage), AsyncOperationHandle<IList<GameObject>>> _zsHandles
= new Dictionary<(int, ZhanShenUsage), AsyncOperationHandle<IList<GameObject>>>();
/// <summary>战神引用计数:(编号, 用途) → 使用中的座位/预览数(归零才真正卸载,防止多座位共用误卸)</summary>
private static readonly Dictionary<(int id, ZhanShenUsage usage), int> _zsRefCount
= new Dictionary<(int, ZhanShenUsage), int>();
/// <summary>
/// ⭐ 按需获取单个战神 prefab(异步 + 引用计数)。
/// 用途:进房/换战神(GamePlay)、大厅预览(Display)。
/// 每次调用引用 +1;切换/关闭时配对调用 ReleaseZhanShen(-1),
/// 引用归零才真正卸载战神包 —— 多个座位用同一个战神不会互相误卸。
/// 标签:ZS{编号} + Default(展示)/ZSYX(游戏内) 交集;标签未配置时返回 null
/// (调用方可回退 GetZhanShenPrefab 查全量字典,平滑迁移)。
/// </summary>
public static async Task<GameObject> AcquireZhanShenAsync(int turretNumber, ZhanShenUsage usage)
{
var key = (turretNumber, usage);
_zsRefCount[key] = _zsRefCount.TryGetValue(key, out int c) ? c + 1 : 1;
if (_zsPrefabCache.TryGetValue(key, out var cached)) return cached;
var keys = new List<string> { "ZS" + turretNumber, usage == ZhanShenUsage.GamePlay ? zhanShenGameSubLabel : defaultSubLabel };
var handle = Addressables.LoadAssetsAsync<GameObject>(keys, null, MergeMode.Intersection);
await handle.Task;
if (handle.Status == AsyncOperationStatus.Succeeded && handle.Result != null && handle.Result.Count > 0)
{
// 展示/游戏内同名靠标签区分,交集结果取第一个
_zsPrefabCache[key] = handle.Result[0];
_zsHandles[key] = handle;
return handle.Result[0];
}
// 加载失败(标签未配置等):归还引用计数,不缓存句柄
if (handle.IsValid()) Addressables.Release(handle);
_zsRefCount[key] = c; // 还原为进入时的值
if (_zsRefCount[key] <= 0) _zsRefCount.Remove(key);
return null;
}
/// <summary>
/// ⭐ 按需获取炮台/翅膀 prefab(异步 + 引用计数,标签 PT{编号},如 PT11001)。
/// 散包模式下启动不再全量加载 prefab,座位装炮台/大厅预览时按需取。
/// 与 ReleaseTurretPrefab 配对(切换/关闭时 -1,归零卸包)。
/// </summary>
public static async Task<GameObject> AcquireTurretPrefabAsync(int turretNumber)
{
_ptRefCount[turretNumber] = _ptRefCount.TryGetValue(turretNumber, out int c) ? c + 1 : 1;
if (_ptPrefabCache.TryGetValue(turretNumber, out var cached)) return cached;
var handle = Addressables.LoadAssetsAsync<GameObject>(new List<string> { "PT" + turretNumber }, null, MergeMode.Intersection);
await handle.Task;
if (handle.Status == AsyncOperationStatus.Succeeded && handle.Result != null && handle.Result.Count > 0)
{
_ptPrefabCache[turretNumber] = handle.Result[0];
_ptHandles[turretNumber] = handle;
return handle.Result[0];
}
if (handle.IsValid()) Addressables.Release(handle);
_ptRefCount[turretNumber] = c;
if (_ptRefCount[turretNumber] <= 0) _ptRefCount.Remove(turretNumber);
return null;
}
/// <summary>释放炮台/翅膀 prefab 引用(与 AcquireTurretPrefabAsync 配对,归零卸包)</summary>
public static void ReleaseTurretPrefab(int turretNumber)
{
if (!_ptRefCount.TryGetValue(turretNumber, out int c) || c <= 0) return;
if (c > 1) { _ptRefCount[turretNumber] = c - 1; return; }
_ptRefCount.Remove(turretNumber);
if (_ptHandles.TryGetValue(turretNumber, out var h) && h.IsValid())
Addressables.Release(h);
_ptHandles.Remove(turretNumber);
_ptPrefabCache.Remove(turretNumber);
}
/// <summary>按需缓存:炮台/翅膀 prefab(PT{编号} 标签)</summary>
private static readonly Dictionary<int, GameObject> _ptPrefabCache = new Dictionary<int, GameObject>();
private static readonly Dictionary<int, AsyncOperationHandle<IList<GameObject>>> _ptHandles = new Dictionary<int, AsyncOperationHandle<IList<GameObject>>>();
private static readonly Dictionary<int, int> _ptRefCount = new Dictionary<int, int>();
/// <summary>
/// 强制卸载按需加载的炮台/翅膀 prefab(离房时调用,忽略引用计数)。
/// </summary>
public static void UnloadAllTurretPrefabs()
{
var keys = new List<int>(_ptHandles.Keys);
foreach (var k in keys)
{
if (_ptHandles[k].IsValid())
Addressables.Release(_ptHandles[k]);
}
_ptHandles.Clear();
_ptPrefabCache.Clear();
_ptRefCount.Clear();
if (keys.Count > 0)
Debug.Log($"[TurretResourcesData] 卸载炮台/翅膀按需 prefab {keys.Count} 项");
}
/// <summary>
/// 释放战神引用(切换战神/关闭预览时调用,与 AcquireZhanShenAsync 配对)。
/// 引用归零才真正卸载包;标签未配置走全量回退时此调用无害(没有计数项直接跳过)。
/// </summary>
public static void ReleaseZhanShen(int turretNumber, ZhanShenUsage usage)
{
var key = (turretNumber, usage);
if (!_zsRefCount.TryGetValue(key, out int c) || c <= 0) return;
if (c > 1)
{
_zsRefCount[key] = c - 1;
return;
}
// 归零:真正卸载
_zsRefCount.Remove(key);
if (_zsHandles.TryGetValue(key, out var h) && h.IsValid())
Addressables.Release(h);
_zsHandles.Remove(key);
_zsPrefabCache.Remove(key);
}
/// <summary>
/// 强制卸载按需加载的战神资源(离房时清游戏内的;面板关闭可清展示的)。
/// usage 传 null 清全部。忽略引用计数(离房场景所有引用者都已销毁)。
/// </summary>
public static void UnloadAllZhanShen(ZhanShenUsage? usage = null)
{
var toRemove = new List<(int, ZhanShenUsage)>();
foreach (var kv in _zsHandles)
{
if (usage == null || kv.Key.usage == usage.Value)
toRemove.Add(kv.Key);
}
foreach (var k in toRemove)
{
if (_zsHandles[k].IsValid())
Addressables.Release(_zsHandles[k]);
_zsHandles.Remove(k);
_zsPrefabCache.Remove(k);
_zsRefCount.Remove(k);
}
if (toRemove.Count > 0)
Debug.Log($"[TurretResourcesData] 卸载战神按需资源 {toRemove.Count} 项(usage={usage?.ToString() ?? "全部"})");
}
static TurretResourcesData() static TurretResourcesData()
{ {
Init(); Init();
@@ -147,54 +298,58 @@ public class TurretResourcesData
Addressables.Release(zsDepHandle); Addressables.Release(zsDepHandle);
Debug.Log("[TurretResourcesData] 战神游戏内依赖资源预下载完成!"); Debug.Log("[TurretResourcesData] 战神游戏内依赖资源预下载完成!");
// ---- 加载炮台 Prefab(展示用)---- // ⭐ 散包模式:炮台/翅膀/战神的 prefab 不再启动全量加载(每个资源一个小包,
var prefabHandle = Addressables.LoadAssetsAsync<GameObject>(labels, prefab => // 全量会把上百个散包全部拉起 —— 刚登录 194 个包的根源)。
{ // prefab 全部按需:炮台/翅膀走 AcquireTurretPrefabAsync(PT{编号} 标签),
if (turretPrefabPathDic.TryGetValue(prefab.name, out int id)) // 战神走 AcquireZhanShenAsync(ZS{编号}+Default/ZSYX 标签)。
{ // 启动只加载列表小图 Sprite(若 Sprite 与 prefab 同包仍会拉起散包,
turretPrefabDic[id] = prefab; // 应把列表小图合入图集 —— 见 SpriteAtlasBuilderWindow 工具)。
Debug.Log($"[TurretResourcesData] 加载 Prefab: {prefab.name} (ID={id})");
}
}, MergeMode.Intersection);
await prefabHandle.Task; // ---- 加载炮台 Sprite(列表图标,全量保留)----
// 不释放!保留 Handle 以保持资源存活
_loadedHandles.Add(prefabHandle);
Debug.Log($"[TurretResourcesData] 炮台 Prefab 加载完成,共 {turretPrefabDic.Count} 个");
// ---- 加载战神游戏内 Prefab(ZSYX 子标签;与展示同名,靠标签区分)----
var zsPrefabHandle = Addressables.LoadAssetsAsync<GameObject>(zsGameLabels, prefab =>
{
if (turretPrefabPathDic.TryGetValue(prefab.name, out int id)
&& turretDataDic.TryGetValue(id, out var data)
&& data.turretType == 2) // 只收战神(turretType==2)的游戏内使用预制体
{
turretGamePrefabDic[id] = prefab;
Debug.Log($"[TurretResourcesData] 加载战神游戏内 Prefab: {prefab.name} (ID={id})");
}
}, MergeMode.Intersection);
await zsPrefabHandle.Task;
// 不释放!保留 Handle 以保持资源存活
_loadedHandles.Add(zsPrefabHandle);
Debug.Log($"[TurretResourcesData] 战神游戏内 Prefab 加载完成,共 {turretGamePrefabDic.Count} 个");
// ---- 加载炮台 Sprite ----
var spriteHandle = Addressables.LoadAssetsAsync<Sprite>(labels, data => var spriteHandle = Addressables.LoadAssetsAsync<Sprite>(labels, data =>
{ {
if (turretSpritePathDic.TryGetValue(data.name, out int id)) if (turretSpritePathDic.TryGetValue(data.name, out int id))
{ {
turretSpriteDic[id] = data; turretSpriteDic[id] = data;
Debug.Log($"[TurretResourcesData] 加载 Sprite: {data.name} (ID={id})");
} }
}, MergeMode.Intersection); }, MergeMode.Intersection);
await spriteHandle.Task; await spriteHandle.Task;
// 不释放!保留 Handle 以保持资源存活 // 不释放!保留 Handle 以保持资源存活
_loadedHandles.Add(spriteHandle); _loadedHandles.Add(spriteHandle);
Debug.Log($"[TurretResourcesData] 炮台 Sprite 加载完成,共 {turretSpriteDic.Count} 个");
Debug.Log("[TurretResourcesData] 所有炮台资源加载完毕!"); // ⭐ 图集兜底:列表小图已合入 SpriteAtlas 且 sprite 从组里移除(标签查不到)时,
// 按图集标签 "TurretAtlas" 加载图集,用 GetSprite(名) 填表。
// (图集方式下 sprite 仍在图集里保留原名 = prefabTurretResourcesPath)
if (turretSpriteDic.Count == 0)
{
try
{
var atlasHandle = Addressables.LoadAssetsAsync<SpriteAtlas>("TurretAtlas", null);
await atlasHandle.Task;
if (atlasHandle.Status == AsyncOperationStatus.Succeeded
&& atlasHandle.Result != null && atlasHandle.Result.Count > 0)
{
var atlas = atlasHandle.Result[0];
foreach (var kv in turretSpritePathDic)
{
var sp = atlas.GetSprite(kv.Key);
if (sp != null)
turretSpriteDic[kv.Value] = sp;
}
_loadedHandles.Add(atlasHandle);
Debug.Log($"[TurretResourcesData] 图集方式加载 Sprite 完成,共 {turretSpriteDic.Count} 个(来自 {atlas.name})");
}
}
catch (Exception e)
{
Debug.LogWarning($"[TurretResourcesData] 图集兜底加载失败(未找到 TurretAtlas 标签的图集?): {e.Message}");
}
}
else
{
Debug.Log($"[TurretResourcesData] 炮台 Sprite 加载完成,共 {turretSpriteDic.Count} 个(prefab 已改按需加载)");
}
} }
/// <summary> /// <summary>
@@ -229,22 +384,28 @@ public class TurretResourcesData
return turretDataDic != null && turretDataDic.TryGetValue(turretNumber, out var data) ? data : null; return turretDataDic != null && turretDataDic.TryGetValue(turretNumber, out var data) ? data : null;
} }
/// <summary>根据 ID 获取炮台 Prefab。</summary> /// <summary>根据 ID 获取炮台 Prefab。⭐ 优先查按需缓存(PT{编号} 标签),回退全量字典(已不再填充,恒空)。</summary>
public static GameObject GetTurretPrefab(int turretNumber) public static GameObject GetTurretPrefab(int turretNumber)
{ {
return turretPrefabDic != null && turretPrefabDic.TryGetValue(turretNumber, out var prefab) ? prefab : null; if (_ptPrefabCache.TryGetValue(turretNumber, out var prefab)) return prefab;
return turretPrefabDic != null && turretPrefabDic.TryGetValue(turretNumber, out var fullLoad) ? fullLoad : null;
} }
/// <summary> /// <summary>
/// 根据战神编号获取战神预制体(两种情况二选一)。 /// 根据战神编号获取战神预制体(两种情况二选一)。
/// - Display:展示用(大厅/商城预览,与 GetTurretPrefab 返回同一个展示模型); /// - Display:展示用(大厅/商城预览,与 GetTurretPrefab 返回同一个展示模型);
/// - GamePlay:游戏内用(座位上替代普通炮台的使用模型)。 /// - GamePlay:游戏内用(座位上替代普通炮台的使用模型)。
/// 未加载、非战神或未配置使用预制体时返回 null。 /// ⭐ 优先查按需加载缓存(散包);未加载时回退全量加载的字典(标签未拆时的平滑迁移)。
/// </summary> /// </summary>
public static GameObject GetZhanShenPrefab(int turretNumber, ZhanShenUsage usage = ZhanShenUsage.Display) public static GameObject GetZhanShenPrefab(int turretNumber, ZhanShenUsage usage = ZhanShenUsage.Display)
{ {
// 按需缓存优先
if (_zsPrefabCache.TryGetValue((turretNumber, usage), out var prefab))
return prefab;
// 回退:全量加载的字典(战神 prefab 未去 PTCBZS 标签时仍会被启动全量加载进来)
var dic = usage == ZhanShenUsage.GamePlay ? turretGamePrefabDic : turretPrefabDic; var dic = usage == ZhanShenUsage.GamePlay ? turretGamePrefabDic : turretPrefabDic;
return dic != null && dic.TryGetValue(turretNumber, out var prefab) ? prefab : null; return dic != null && dic.TryGetValue(turretNumber, out var fullLoad) ? fullLoad : null;
} }
/// <summary>根据 ID 获取炮台 Sprite。</summary> /// <summary>根据 ID 获取炮台 Sprite。</summary>

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

@@ -0,0 +1,115 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!687078895 &4343727234628468602
SpriteAtlas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: PaoTaiSprite
m_EditorData:
serializedVersion: 2
textureSettings:
serializedVersion: 2
anisoLevel: 1
compressionQuality: 50
maxTextureSize: 2048
textureCompression: 0
filterMode: 1
generateMipMaps: 0
readable: 0
crunchedCompression: 0
sRGB: 1
platformSettings:
- serializedVersion: 3
m_BuildTarget: Android
m_MaxTextureSize: 1024
m_ResizeAlgorithm: 0
m_TextureFormat: 50
m_TextureCompression: 1
m_CompressionQuality: 50
m_CrunchedCompression: 0
m_AllowsAlphaSplitting: 0
m_Overridden: 1
m_IgnorePlatformSupport: 0
m_AndroidETC2FallbackOverride: 0
m_ForceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
m_BuildTarget: iPhone
m_MaxTextureSize: 1024
m_ResizeAlgorithm: 0
m_TextureFormat: 50
m_TextureCompression: 1
m_CompressionQuality: 50
m_CrunchedCompression: 0
m_AllowsAlphaSplitting: 0
m_Overridden: 1
m_IgnorePlatformSupport: 0
m_AndroidETC2FallbackOverride: 0
m_ForceMaximumCompressionQuality_BC6H_BC7: 0
packingSettings:
serializedVersion: 2
padding: 4
blockOffset: 1
allowAlphaSplitting: 0
enableRotation: 1
enableTightPacking: 1
enableAlphaDilation: 0
secondaryTextureSettings: {}
variantMultiplier: 1
packables:
- {fileID: 2800000, guid: 5bc7ee217f99ebd459216f2c08311bbc, type: 3}
- {fileID: 2800000, guid: f0a59ae3f69ff7b4994056c890bce8e2, type: 3}
- {fileID: 2800000, guid: 8e864412df60c9648b8ab2c6837dc2c6, type: 3}
- {fileID: 2800000, guid: fbe77e7b89992564fa949297c8e45388, type: 3}
- {fileID: 2800000, guid: 0233946f0c4584846aa517b3c3fd44c3, type: 3}
- {fileID: 2800000, guid: 2890b76ba375ba948a73f1058220edaa, type: 3}
- {fileID: 2800000, guid: d973011aa0edb0d498af4cd25a4321e9, type: 3}
- {fileID: 2800000, guid: d9987b80bdec5db4cb5fb7a628569d63, type: 3}
- {fileID: 2800000, guid: db1e75ab94596fe438c7ccce9e927100, type: 3}
- {fileID: 2800000, guid: e5c795ee32b1c6f4da546aa5b6f112ec, type: 3}
- {fileID: 2800000, guid: d93de63344587384fb14f3ff45381f28, type: 3}
- {fileID: 2800000, guid: 879078866c383ec418496cebbf48d63d, type: 3}
- {fileID: 2800000, guid: c38b5ecdda8cb924bb65905500834cc8, type: 3}
- {fileID: 2800000, guid: ca50562a6437ff645ab9babfbc5ff62b, type: 3}
- {fileID: 2800000, guid: 46a32cd561da5b443b80feaafb4e4f06, type: 3}
- {fileID: 2800000, guid: 63d3cb139a0c40043aab063639266e72, type: 3}
- {fileID: 2800000, guid: 9af3561f85630aa4b8280cee66eeb0a6, type: 3}
- {fileID: 2800000, guid: 098d43abfc1006e44acbd9822deb09bb, type: 3}
- {fileID: 2800000, guid: 270274fc851bfcd4b83a3a48cfd58924, type: 3}
- {fileID: 2800000, guid: aa20d1ffa138eb74ebbb2666d215397c, type: 3}
- {fileID: 2800000, guid: 2fef7572fe9392d48b4fa8040029859c, type: 3}
- {fileID: 2800000, guid: f9c72cbb6d886e54eab455352d067697, type: 3}
- {fileID: 2800000, guid: b9e3729cca6ffcb4cb6d4fab51dd7eea, type: 3}
- {fileID: 2800000, guid: 82dedb83fc04a5c45b3bd01ed2d6d64a, type: 3}
- {fileID: 2800000, guid: 923621881011f3b4eae7c836e048afc9, type: 3}
- {fileID: 2800000, guid: 9f2fe4d8325b1c54489e87ff0b00f962, type: 3}
- {fileID: 2800000, guid: 598795f8ee8efe945b21525d42cecc14, type: 3}
- {fileID: 2800000, guid: 58d6c583854d4a94bb0aaf4cf305072b, type: 3}
- {fileID: 2800000, guid: f273626ec5b802c448a2b5331af8a980, type: 3}
- {fileID: 2800000, guid: 8dc0814926948af45ac390a6a1e36613, type: 3}
- {fileID: 2800000, guid: 91975cae1b7b29b46ad3ccab45f9efad, type: 3}
- {fileID: 2800000, guid: 894fce34a8f961c4385fa03e267e6009, type: 3}
- {fileID: 2800000, guid: 16c009b483e78364ca859c3be882bc42, type: 3}
- {fileID: 2800000, guid: 15ed386cee52ebc439d2290ba9c612da, type: 3}
- {fileID: 2800000, guid: 64508e66cdd421e42b0422d7ee49ed1c, type: 3}
- {fileID: 2800000, guid: 72196431bdb830542be0fb94f40011ae, type: 3}
- {fileID: 2800000, guid: 5bec01646b74aec4895fbd83494ed19f, type: 3}
- {fileID: 2800000, guid: f26a5b78050def843a39dd018a06768a, type: 3}
- {fileID: 2800000, guid: b3a4393229be999448ca7aa65d93811b, type: 3}
- {fileID: 2800000, guid: 799389f1fc628394cb8d5030967d2535, type: 3}
- {fileID: 2800000, guid: 7155c77aef0a7aa4b9aee91968db0c60, type: 3}
- {fileID: 2800000, guid: c8f17a53c456a094c925ed6b5d0c5fc3, type: 3}
- {fileID: 2800000, guid: ae29fff35afc8ab4bb5afbe82d009920, type: 3}
- {fileID: 2800000, guid: 756d775cf03c4fb4f8d7cb3654fc79e7, type: 3}
- {fileID: 2800000, guid: e82167568bd20264a8d958000f831d5b, type: 3}
bindAsDefault: 1
isAtlasV2: 0
cachedData: {fileID: 0}
packedSpriteRenderDataKeys: []
m_MasterAtlas: {fileID: 0}
m_PackedSprites: []
m_PackedSpriteNamesToIndex: []
m_RenderDataMap: {}
m_Tag: PaoTaiSprite
m_IsVariant: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0508b432151cafb488105a9c157dad8d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4343727234628468602
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,76 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!687078895 &4343727234628468602
SpriteAtlas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ZhanShenSprite
m_EditorData:
serializedVersion: 2
textureSettings:
serializedVersion: 2
anisoLevel: 1
compressionQuality: 50
maxTextureSize: 2048
textureCompression: 0
filterMode: 1
generateMipMaps: 0
readable: 0
crunchedCompression: 0
sRGB: 1
platformSettings:
- serializedVersion: 3
m_BuildTarget: Android
m_MaxTextureSize: 2048
m_ResizeAlgorithm: 0
m_TextureFormat: 50
m_TextureCompression: 1
m_CompressionQuality: 50
m_CrunchedCompression: 0
m_AllowsAlphaSplitting: 0
m_Overridden: 1
m_IgnorePlatformSupport: 0
m_AndroidETC2FallbackOverride: 0
m_ForceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
m_BuildTarget: iPhone
m_MaxTextureSize: 2048
m_ResizeAlgorithm: 0
m_TextureFormat: 50
m_TextureCompression: 1
m_CompressionQuality: 50
m_CrunchedCompression: 0
m_AllowsAlphaSplitting: 0
m_Overridden: 1
m_IgnorePlatformSupport: 0
m_AndroidETC2FallbackOverride: 0
m_ForceMaximumCompressionQuality_BC6H_BC7: 0
packingSettings:
serializedVersion: 2
padding: 4
blockOffset: 1
allowAlphaSplitting: 0
enableRotation: 1
enableTightPacking: 1
enableAlphaDilation: 0
secondaryTextureSettings: {}
variantMultiplier: 1
packables:
- {fileID: 2800000, guid: 7567a70f6ccea3b45b705973b24c0832, type: 3}
- {fileID: 2800000, guid: 71c9749eb6ba3fc47bb2edca35a9a31b, type: 3}
- {fileID: 2800000, guid: 16ab7a0b63cd4634da7050e12dc6b53e, type: 3}
- {fileID: 2800000, guid: 11856430d23b062489300a32ed378b37, type: 3}
- {fileID: 2800000, guid: e3465109cd9a7dc4ab52c0c25127c927, type: 3}
- {fileID: 2800000, guid: f0277d5948835d94bae3af07480375d6, type: 3}
bindAsDefault: 1
isAtlasV2: 0
cachedData: {fileID: 0}
packedSpriteRenderDataKeys: []
m_MasterAtlas: {fileID: 0}
m_PackedSprites: []
m_PackedSpriteNamesToIndex: []
m_RenderDataMap: {}
m_Tag: ZhanLing 1
m_IsVariant: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 72008a1238b2b5f48b76ec9f8bb16892
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4343727234628468602
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,116 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!687078895 &4343727234628468602
SpriteAtlas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: chibangSprite
m_EditorData:
serializedVersion: 2
textureSettings:
serializedVersion: 2
anisoLevel: 1
compressionQuality: 50
maxTextureSize: 2048
textureCompression: 0
filterMode: 1
generateMipMaps: 0
readable: 0
crunchedCompression: 0
sRGB: 1
platformSettings:
- serializedVersion: 3
m_BuildTarget: Android
m_MaxTextureSize: 1024
m_ResizeAlgorithm: 0
m_TextureFormat: 50
m_TextureCompression: 1
m_CompressionQuality: 50
m_CrunchedCompression: 0
m_AllowsAlphaSplitting: 0
m_Overridden: 1
m_IgnorePlatformSupport: 0
m_AndroidETC2FallbackOverride: 0
m_ForceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
m_BuildTarget: iPhone
m_MaxTextureSize: 1024
m_ResizeAlgorithm: 0
m_TextureFormat: 50
m_TextureCompression: 1
m_CompressionQuality: 50
m_CrunchedCompression: 0
m_AllowsAlphaSplitting: 0
m_Overridden: 1
m_IgnorePlatformSupport: 0
m_AndroidETC2FallbackOverride: 0
m_ForceMaximumCompressionQuality_BC6H_BC7: 0
packingSettings:
serializedVersion: 2
padding: 4
blockOffset: 1
allowAlphaSplitting: 0
enableRotation: 1
enableTightPacking: 1
enableAlphaDilation: 0
secondaryTextureSettings: {}
variantMultiplier: 1
packables:
- {fileID: 2800000, guid: 863c088e99429f344869e04b240b23d3, type: 3}
- {fileID: 2800000, guid: 9a9db9608a2c5c643bb11a5b81643a1e, type: 3}
- {fileID: 2800000, guid: 43503eff704b97d41ac25c28a3e88881, type: 3}
- {fileID: 2800000, guid: 3d6a02b558c7d1649bc126514a9e65f8, type: 3}
- {fileID: 2800000, guid: 03de765eedf0f1247887cf2e9a4daf35, type: 3}
- {fileID: 2800000, guid: ee5817ea14648ae42be707fe28b60b5c, type: 3}
- {fileID: 2800000, guid: a679ef26467ed774d8a9ba9eebfd4036, type: 3}
- {fileID: 2800000, guid: 8ea133904ecd05e47a71995fa7efcdc8, type: 3}
- {fileID: 2800000, guid: 59ff990509b91d742a1c5942343c87c3, type: 3}
- {fileID: 2800000, guid: 8b968e74f973daf4798f855ab146786b, type: 3}
- {fileID: 2800000, guid: e0f7145448cd3ec42a5d0843cc075684, type: 3}
- {fileID: 2800000, guid: e93f4ba58a94580478170c21710a5818, type: 3}
- {fileID: 2800000, guid: 63dadb73d8560bd4f928125809742234, type: 3}
- {fileID: 2800000, guid: 348d8e5f8160ffd47937310c7ead66bb, type: 3}
- {fileID: 2800000, guid: 2a06ddc2b6df9454b9b5c8d39117a75b, type: 3}
- {fileID: 2800000, guid: f3c68cecf1b289b46a99a3687cd02fed, type: 3}
- {fileID: 2800000, guid: 7c3f4b08bdbaf2540b7baf15c749dd8d, type: 3}
- {fileID: 2800000, guid: 7c484709abee44345944dc68126b711c, type: 3}
- {fileID: 2800000, guid: b0eb338d047310243b4dad1c593386f4, type: 3}
- {fileID: 2800000, guid: 5b04fff8d2b56b34981172ccdce49f3b, type: 3}
- {fileID: 2800000, guid: 46867c8c51cf56640b5a0337c9777036, type: 3}
- {fileID: 2800000, guid: 880e680de116b4d4d8fac3a31f99f985, type: 3}
- {fileID: 2800000, guid: 26d0bee55e9a6054f828b26b76f5c5ef, type: 3}
- {fileID: 2800000, guid: e165363b79759074b9cdb3a253341704, type: 3}
- {fileID: 2800000, guid: 627cf4a5663098a40ba348946f68baaf, type: 3}
- {fileID: 2800000, guid: 93cf1663d5965bf4d80cf672d0876bc1, type: 3}
- {fileID: 2800000, guid: dd9459c351017174da2da6bef012e33d, type: 3}
- {fileID: 2800000, guid: 9274b7593e675454c9644377822df3c8, type: 3}
- {fileID: 2800000, guid: c53b74d40436cac4db8899d0959f5d35, type: 3}
- {fileID: 2800000, guid: 996a29fe8f89d284e8b9614d842f3ed1, type: 3}
- {fileID: 2800000, guid: 959863a11fd21034bb40d77e59476fcb, type: 3}
- {fileID: 2800000, guid: d67909e63b1fede43a61aeb16e1a80d9, type: 3}
- {fileID: 2800000, guid: 171c124c1d6ab2941b0f8823fa60d526, type: 3}
- {fileID: 2800000, guid: 621503d5230c4b24fa0b14210443337a, type: 3}
- {fileID: 2800000, guid: d9fbfa83d49f2e748aca525ca409e482, type: 3}
- {fileID: 2800000, guid: b0c2f3bd5eff64141adb44d30c7f1bf0, type: 3}
- {fileID: 2800000, guid: ab9dc349303dacd40baedf099a9aa5de, type: 3}
- {fileID: 2800000, guid: c14bf38721dbb154190e83c4a764a1db, type: 3}
- {fileID: 2800000, guid: bdf809b5cc15f2c43afbb82e6ce47649, type: 3}
- {fileID: 2800000, guid: 1ec5bcf9142fcc542a2963649b135804, type: 3}
- {fileID: 2800000, guid: ce9d6c8fffba38b4194b4e4694ec0870, type: 3}
- {fileID: 2800000, guid: aad8eaf3562feb1408ae3b38e3376f4d, type: 3}
- {fileID: 2800000, guid: 32cdf55c95b4c134da0350097872df65, type: 3}
- {fileID: 2800000, guid: 86e712b881109e548be6fe63a7ad9fb1, type: 3}
- {fileID: 2800000, guid: a1a9b7ab7e8ed234fa3c71e80304d0ec, type: 3}
- {fileID: 2800000, guid: 364821d288eed2f4d98173e9b0204eca, type: 3}
bindAsDefault: 1
isAtlasV2: 0
cachedData: {fileID: 0}
packedSpriteRenderDataKeys: []
m_MasterAtlas: {fileID: 0}
m_PackedSprites: []
m_PackedSpriteNamesToIndex: []
m_RenderDataMap: {}
m_Tag: chibangSprite
m_IsVariant: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0866d7cf8d02e054098a519554ef8a43
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4343727234628468602
userData:
assetBundleName:
assetBundleVariant:
@@ -1396,6 +1396,8 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
await AudioResourcesData.UnLoadAudioGame(); await AudioResourcesData.UnLoadAudioGame();
if (flow != _resourceFlowToken) return; if (flow != _resourceFlowToken) return;
UnLoadBulletClip(); // ⭐ 释放开火音效句柄(引用计数归零) UnLoadBulletClip(); // ⭐ 释放开火音效句柄(引用计数归零)
TurretResourcesData.UnloadAllZhanShen(ZhanShenUsage.GamePlay); // ⭐ 卸载按需加载的战神(游戏内)
TurretResourcesData.UnloadAllTurretPrefabs(); // ⭐ 卸载按需加载的炮台/翅膀 prefab
await MonsterMoveLine.UnLoadBezier(); await MonsterMoveLine.UnLoadBezier();
if (flow != _resourceFlowToken) return; if (flow != _resourceFlowToken) return;
// ⭐ 清空子弹池 + 特效池(鱼池已在 UnLoadFishAssetsData 内清理) // ⭐ 清空子弹池 + 特效池(鱼池已在 UnLoadFishAssetsData 内清理)
@@ -1445,6 +1447,8 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
await FishResourcesData.UnLoadFishAssetsData(); await FishResourcesData.UnLoadFishAssetsData();
await AudioResourcesData.UnLoadAudioGame(); await AudioResourcesData.UnLoadAudioGame();
UnLoadBulletClip(); UnLoadBulletClip();
TurretResourcesData.UnloadAllZhanShen(ZhanShenUsage.GamePlay);
TurretResourcesData.UnloadAllTurretPrefabs();
await MonsterMoveLine.UnLoadBezier(); await MonsterMoveLine.UnLoadBezier();
Debug.Log("[ChangeRoom] 切房失败,游戏资源已补卸载"); Debug.Log("[ChangeRoom] 切房失败,游戏资源已补卸载");
} }
@@ -1530,6 +1534,8 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
SetUnloadProgress(0.4f); SetUnloadProgress(0.4f);
await AudioResourcesData.UnLoadAudioGame(); await AudioResourcesData.UnLoadAudioGame();
UnLoadBulletClip(); // ⭐ 释放开火音效句柄(引用计数归零) UnLoadBulletClip(); // ⭐ 释放开火音效句柄(引用计数归零)
TurretResourcesData.UnloadAllZhanShen(ZhanShenUsage.GamePlay); // ⭐ 卸载按需加载的战神(游戏内)
TurretResourcesData.UnloadAllTurretPrefabs(); // ⭐ 卸载按需加载的炮台/翅膀 prefab
SetUnloadProgress(0.6f); SetUnloadProgress(0.6f);
await MonsterMoveLine.UnLoadBezier(); await MonsterMoveLine.UnLoadBezier();
@@ -1,4 +1,5 @@
using System; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -464,6 +465,7 @@ public class UIHome_BY_ItemListPanels : SubUIBase
private void ClearItemList() private void ClearItemList()
{ {
ReleasePreviewAcquired(); // ⭐ 切列表/关面板:释放当前预览的按需资源
foreach (var toggle in _instantiatedToggles) foreach (var toggle in _instantiatedToggles)
{ {
if (toggle != null) if (toggle != null)
@@ -659,6 +661,7 @@ public class UIHome_BY_ItemListPanels : SubUIBase
private void ClearZhanShenItemList() private void ClearZhanShenItemList()
{ {
ReleasePreviewAcquired(); // ⭐ 切列表/关面板:释放当前预览的按需资源
foreach (var toggle in _instantiatedZSItemToggles) foreach (var toggle in _instantiatedZSItemToggles)
{ {
if (toggle != null) if (toggle != null)
@@ -725,12 +728,8 @@ public class UIHome_BY_ItemListPanels : SubUIBase
if (rawImg_DetailPreview != null) if (rawImg_DetailPreview != null)
rawImg_DetailPreview.gameObject.SetActive(true); rawImg_DetailPreview.gameObject.SetActive(true);
// ---- 预览(和翅膀一样实例化预制体到预览区)---- // ---- 预览(⭐按需加载:点哪个战神加载哪个,切走自动释放上一个)----
if (resData != null && previewParent != null && prefab != null) ShowPreviewOnDemand(turretNumber, true);
{
_currentPreviewObj = Instantiate(prefab, previewParent);
_currentPreviewObj.SetActive(true);
}
} }
// ==================== 战神选择按钮 ==================== // ==================== 战神选择按钮 ====================
@@ -994,14 +993,12 @@ public class UIHome_BY_ItemListPanels : SubUIBase
rawImg_DetailPreview.gameObject.SetActive(_currentSelectType != ItemPanelSelect.Turrect); rawImg_DetailPreview.gameObject.SetActive(_currentSelectType != ItemPanelSelect.Turrect);
// ---- 预览 ---- // ---- 预览 ----
if (resData != null && previewParent != null && prefab != null) // ---- 预览(⭐按需加载:点哪个加载哪个,切走自动释放上一个)----
ShowPreviewOnDemand(turretNumber, false, obj =>
{ {
_currentPreviewObj = Instantiate(prefab, previewParent); if (obj != null && _currentSelectType == ItemPanelSelect.Turrect)
_currentPreviewObj.SetActive(true);
if (_currentSelectType == ItemPanelSelect.Turrect)
{ {
var rt = _currentPreviewObj.GetComponent<RectTransform>(); var rt = obj.GetComponent<RectTransform>();
if (rt != null) if (rt != null)
{ {
rt.anchorMin = new Vector2(0.5f, 0f); rt.anchorMin = new Vector2(0.5f, 0f);
@@ -1010,7 +1007,7 @@ public class UIHome_BY_ItemListPanels : SubUIBase
rt.localScale = Vector3.one * 2.5f; rt.localScale = Vector3.one * 2.5f;
} }
} }
} });
} }
/// <summary>清除预览区当前展示的实例。</summary> /// <summary>清除预览区当前展示的实例。</summary>
@@ -1023,6 +1020,71 @@ public class UIHome_BY_ItemListPanels : SubUIBase
} }
} }
// ==================== 预览按需加载(点哪个加载哪个,切走释放上一个) ====================
private int _previewSeq = 0;
/// <summary>当前预览已 Acquire 的编号(切走时释放)</summary>
private int _previewAcquiredId = 0;
private bool _previewAcquiredIsZS = false;
/// <summary>
/// ⭐ 按需加载并显示预览模型:释放上一个的按需引用 → 异步获取当前 → 实例化。
/// 战神走 ZS{编号}+Display 标签,炮台/翅膀走 PT{编号} 标签。
/// 快速连续点击由 seq 竞态丢弃(只显示最后点的那一个)。
/// onLoaded:实例化后的回调(炮台预览的 RectTransform 特殊处理等)。
/// </summary>
private void ShowPreviewOnDemand(int turretNumber, bool isZhanShen, System.Action<GameObject> onLoaded = null)
{
StartCoroutine(ShowPreviewRoutine(turretNumber, isZhanShen, onLoaded, ++_previewSeq));
}
private IEnumerator ShowPreviewRoutine(int turretNumber, bool isZhanShen, System.Action<GameObject> onLoaded, int seq)
{
// 释放上一个预览的按需引用(归零卸包 → 内存里同时只有一个预览资源)
ReleasePreviewAcquired();
if (turretNumber <= 0 || previewParent == null)
{
ClearPreview();
onLoaded?.Invoke(null);
yield break;
}
var task = isZhanShen
? TurretResourcesData.AcquireZhanShenAsync(turretNumber, ZhanShenUsage.Display)
: TurretResourcesData.AcquireTurretPrefabAsync(turretNumber);
while (!task.IsCompleted)
yield return null;
// 期间又点了别的 → 丢弃本次并归还引用
if (seq != _previewSeq)
{
if (isZhanShen) TurretResourcesData.ReleaseZhanShen(turretNumber, ZhanShenUsage.Display);
else TurretResourcesData.ReleaseTurretPrefab(turretNumber);
yield break;
}
GameObject prefab = task.Result;
ClearPreview();
if (prefab != null)
{
_previewAcquiredId = turretNumber;
_previewAcquiredIsZS = isZhanShen;
_currentPreviewObj = Instantiate(prefab, previewParent);
_currentPreviewObj.SetActive(true);
}
onLoaded?.Invoke(_currentPreviewObj);
}
/// <summary>释放当前预览的按需引用(面板关闭/切列表时调用,归零卸包)</summary>
private void ReleasePreviewAcquired()
{
if (_previewAcquiredId <= 0) return;
if (_previewAcquiredIsZS) TurretResourcesData.ReleaseZhanShen(_previewAcquiredId, ZhanShenUsage.Display);
else TurretResourcesData.ReleaseTurretPrefab(_previewAcquiredId);
_previewAcquiredId = 0;
}
/// <summary>根据道具数据生成特殊效果描述。</summary> /// <summary>根据道具数据生成特殊效果描述。</summary>
private static string GetSpecialEffectText(TurretResourcesData resData, TurretData turretData, BaseUserProp userProp = null) private static string GetSpecialEffectText(TurretResourcesData resData, TurretData turretData, BaseUserProp userProp = null)
{ {