This commit is contained in:
2026-07-10 00:35:59 +08:00
parent b4275fdcf4
commit 2d550bd2a0
14 changed files with 1047 additions and 27 deletions
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
namespace Assets.MyGame.Scripts.Net.API.GameConfig_SubClass
@@ -19,6 +19,11 @@ namespace Assets.MyGame.Scripts.Net.API.GameConfig_SubClass
/// </summary>
public string fishName;
/// <summary>
/// 鱼介绍
/// </summary>
public string fishBrief;
/// <summary>
/// 鱼类型(普通鱼/Boss鱼/黄金鱼…)
/// </summary>
@@ -38,6 +43,16 @@ namespace Assets.MyGame.Scripts.Net.API.GameConfig_SubClass
/// 路径编号集合
/// </summary>
public List<int> pathList;
/// <summary>
/// 鱼图标地址
/// </summary>
public string fishImage;
/// <summary>
/// 倍数文字介绍(如"最高500倍")
/// </summary>
public string fishMultipleDesc;
}
}
@@ -26,6 +26,12 @@ public class HuoDe : MonoBehaviour
public Action action;
private bool _closed;
[Header("时序(秒)")]
[Tooltip("出现动画播放多久后再展示道具")]
float showPropsDelay = 0.3f;
[Tooltip("离开动画播放多久后直接销毁(不等播完)")]
float destroyDelay = 0.3f;
private void Awake()
{
if (skeletonGraphic == null)
@@ -36,6 +42,7 @@ public class HuoDe : MonoBehaviour
/// <summary>
/// 按奖励数据列表克隆预制体并初始化,并播放出现动画→待机循环。
/// 道具在出现动画播放 showPropsDelay 秒后才显示,避免 spine 停滞。
/// </summary>
/// <param name="dataList">奖励道具数据列表</param>
/// <param name="onCloseAction">关闭面板时回调(处理特殊情况)</param>
@@ -50,6 +57,20 @@ public class HuoDe : MonoBehaviour
Destroy(backPackPropItemParent.GetChild(i).gameObject);
}
// 先隐藏父节点,等出现动画播 showPropsDelay 秒后再克隆并显示
if (backPackPropItemParent != null)
backPackPropItemParent.gameObject.SetActive(false);
PlayAppearThenLoop();
StartCoroutine(IEShowPropsAfterDelay(dataList));
}
private IEnumerator IEShowPropsAfterDelay(List<BackPackPropItemData> dataList)
{
yield return new WaitForSeconds(showPropsDelay);
if (this == null) yield break;
if (dataList != null && backPackPropItemPrefab != null && backPackPropItemParent != null)
{
foreach (var data in dataList)
@@ -62,7 +83,8 @@ public class HuoDe : MonoBehaviour
}
}
PlayAppearThenLoop();
if (backPackPropItemParent != null)
backPackPropItemParent.gameObject.SetActive(true);
}
/// <summary>播放出现动画(一次),播完自动切到待机(循环)</summary>
@@ -87,7 +109,7 @@ public class HuoDe : MonoBehaviour
/// <summary>
/// 关闭面板(手动点击或自动超时都会调用,重复调用安全)。
/// 有 leave 动画则播完再销毁,否则直接销毁。
/// 播放 leave 动画,destroyDelay 秒后直接销毁,不等动画播完。
/// </summary>
public void Close()
{
@@ -99,19 +121,14 @@ public class HuoDe : MonoBehaviour
{
var state = skeletonGraphic.AnimationState;
if (state != null)
{
var entry = state.SetAnimation(0, leave, false);
StartCoroutine(IEWaitThenDestroy(entry));
return;
}
state.SetAnimation(0, leave, false);
}
Destroy(gameObject);
StartCoroutine(IEDestroyAfterDelay());
}
private IEnumerator IEWaitThenDestroy(TrackEntry entry)
private IEnumerator IEDestroyAfterDelay()
{
if (entry != null)
yield return new WaitForSpineAnimationComplete(entry, true);
yield return new WaitForSeconds(destroyDelay);
if (this != null && gameObject != null)
Destroy(gameObject);
}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d5357e103a682ae46971de89dcb69adb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,46 @@
using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class TiShi : MonoBehaviour
{
public Button btn_Close;
public Button btn_QueRen;
public TextMeshProUGUI tmpText_TiShiLabel;
public Action action;
private void Awake()
{
if (btn_Close != null)
btn_Close.onClick.AddListener(Close);
if (btn_QueRen != null)
btn_QueRen.onClick.AddListener(Confirm);
}
/// <summary>
/// 初始化提示文字。
/// </summary>
/// <param name="text">提示内容</param>
/// <param name="onConfirmAction">点击确认按钮时的回调(可选)</param>
public void Init(string text, Action onConfirmAction = null)
{
action = onConfirmAction;
if (tmpText_TiShiLabel != null)
tmpText_TiShiLabel.text = text;
}
/// <summary>确认按钮:触发回调后关闭</summary>
public void Confirm()
{
action?.Invoke();
Destroy(gameObject);
}
/// <summary>关闭按钮:直接关闭,不触发回调</summary>
public void Close()
{
Destroy(gameObject);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9d39930a69678fe4896d463f3b22eea3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -392,7 +392,7 @@ MonoBehaviour:
btn_Close: {fileID: 7163620323263908890}
backPackPropItemPrefab: {fileID: 2122426145998057947}
backPackPropItemParent: {fileID: 6697178863122751339}
skeletonGraphic: {fileID: 0}
skeletonGraphic: {fileID: 6133395026884339693}
appear: di_cx
loop: di_loop
leave: jl_cx
@@ -0,0 +1,821 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &114533590585365559
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5012842945136951744}
- component: {fileID: 4984301061731892886}
- component: {fileID: 1327522515791639869}
m_Layer: 0
m_Name: BY_beibao8(5)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5012842945136951744
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 114533590585365559}
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: 3145198938074854350}
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: -271.5, y: 187.5}
m_SizeDelta: {x: 168, y: 103}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4984301061731892886
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 114533590585365559}
m_CullTransparentMesh: 1
--- !u!114 &1327522515791639869
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 114533590585365559}
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: eb0febea1946c18488181e102d3b34a5, 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 &1447821011612761746
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3718523959878486843}
- component: {fileID: 3234835751327950874}
- component: {fileID: 9012792162372886002}
m_Layer: 0
m_Name: "\u63D0\u793A"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3718523959878486843
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1447821011612761746}
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: 3145198938074854350}
m_Father: {fileID: 0}
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: -1.5000343, y: -10}
m_SizeDelta: {x: 707, y: 436}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3234835751327950874
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1447821011612761746}
m_CullTransparentMesh: 1
--- !u!114 &9012792162372886002
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1447821011612761746}
m_Enabled: 0
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: 0}
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: bacc3cfa078ee8642a1510a5273ec1dd, 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 &2274756998622882042
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3959591478326568279}
- component: {fileID: 1308383662178020677}
- component: {fileID: 1877869616843783548}
m_Layer: 0
m_Name: BY_PlaneInfoPanel_001
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3959591478326568279
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2274756998622882042}
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: 3145198938074854350}
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: -303.99994, y: -124.5}
m_SizeDelta: {x: 131, y: 207}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1308383662178020677
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2274756998622882042}
m_CullTransparentMesh: 1
--- !u!114 &1877869616843783548
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2274756998622882042}
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: 993c055ed2062b44f989b314873ef95a, 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 &3470647165235265769
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5409135358624639106}
- component: {fileID: 5269670278028523319}
- component: {fileID: 7989297697964006668}
m_Layer: 0
m_Name: "\u63D0\u793A"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5409135358624639106
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3470647165235265769}
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: 3145198938074854350}
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: -178.99998, y: 171.99994}
m_SizeDelta: {x: 65, y: 32}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5269670278028523319
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3470647165235265769}
m_CullTransparentMesh: 1
--- !u!114 &7989297697964006668
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3470647165235265769}
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: 8df00905cfe2fdf46ac3cc533936bbec, 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 &4208084510243924915
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6432863645488119759}
- component: {fileID: 1715863154969767179}
- component: {fileID: 2518618502268998713}
m_Layer: 0
m_Name: "\u786E\u8BA4"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6432863645488119759
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4208084510243924915}
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: 3145198938074854350}
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: -5.999981, y: -133.50002}
m_SizeDelta: {x: 75, y: 37}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1715863154969767179
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4208084510243924915}
m_CullTransparentMesh: 1
--- !u!114 &2518618502268998713
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4208084510243924915}
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: 1cd902dee4117a54492fba7dd90344af, 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 &5080069114253999073
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5413487380032263442}
- component: {fileID: 6672969261120789425}
- component: {fileID: 7623192611310520292}
m_Layer: 0
m_Name: BY_PlaneInfoPanel_003
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5413487380032263442
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5080069114253999073}
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: 3145198938074854350}
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: 309.5, y: 175}
m_SizeDelta: {x: 42, y: 42}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6672969261120789425
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5080069114253999073}
m_CullTransparentMesh: 1
--- !u!114 &7623192611310520292
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5080069114253999073}
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: f4b84c67a5ea7d043b89e336900d2cd3, 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 &5174036447163845735
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3145198938074854350}
- component: {fileID: 212285116414248765}
- component: {fileID: 5671949970861319977}
m_Layer: 0
m_Name: BY_PlaneInfoPanel_008 (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3145198938074854350
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5174036447163845735}
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: 1699019922533211370}
- {fileID: 5012842945136951744}
- {fileID: 7607453210332341361}
- {fileID: 5409135358624639106}
- {fileID: 3959591478326568279}
- {fileID: 5413487380032263442}
- {fileID: 6169819287370780739}
- {fileID: 6432863645488119759}
m_Father: {fileID: 3718523959878486843}
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: -0.000034332275, y: 0}
m_SizeDelta: {x: 707, y: 436}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &212285116414248765
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5174036447163845735}
m_CullTransparentMesh: 1
--- !u!114 &5671949970861319977
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5174036447163845735}
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: bacc3cfa078ee8642a1510a5273ec1dd, 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 &5367187931066455595
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7607453210332341361}
- component: {fileID: 3292865328437414786}
- component: {fileID: 1407117275869039512}
m_Layer: 0
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7607453210332341361
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5367187931066455595}
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: 3145198938074854350}
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: 0, y: 0}
m_SizeDelta: {x: 607.0317, y: 192.5403}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3292865328437414786
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5367187931066455595}
m_CullTransparentMesh: 1
--- !u!114 &1407117275869039512
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5367187931066455595}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text:
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 5d4a713fdd931db4c9ce49f068b54e0a, type: 2}
m_sharedMaterial: {fileID: 3593458263369068374, guid: 5d4a713fdd931db4c9ce49f068b54e0a,
type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &7360226510559457637
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6169819287370780739}
- component: {fileID: 2903148978156848872}
- component: {fileID: 2047609201171156670}
m_Layer: 0
m_Name: 08
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6169819287370780739
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7360226510559457637}
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: 3145198938074854350}
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: -8.500038, y: -134}
m_SizeDelta: {x: 214, y: 76}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2903148978156848872
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7360226510559457637}
m_CullTransparentMesh: 1
--- !u!114 &2047609201171156670
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7360226510559457637}
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: 16da846f90f3a7e4d9328e5c37f56662, 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 &8005477325424122183
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1699019922533211370}
- component: {fileID: 180570439506424237}
- component: {fileID: 1232064439873123025}
m_Layer: 0
m_Name: BY_PlaneInfoPanel_003 (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1699019922533211370
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8005477325424122183}
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: 3145198938074854350}
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: -0.5000458, y: 180}
m_SizeDelta: {x: 688, y: 64}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &180570439506424237
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8005477325424122183}
m_CullTransparentMesh: 1
--- !u!114 &1232064439873123025
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8005477325424122183}
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: 7e601aa695a70b04286a190d42a2f977, 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
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3fc0acdac75670e4aa56999f29cc5063
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+12 -6
View File
@@ -16,7 +16,7 @@ public class TuJianItem : MonoBehaviour
{
btn_This = GetComponent<Button>();
}
public void InItItem(RoomFishDetailConfig roomFishDetail,bool isGuDingBeiShu=true)
public void InItItem(RoomFishDetailConfig roomFishDetail, bool isGuDingBeiShu = true)
{
roomFishDetailConfig = roomFishDetail;
if (FishResourcesData.fishResourcesSpritesDic.ContainsKey(int.Parse(roomFishDetailConfig.fishNumber)))
@@ -27,16 +27,22 @@ public class TuJianItem : MonoBehaviour
// 图片等比例缩放,填满 Image 的宽高中较小的那条边
FitImageToBounds();
tMP_nameText.text = GameManager.Instance.dic_fishTypeConfigs[roomFishDetailConfig.fishNumber].fishName;
if (isGuDingBeiShu)
var fishCfg = GameManager.Instance.dic_fishTypeConfigs[roomFishDetailConfig.fishNumber];
tMP_nameText.text = fishCfg.fishName;
// 倍数文字优先用服务端的 fishMultipleDesc(如"最高500倍"),没有时回退到本地拼接
if (!string.IsNullOrEmpty(fishCfg.fishMultipleDesc))
{
tMP_Mult.text = $"{GameManager.Instance.dic_fishTypeConfigs[roomFishDetailConfig.fishNumber].fishScore}倍";
tMP_Mult.text = fishCfg.fishMultipleDesc;
}
else if (isGuDingBeiShu)
{
tMP_Mult.text = $"{fishCfg.fishScore}倍";
}
else
{
tMP_Mult.text = $"最高{GameManager.Instance.dic_fishTypeConfigs[roomFishDetailConfig.fishNumber].fishScore}倍";
tMP_Mult.text = $"最高{fishCfg.fishScore}倍";
}
}
private void FitImageToBounds()
@@ -46,6 +46,13 @@ public class UIHome_BY_EmailPanel : SubUIBase
}, (str) =>
{
UIManager.Instance.ShowBoardError("领取成功");
// 弹出获得面板
if (dic_GetEmailByPageResponses.TryGetValue(currEmailID, out var email))
{
var dataList = BuildRewardDataList(email);
if (dataList.Count > 0)
UIManager.Instance.ShowHuoDe(dataList);
}
RewardEmail(currEmailID);
// 领取后刷新用户数据
var userId = GameManager.Instance?.user?.id;
@@ -62,6 +69,15 @@ public class UIHome_BY_EmailPanel : SubUIBase
}, (str) =>
{
UIManager.Instance.ShowBoardError("领取成功");
// 合并所有可领取邮件的奖励并弹出获得面板
var dataList = new List<BackPackPropItemData>();
foreach (var kvp in dic_GetEmailByPageResponses)
{
if (kvp.Value.isReward) continue; // 已领取的跳过
dataList.AddRange(BuildRewardDataList(kvp.Value));
}
if (dataList.Count > 0)
UIManager.Instance.ShowHuoDe(dataList);
foreach (var item in dic_EmalItems.Keys)
{
RewardEmail(item);
@@ -152,7 +168,7 @@ public class UIHome_BY_EmailPanel : SubUIBase
private void RewardEmail(string key)
{
dic_GetEmailByPageResponses[key].isReward = true;
dic_EmalItems[key].obj_LingQu.SetActive(true);
btn_Receive.gameObject.SetActive(false);
@@ -164,6 +180,39 @@ public class UIHome_BY_EmailPanel : SubUIBase
}
/// <summary>
/// 从单封邮件的奖励数据构建 BackPackPropItemData 列表(金币/钻石/道具)。
/// 数量为 0 的不加入列表。
/// </summary>
private List<BackPackPropItemData> BuildRewardDataList(GetEmailByPageResponse email)
{
var list = new List<BackPackPropItemData>();
if (email == null) return list;
if (email.rewardGold > 0)
{
list.Add(new BackPackPropItemData { giftType = 1, count = (int)email.rewardGold });
}
if (email.rewardDiamond > 0)
{
list.Add(new BackPackPropItemData { giftType = 2, count = email.rewardDiamond });
}
if (email.rewardItems != null)
{
foreach (var prop in email.rewardItems)
{
if (prop == null) continue;
list.Add(new BackPackPropItemData
{
giftType = 3,
url = APIManager.baseURL + prop.imageUrl,
count = prop.count,
});
}
}
return list;
}
protected override void OnShow(object args = null)
{
base.OnShow(args);
+3 -3
View File
@@ -7795,7 +7795,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &6733921030653514108
RectTransform:
m_ObjectHideFlags: 0
@@ -8608,7 +8608,7 @@ RectTransform:
m_Father: {fileID: 4025192357767497114}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: -0.0000047683716}
m_SizeDelta: {x: 30, y: 7}
m_Pivot: {x: 0.5, y: 0.5}
@@ -27214,7 +27214,7 @@ RectTransform:
m_Father: {fileID: 4799252558641680687}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: -0.8265}
m_SizeDelta: {x: 10, y: 1.6531}
m_Pivot: {x: 0.5, y: 0.5}
@@ -71,10 +71,14 @@ public class LevelGiftitem : MonoBehaviour
if (giftType == 1 && sprite_Gold != null)
{
target.sprite = sprite_Gold;
target.SetNativeSize();
}
else if (giftType == 2 && sprite_Diamond != null)
{
target.sprite = sprite_Diamond;
target.SetNativeSize();
}
else if (!string.IsNullOrEmpty(url))
{
+21 -4
View File
@@ -56,6 +56,7 @@ public class ZhanLing_Panel : SubUIBase
private UserBattleOrderInfo _userData;
private int _selectedBuyLevel;
private List<BattleOrderLevelConfig> _buyLevelConfigs; // 含 payType/payCount
private List<AdvanceGiftConfig> _advanceGiftConfigs; // 含 giftList
public Toggle toggle_HD;
public Toggle toggle_GG;
@@ -100,7 +101,11 @@ public class ZhanLing_Panel : SubUIBase
APIRequestList.GetBattleOrderConfig(cfg =>
{
if (cfg != null) _buyLevelConfigs = cfg.levelConfig;
if (cfg != null)
{
_buyLevelConfigs = cfg.levelConfig;
_advanceGiftConfigs = cfg.advanceGift;
}
});
}
@@ -446,7 +451,6 @@ public class ZhanLing_Panel : SubUIBase
{
APIRequestList.ReceiveAllBattleOrderRewards(res =>
{
// 立即标记当前可达等级为已领取
if (_userData.receivedLevels == null)
_userData.receivedLevels = new List<int>();
for (int lv = 1; lv <= _userData.level; lv++)
@@ -454,6 +458,7 @@ public class ZhanLing_Panel : SubUIBase
if (!_userData.receivedLevels.Contains(lv))
_userData.receivedLevels.Add(lv);
}
ShowHuoDe(res);
RefreshAll();
});
});
@@ -466,7 +471,6 @@ public class ZhanLing_Panel : SubUIBase
APIRequestList.BuyBattleOrderLevel(new BuyBattleOrderLevelParam { levelCount = levelsToBuy }, res =>
{
Debug.Log($"[ZhanLing] 购买等级完成: 新等级={res.newLevel}, 花费={res.cost}");
RefreshAll();
});
});
@@ -534,7 +538,6 @@ public class ZhanLing_Panel : SubUIBase
{
APIRequestList.BuyBattleOrderAdvance(new BuyBattleOrderAdvanceParam { type = type }, res =>
{
// 立即更新本地状态,避免服务器延迟导致锁不消失
if (type == 1 || type == 3) _userData.isLuxury = true;
if (type == 2 || type == 3) _userData.isSupreme = true;
RefreshAll();
@@ -543,6 +546,20 @@ public class ZhanLing_Panel : SubUIBase
// ==================== 工具 ====================
/// <summary>弹出获得奖励面板</summary>
private static void ShowHuoDe(List<GiftConfig> gifts)
{
if (gifts == null || gifts.Count == 0) return;
var data = gifts.Select(g => new BackPackPropItemData
{
url = g.type == 3 ? APIManager.baseURL + (g.product?.imageUrl ?? "") : "",
count = g.isRandom ? g.minCount : g.count,
giftType = g.type,
propEnum = g.type == 3 ? (PropEnum)(g.product?.type ?? 0) : PropEnum.none,
}).ToList();
UIManager.Instance.ShowHuoDe(data);
}
/// <summary>取礼物列表第一项(列表为空返回 null)</summary>
private static GiftConfig FirstGift(List<GiftConfig> list)
{