123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using System.Collections;
- using UnityEngine;
- using UnityEngine.UI;
- namespace HQFPSWeapons.UserInterface
- {
- public class ScreenFader : UserInterfaceBehaviour
- {
- [SerializeField]
- private Image m_Image = null;
-
- [SerializeField]
- private float m_FadeSpeed = 0.3f;
- [SerializeField]
- private float m_FadePause = 1f;
- private float m_CurrentFadeSpeed = 1f;
- public override void OnPostAttachment()
- {
- Player.Death.AddListener(On_Death);
- Player.Respawn.AddListener(On_Respawn);
- m_Image.color = new Color(m_Image.color.r, m_Image.color.g, m_Image.color.b, 1f);
- StartCoroutine(C_FadeScreen(0f, m_FadePause));
- }
- private void On_Death()
- {
- StopAllCoroutines();
- StartCoroutine(C_FadeScreen(1f));
- }
- private void On_Respawn()
- {
- StopAllCoroutines();
- StartCoroutine(C_FadeScreen(0f, m_FadePause));
- }
- private IEnumerator C_FadeScreen(float targetAlpha, float pause = 0f)
- {
- m_CurrentFadeSpeed = 1f;
- yield return new WaitForSeconds(pause);
- while (Mathf.Abs(m_Image.color.a - targetAlpha) > 0f)
- {
- m_Image.color = MoveTowardsAlpha(m_Image.color, targetAlpha, Time.deltaTime * m_FadeSpeed * m_CurrentFadeSpeed);
- m_CurrentFadeSpeed += Time.deltaTime;
- yield return null;
- }
- }
- private Color MoveTowardsAlpha(Color color, float alpha, float maxDelta)
- {
- return new Color(color.r, color.g, color.b, Mathf.MoveTowards(color.a, alpha, maxDelta));
- }
- }
- }
|