当我从一个团结的场景淡出并尝试淡入原始屏幕时,我遇到了黑屏。例如,从暂停屏幕返回主菜单会让我看到黑屏,我相信这是我的代码的问题。我该如何解决这个问题?
using UnityEngine;
using System.Collections;
public class Fading : MonoBehaviour
{
public Texture2D fadeOutTexture;
public float fadeSpeed = 0.8f;
private int drawDepth = -1000;
private float alpha = 1.0f;
private int fadeDir = -1;
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);
}
public float BeginFade (int direction)
{
fadeDir = direction;
return (fadeSpeed);
}
void OnLevelWasLoaded()
{
alpha = 1;
BeginFade(-1);
}
}
答案 0 :(得分:2)
您的代码说:
永远不会有一段代码停止衰落。
您可以添加bool“isFading”并将所有OnGUI代码放入:
if( isFading )
{
...
}
...但你仍然需要在某个时候停止。例如OnGUI的最后一行可能是:
if( isFading && alpha <= 0 )
isFading = false;
答案 1 :(得分:1)
Brackeys有一种简单有效的方法可以在场景之间淡入淡出:https://www.youtube.com/watch?v=0HwZQt94uHQ