Files
back_cantanBuilding/Assets/Scripts/EventPinball/PinballScoringWidgetScore.cs
2026-05-26 16:15:54 +08:00

145 lines
4.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
namespace game
{
public class PinballScoringWidgetScore : PinballScoringWidgetBase
{
[SerializeField] private TextMeshPro m_TextMesh;
#region
[Header("特效设置")]
[SerializeField] public GameObject m_Effect1;
[SerializeField] public GameObject m_Effect2;
[SerializeField] public float m_Effect1Duration = 0.3f;
[SerializeField] public float m_Effect2Duration = 0.3f;
private float m_Effect1_CumulativeTime = 0f;
public void ShowEffect1()
{
m_Effect1_CumulativeTime = 0f;
}
private void UpdateEffect1()
{
if (m_Effect1 != null)
{
if (m_Effect1_CumulativeTime < m_Effect1Duration)
{
if (m_Effect1.activeSelf == false)
{
m_Effect1.SetActive(true);
}
}
else
{
if (m_Effect1.activeSelf == true)
{
m_Effect1.SetActive(false);
}
}
m_Effect1_CumulativeTime += Time.deltaTime;
if (m_Effect1_CumulativeTime > float.MaxValue)
{
m_Effect1_CumulativeTime = m_Effect1Duration + 1f;
}
}
}
private float m_Effect2_CumulativeTime = 0f;
public void ShowEffect2(EventPinballShowWidgetScoreEffect2Data data)
{
m_Effect2_CumulativeTime = 0f;
}
private void UpdateEffect2()
{
if (m_Effect2 != null)
{
if (m_Effect2_CumulativeTime < m_Effect2Duration)
{
if (m_Effect2.activeSelf == false)
{
m_Effect2.SetActive(true);
}
}
else
{
if (m_Effect2.activeSelf == true)
{
m_Effect2.SetActive(false);
}
}
m_Effect2_CumulativeTime += Time.deltaTime;
if (m_Effect2_CumulativeTime > float.MaxValue)
{
m_Effect2_CumulativeTime = m_Effect2Duration + 1f;
}
}
}
#endregion
#region
public override string GetTip()
{
return "+" + Number;
}
#endregion
#region
private void InitEvent()
{
FishingPinballAct.Subscribe<EventPinballBasicScore>(UpdateScore);
FishingPinballAct.Subscribe<EventPinballBasicScoreHideData>(HideScore);
FishingPinballAct.Subscribe<EventPinballBasicScoreShowData>(ShowScore);
FishingPinballAct.Subscribe<EventPinballShowWidgetScoreEffect2Data>(ShowEffect2);
}
private void UpdateScore(EventPinballBasicScore data)
{
if (data == null) return;
Number = data.Score;
if (m_TextMesh != null)
{
m_TextMesh.text = "" + Number;
}
}
private void HideScore(EventPinballBasicScoreHideData data)
{
if (m_TextMesh != null)
{
m_TextMesh.gameObject.SetActive(false);
}
}
private void ShowScore(EventPinballBasicScoreShowData data)
{
if (m_TextMesh != null)
{
m_TextMesh.gameObject.SetActive(true);
}
}
#endregion
#region
// Start is called before the first frame update
void Start()
{
m_BonusType = EventPinballBonusType.TypeScore;
InitEvent();
m_Effect1_CumulativeTime = m_Effect1Duration + 1f;
m_Effect2_CumulativeTime = m_Effect2Duration + 1f;
}
// Update is called once per frame
void Update()
{
UpdateEffect1();
UpdateEffect2();
}
#endregion
}
}