在统一中淡入场景无法正常工作
本文关键字:常工作 工作 淡入 | 更新日期: 2023-09-27 18:31:29
当我在统一中淡出场景并尝试淡入原始屏幕时,我遇到了黑屏。例如,从暂停屏幕返回主菜单会给我留下黑屏,我相信这是我的代码有问题。我应该如何解决这个问题?
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 次):淡出
- 如果调用该方法 开始淡入淡出...什么都不做(你已经在褪色了)
- 继续永远褪黑。
从来没有一段代码可以停止褪色。
您可以添加一个布尔值"isFading"并将所有OnGUI代码放入:
if( isFading )
{
...
}
。但您仍然需要在某个时候停止。例如,OnGUI 的最后一行可以是:
if( isFading && alpha <= 0 )
isFading = false;
Brackeys 有一种简单有效的方法来淡入和淡出场景:https://www.youtube.com/watch?v=0HwZQt94uHQ