当我在 unity 中淡出场景并尝试淡入原始屏幕时,我遇到了黑屏。例如,从暂停屏幕返回主菜单时出现黑屏,我认为这是我的代码问题。我应该如何解决这个问题?
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);
}
}
最佳答案
你的代码说:
- 当游戏开始时,立即开始褪色。
- OnGUI(每秒调用 30 到 100 次):淡出
- 如果您调用 BeginFade 方法...什么都不做(您已经在淡入淡出)
- 继续永远变黑。
从来没有一段代码可以停止褪色。
您可以添加一个 bool 值“isFading”并将所有 OnGUI 代码放入:
if( isFading )
{
...
}
...但您仍然需要在某个时候停下来。例如OnGUI 的最后一行可以是:
if( isFading && alpha <= 0 )
isFading = false;
关于c# - 统一淡入场景无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34958394/