This commit is contained in:
2026-09-03 16:20:30 +08:00
parent 693670e0b3
commit 2e911addea
10 changed files with 585 additions and 6010 deletions
+200 -2
View File
@@ -4964,6 +4964,7 @@ RectTransform:
m_Children:
- {fileID: 6613517557947517512}
- {fileID: 2173153052804533598}
- {fileID: 7556917316933505438}
- {fileID: 4670066188549950499}
- {fileID: 7047705136109306664}
- {fileID: 9210332093848116924}
@@ -6214,6 +6215,7 @@ MonoBehaviour:
tmp_ZHanShenLabel: {fileID: 2829478681478899944}
btn_XuanZe: {fileID: 3500349491260593746}
btn_XieXia: {fileID: 3645199743623880684}
btn_XieXia_Wing: {fileID: 848851429584608479}
obj_TurretWingPanel: {fileID: 4858565427870377112}
obj_ZhanShenPanel: {fileID: 5722782085131459815}
--- !u!1 &5701770668658621809
@@ -6322,7 +6324,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &9060029959765500742
RectTransform:
m_ObjectHideFlags: 0
@@ -6464,6 +6466,202 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &5848966925085162397
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7556917316933505438}
- component: {fileID: 8959237688636063345}
- component: {fileID: 2682022898945432965}
- component: {fileID: 848851429584608479}
m_Layer: 0
m_Name: XieXia
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7556917316933505438
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5848966925085162397}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7260207937314948868}
m_Father: {fileID: 3014377986955302398}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0}
m_AnchorMax: {x: 0.5, y: 0}
m_AnchoredPosition: {x: 0.000011444, y: 65.5}
m_SizeDelta: {x: 227, y: 77}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8959237688636063345
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5848966925085162397}
m_CullTransparentMesh: 1
--- !u!114 &2682022898945432965
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5848966925085162397}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 1471f0a0cf72dd444a5dfde4db5f6ff3, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &848851429584608479
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5848966925085162397}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 2682022898945432965}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!1 &5875793647059852209
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7260207937314948868}
- component: {fileID: 1313386240513734262}
- component: {fileID: 5881680565191952735}
m_Layer: 0
m_Name: "\u51FA\u6218"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7260207937314948868
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5875793647059852209}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7556917316933505438}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 4.500019, y: 1}
m_SizeDelta: {x: 92, y: 49}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1313386240513734262
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5875793647059852209}
m_CullTransparentMesh: 1
--- !u!114 &5881680565191952735
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5875793647059852209}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 892bb04876732ec4fb32653cc36d15ab, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &5943681652745722606
GameObject:
m_ObjectHideFlags: 0
@@ -9226,7 +9424,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 9}
m_Pivot: {x: 0, y: 1}
--- !u!114 &4511948263627284475
MonoBehaviour:
@@ -69,8 +69,10 @@ public class UIHome_BY_ItemListPanels : SubUIBase
public TextMeshProUGUI tmp_ZHanShenName;
public TextMeshProUGUI tmp_ZHanShenLabel;
public Button btn_XuanZe;
[Tooltip("卸下战神按钮:只在战神 Tab 且当前有装备战神时显示")]
[Tooltip("卸下战神按钮:战神 Tab 且选中的恰好是已装备战神时显示(炮台/翅膀面板无此按钮)")]
public Button btn_XieXia;
[Tooltip("卸下翅膀按钮:翅膀 Tab 且选中的恰好是已装备翅膀时显示(炮台没有卸下概念,永远不显示)")]
public Button btn_XieXia_Wing;
[Header("面板")]
public GameObject obj_TurretWingPanel;
public GameObject obj_ZhanShenPanel;
@@ -133,6 +135,9 @@ public class UIHome_BY_ItemListPanels : SubUIBase
if (btn_XieXia != null)
btn_XieXia.onClick.AddListener(OnClickXieXia);
if (btn_XieXia_Wing != null)
btn_XieXia_Wing.onClick.AddListener(OnClickXieXia_Wing);
if (tMP_Type != null)
tMP_Type.onValueChanged.AddListener(OnDropdownChanged);
@@ -191,16 +196,20 @@ public class UIHome_BY_ItemListPanels : SubUIBase
// 默认选中已装备的战神编号
var equipped = GetUserEquipped();
_selectedZhanShenNumber = (equipped != null && int.TryParse(equipped.number, out int n)) ? n : -1;
// ⭐ 卸下按钮:战神 Tab 且当前有装备战神才显示(显隐随选中详情 RefreshZhanShenDetail 刷新)
// ⭐ 卸下按钮:此时 _selectedZhanShenNumber 已定位到已装备编号(选中的=已装备的),初始显隐即正确;
// 之后随选中详情 RefreshZhanShenDetail 刷新(点未装备的会隐藏)
if (btn_XieXia != null)
btn_XieXia.gameObject.SetActive(equipped != null);
RebuildZhanShenTypeList();
return;
}
// ⭐ 非战神 Tab:卸下按钮一律隐藏
// ⭐ 炮台/翅膀 Tab:战神卸下按钮一律隐藏;翅膀卸下按钮由 RefreshDetailPanel 按选中刷新,
// 这里只做初始值(进入翅膀 Tab 时默认选中已装备翅膀,有装备则初始显示);炮台永远不显示
if (btn_XieXia != null)
btn_XieXia.gameObject.SetActive(false);
if (btn_XieXia_Wing != null)
btn_XieXia_Wing.gameObject.SetActive(itemPanel == ItemPanelSelect.Wing && GetUserEquipped() != null);
// 切换到炮台/翅膀时,默认选中已装备的编号;无装备则清空,列表会自动选第一个
if (itemPanel == ItemPanelSelect.Turrect || itemPanel == ItemPanelSelect.Wing)
@@ -708,9 +717,9 @@ public class UIHome_BY_ItemListPanels : SubUIBase
if (btn_XuanZe != null)
btn_XuanZe.interactable = isOwned;
// ---- 卸下按钮:当前有装备战神才显示(与选中的是哪个无关)----
// ---- 卸下按钮:选中的恰好是当前装备的战神才显示(点未装备的隐藏)----
if (btn_XieXia != null)
btn_XieXia.gameObject.SetActive(GetUserEquipped() != null);
btn_XieXia.gameObject.SetActive(turretNumber > 0 && IsItemEquipped(turretNumber));
// ---- 缩略图(和翅膀一样显示 RawImage)----
if (rawImg_DetailPreview != null)
@@ -791,6 +800,51 @@ public class UIHome_BY_ItemListPanels : SubUIBase
});
}
// ==================== 翅膀卸下按钮 ====================
/// <summary>
/// 卸下翅膀按钮:卸下当前装备的翅膀(ChangeWing number="0",与战神卸下同一约定)。
/// 成功后刷新用户数据;游戏内打开时同步清本地座位翅膀并广播给其他客户端(turretIndex=0=卸下)。
/// </summary>
private void OnClickXieXia_Wing()
{
var equipped = GetUserEquipped();
if (equipped == null)
{
Debug.Log("[UIHome_BY_ItemListPanels] 当前没有装备翅膀,无需卸下");
return;
}
APIRequestList.ChangeWing(new ChangeWingParam { number = "0" }, res =>
{
Debug.Log("[UIHome_BY_ItemListPanels] 卸下翅膀成功");
var userId = GameManager.Instance?.user?.id;
if (string.IsNullOrEmpty(userId))
{
if (btn_XieXia_Wing != null) btn_XieXia_Wing.gameObject.SetActive(false);
return;
}
APIRequestList.GetUser(userId, userRes =>
{
GameManager.Instance.UpdataUserData(userRes);
// 选中编号清掉(已无装备,列表重新定位到第一个)
_selectedTurretNumber = -1;
// 从游戏内打开:清本地座位翅膀 + 广播给其他客户端(turretIndex=0=卸下)
if (_isInGame)
{
SitPosData.localPlayerSit?.ClearWing();
CreateFishManager.Instance?.currGameType?.SyncChangeWing(0);
}
RebuildItemList();
});
});
}
// ==================== GameManager 用户数据关联 ====================
/// <summary>检查玩家是否拥有指定炮台/翅膀/战神。</summary>
@@ -929,6 +983,10 @@ public class UIHome_BY_ItemListPanels : SubUIBase
RefreshButtonsVisibility(isOwned);
RefreshDuiHuanUI(turretNumber);
// ---- 卸下按钮(仅翅膀):选中的恰好是当前装备的翅膀才显示;炮台没有卸下概念,永远不显示 ----
if (btn_XieXia_Wing != null)
btn_XieXia_Wing.gameObject.SetActive(_currentSelectType == ItemPanelSelect.Wing && turretNumber > 0 && IsItemEquipped(turretNumber));
// ---- 缩略图 ----
if (rawImg_DetailPreview != null)
rawImg_DetailPreview.gameObject.SetActive(_currentSelectType != ItemPanelSelect.Turrect);