1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- using System.Collections;
- using UnityEngine;
- using UnityEngine.UI;
- namespace Mirror.Examples.AdditiveLevels
- {
- public class FadeInOut : MonoBehaviour
- {
- // set these in the inspector
- [Tooltip("Reference to Image component on child panel")]
- public Image fadeImage;
- [Tooltip("Color to use during scene transition")]
- public Color fadeColor = Color.black;
- [Range(1, 100), Tooltip("Rate of fade in / out: higher is faster")]
- public byte stepRate = 2;
- float step;
- void OnValidate()
- {
- if (fadeImage == null)
- fadeImage = GetComponentInChildren<Image>();
- }
- void Start()
- {
- // Convert user-friendly setting value to working value
- step = stepRate * 0.001f;
- }
- /// <summary>
- /// Calculates FadeIn / FadeOut time.
- /// </summary>
- /// <returns>Duration in seconds</returns>
- public float GetDuration()
- {
- float frames = 1 / step;
- float frameRate = Time.deltaTime;
- float duration = frames * frameRate * 0.1f;
- return duration;
- }
- public IEnumerator FadeIn()
- {
- float alpha = fadeImage.color.a;
- while (alpha < 1)
- {
- yield return null;
- alpha += step;
- fadeColor.a = alpha;
- fadeImage.color = fadeColor;
- }
- }
- public IEnumerator FadeOut()
- {
- float alpha = fadeImage.color.a;
- while (alpha > 0)
- {
- yield return null;
- alpha -= step;
- fadeColor.a = alpha;
- fadeImage.color = fadeColor;
- }
- }
- }
- }
|