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(); 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); } } }