62 lines
2.1 KiB
C#
Raw Normal View History

2025-04-18 19:18:15 +08:00
using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using DG.Tweening;
using GameConfig.giftConfig;
using TEngine;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace GameLogic
{
public class UIGiftItem : MonoBehaviour
{
// Start is called before the first frame update
public TextMeshProUGUI m_Name;
public TextMeshProUGUI m_InfoTex;
public TextMeshProUGUI m_NumTex;
public RawImage m_HeadIcon;
public Image m_GiftIcon;
public Image m_Group;
public async void OnInit(UnitPlayerData unitPlayerData, GiftConfig giftConfig, int num)
{
// 随机播放
GameModule.Audio.Play(TEngine.AudioType.UISound, "礼物UI弹窗" + Random.Range(1, 5));
m_Group.sprite = GameModule.Resource.LoadAsset<Sprite>("Z_lw_t_box_" + (giftConfig.Id - 1));
m_Name.text = unitPlayerData.protCustMessageData.nickName;
AsyncImageDownload.Instance.SetAsyncImage(unitPlayerData.protCustMessageData.imgURL, m_HeadIcon);
StartCoroutine(ScrollNumber(num)); // Start the number scrolling coroutine
m_InfoTex.text = "送" + giftConfig.Name;
m_GiftIcon.material = GameModule.Resource.LoadAsset<Material>("gift" + giftConfig.Id + "_Left");
await UniTask.Delay(2000);
if (this != null && this.gameObject != null && transform.parent != null)
{
Destroy(gameObject);
}
}
private IEnumerator ScrollNumber(int targetNumber)
{
int currentNumber = 0;
float duration = 1.0f; // Duration of the scrolling effect
float elapsed = 0f;
while (elapsed < duration)
{
elapsed += Time.deltaTime;
currentNumber = (int)Mathf.Lerp(0, targetNumber, elapsed / duration);
m_NumTex.text = "x" + currentNumber;
yield return null;
}
m_NumTex.text = "x" + targetNumber; // Ensure the final number is set
}
}
}