Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/Michsky/UI/Heat/CanvasGroupAnimator.cs
2026-03-04 09:37:33 +08:00

94 lines
1.9 KiB
C#

using System.Collections;
using UnityEngine;
namespace Michsky.UI.Heat
{
[AddComponentMenu("Heat UI/Animation/Canvas Group Animator")]
public class CanvasGroupAnimator : MonoBehaviour
{
public enum StartBehaviour
{
Default = 0,
FadeIn = 1,
FadeOut = 2
}
[Header("Resources")]
[SerializeField]
private CanvasGroup canvasGroup;
[Header("Settings")]
[Tooltip("Enable or disable the object after the animation.")]
[SerializeField]
private bool setActive = true;
[Range(0.5f, 10f)]
public float fadeSpeed = 4f;
[SerializeField]
private StartBehaviour startBehaviour;
private void Start()
{
if (canvasGroup == null)
{
canvasGroup = GetComponent<CanvasGroup>();
}
if (startBehaviour == StartBehaviour.FadeIn)
{
FadeIn();
}
else if (startBehaviour == StartBehaviour.FadeOut)
{
FadeOut();
}
}
public void FadeIn()
{
canvasGroup.gameObject.SetActive(value: true);
StopCoroutine("FadeOutHelper");
StopCoroutine("FadeInHelper");
StartCoroutine("FadeInHelper");
}
public void FadeOut()
{
canvasGroup.gameObject.SetActive(value: true);
StopCoroutine("FadeInHelper");
StopCoroutine("FadeOutHelper");
StartCoroutine("FadeOutHelper");
}
private IEnumerator FadeInHelper()
{
canvasGroup.alpha = 0f;
canvasGroup.interactable = true;
canvasGroup.blocksRaycasts = true;
while ((double)canvasGroup.alpha < 0.99)
{
canvasGroup.alpha += fadeSpeed * Time.unscaledDeltaTime;
yield return null;
}
canvasGroup.alpha = 1f;
}
private IEnumerator FadeOutHelper()
{
canvasGroup.alpha = 1f;
while ((double)canvasGroup.alpha > 0.01)
{
canvasGroup.alpha -= fadeSpeed * Time.unscaledDeltaTime;
yield return null;
}
canvasGroup.alpha = 0f;
canvasGroup.interactable = false;
canvasGroup.blocksRaycasts = false;
if (setActive)
{
canvasGroup.gameObject.SetActive(value: false);
}
}
}
}