淡入统​​一的场景无法正常工作

时间:2016-01-23 00:58:30

标签: c# user-interface unity3d scene fading

当我从一个团结的场景淡出并尝试淡入原始屏幕时,我遇到了黑屏。例如,从暂停屏幕返回主菜单会让我看到黑屏,我相信这是我的代码的问题。我该如何解决这个问题?

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);
    } 
}

2 个答案:

答案 0 :(得分:2)

您的代码说:

  1. 游戏开始时,立即开始褪色。
  2. OnGUI(每秒调用30至100次):淡出
  3. 如果你调用方法BeginFade ......什么都不做(你已经褪色)
  4. 永远褪色至黑色。
  5. 永远不会有一段代码停止衰落。

    您可以添加bool“isFading”并将所有OnGUI代码放入:

    if( isFading )
    {
     ...
    }
    

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

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

答案 1 :(得分:1)

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