Files
2026-03-04 10:03:45 +08:00

110 lines
1.9 KiB
C#

using DG.Tweening;
using UnityEngine;
public class FloatPointerUI : HUDCanvasGroupBase
{
private Animator animator;
[HideInInspector]
public float floatDeep;
private bool _IsEnabled;
private bool isInWater;
private float fadeInDuration = 0.1f;
private float fadeOutDuration = 0.4f;
private bool IsEnabled
{
get
{
return _IsEnabled;
}
set
{
_IsEnabled = value;
animator.SetBool("Take", value);
}
}
private void Start()
{
animator = GetComponent<Animator>();
SetOff();
}
private void OnEnable()
{
FFloat.OnFloatEnterWater += FFloat_OnFloatEnterWater;
FFloat.OnFloatExitWater += FFloat_OnFloatExitWater;
FishFightState.OnFishCanTake += FishFightState_OnFishCanTake;
FishFightState.OnFishStrikeEnter += FishFightState_OnFishStrikeEnter;
FishFightState.OnExit += FishFightState_OnExit;
}
private void OnDisable()
{
floatDeep = 0f;
SetOff();
FFloat.OnFloatEnterWater -= FFloat_OnFloatEnterWater;
FFloat.OnFloatExitWater -= FFloat_OnFloatExitWater;
FishFightState.OnFishCanTake -= FishFightState_OnFishCanTake;
FishFightState.OnFishStrikeEnter -= FishFightState_OnFishStrikeEnter;
FishFightState.OnExit -= FishFightState_OnExit;
}
private void Update()
{
UpdateUIWidth();
}
private void FishFightState_OnFishStrikeEnter()
{
SetOff();
}
private void FishFightState_OnExit()
{
if (isInWater)
{
SetOn(fadeInDuration);
}
IsEnabled = false;
}
private void FishFightState_OnFishCanTake()
{
if (isInWater)
{
SetOn(fadeInDuration);
}
IsEnabled = true;
}
private void FFloat_OnFloatExitWater()
{
isInWater = false;
SetOff(fadeOutDuration, Ease.InCubic);
}
private void FFloat_OnFloatEnterWater()
{
isInWater = true;
SetOn(fadeInDuration);
}
private void UpdateUIWidth()
{
if (canvasGroup.alpha > 0f)
{
rectTransform.sizeDelta = originalSizeDelta;
}
else
{
rectTransform.sizeDelta = new Vector2(0f, originalSizeDelta.y);
}
}
}