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