10-02-2016, 04:30 PM
Codice:
using UnityEngine;
using System.Collections;
public class Fade : MonoBehaviour
{
public Texture2D FadeOutTexture;
public float fadeSpeed = 0.8f;
private int drawDepth = -1000;
private float alpha = 1;
public int fadeDir = -1;
public float timeForFade = 1f;
//Questo serve per la chiusura del livello, ovvero che lo schermo diventa nero
public void FadeIn()
{
BeginFade(1);
}
//Questo per inizio livello quindi quando lo schermo passa da nero a trasparente
public void FadeOut()
{
StartCoroutine(fadingOut(timeForFade));
}
//Questo non serve ad altro che fare un inizio livello senza fare prima FadeIn e poi FadeOut
//infatti in questa funzione controlla lui se c'è bisogno di fare il FadeIn, nel caso lo fa
//e dopo un tempo impostato da te fa anche il fadeOut, altrimenti se non c'è bisogno di fare
//fadeIn fa direttamente il fadeOut senza farti aspettare, ti consiglio di creare un scena
//vuota con una camera per poterlo testare per bene e capire il funzionamento.
IEnumerator fadingOut(float t)
{
if (fadeDir == 1)
t = 0;
else BeginFade(1);
yield return new WaitForSeconds(t);
BeginFade(-1);
}
public float BeginFade(int direction)
{
fadeDir = direction;
return (fadeSpeed);
}
void Update()
{
//Questi sono comandi per testing, ti conviene torglierli una volta testato il funzionamento
if(Input.GetKeyDown(KeyCode.A))
{
FadeIn();
}
if (Input.GetKeyDown(KeyCode.S))
{
FadeOut();
}
}
void OnGUI()
{
alpha += fadeDir * fadeSpeed * Time.deltaTime;
alpha = Mathf.Clamp01(alpha);
GUI.color = new Color(GUI.color.r, GUI.color.g, GUI.color.b, alpha);
GUI.depth = drawDepth;
GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), FadeOutTexture);
}
}
Lo ho rifatto a modo mio adesso dovrebbe funzionare, leggi i commenti che ti ho lasciato nello script per capire per bene tutto