在统一中淡入场景无法正常工作

本文关键字:常工作 工作 淡入 | 更新日期: 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);
    } 
}

在统一中淡入场景无法正常工作

你的代码说:

  1. 当游戏开始时,立即开始淡入淡出。
  2. OnGUI(每秒调用 30 到 100 次):淡出
  3. 如果调用该方法 开始淡入淡出...什么都不做(你已经在褪色了)
  4. 继续永远褪黑。

从来没有一段代码可以停止褪色。

您可以添加一个布尔值"isFading"并将所有OnGUI代码放入:

if( isFading )
{
 ...
}

。但您仍然需要在某个时候停止。例如,OnGUI 的最后一行可以是:

if( isFading && alpha <= 0 )
   isFading = false;

Brackeys 有一种简单有效的方法来淡入和淡出场景:https://www.youtube.com/watch?v=0HwZQt94uHQ