63 lines
1.8 KiB
C#
63 lines
1.8 KiB
C#
|
using UnityEngine;
|
|||
|
using System.Collections;
|
|||
|
|
|||
|
namespace NodeCanvas.Tasks.Actions
|
|||
|
{
|
|||
|
|
|||
|
public class CameraFader : MonoBehaviour
|
|||
|
{
|
|||
|
|
|||
|
private static CameraFader _current;
|
|||
|
private float alpha = 0;
|
|||
|
private Texture2D _blackTexture;
|
|||
|
|
|||
|
private Texture2D blackTexture {
|
|||
|
get
|
|||
|
{
|
|||
|
if ( _blackTexture == null ) {
|
|||
|
_blackTexture = new Texture2D(1, 1);
|
|||
|
_blackTexture.SetPixel(1, 1, Color.black);
|
|||
|
_blackTexture.Apply();
|
|||
|
}
|
|||
|
return _blackTexture;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public static CameraFader current {
|
|||
|
get
|
|||
|
{
|
|||
|
if ( _current == null )
|
|||
|
_current = FindAnyObjectByType<CameraFader>();
|
|||
|
if ( _current == null )
|
|||
|
_current = new GameObject("_CameraFader").AddComponent<CameraFader>();
|
|||
|
return _current;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void FadeIn(float time) { StartCoroutine(CoroutineFadeIn(time)); }
|
|||
|
public void FadeOut(float time) { StartCoroutine(CoroutineFadeOut(time)); }
|
|||
|
|
|||
|
IEnumerator CoroutineFadeIn(float time) {
|
|||
|
alpha = 1;
|
|||
|
if ( time <= 0 ) { alpha = 0; }
|
|||
|
while ( alpha > 0 ) { yield return null; alpha -= ( 1 / time ) * Time.deltaTime; }
|
|||
|
}
|
|||
|
|
|||
|
IEnumerator CoroutineFadeOut(float time) {
|
|||
|
alpha = 0;
|
|||
|
if ( time <= 0 ) { alpha = 1; }
|
|||
|
while ( alpha < 1 ) { yield return null; alpha += ( 1 / time ) * Time.deltaTime; }
|
|||
|
}
|
|||
|
|
|||
|
void OnGUI() {
|
|||
|
|
|||
|
if ( alpha <= 0 ) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
GUI.color = new Color(1, 1, 1, alpha);
|
|||
|
GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), blackTexture);
|
|||
|
GUI.color = Color.white;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|