c# - 统一淡入场景无法正常工作

标签 c# user-interface unity3d scene fading

当我在 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);
    } 
}

最佳答案

你的代码说:

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

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

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

if( isFading )
{
 ...
}

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

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

关于c# - 统一淡入场景无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34958394/

相关文章:

c - 使用 wordwrap 2 的最佳消息框大小

java - 为填字游戏创建 GUI 的最佳方法是什么? java

c# - 使用构造的返回类型覆盖通用基类属性

C# SQL查询异常

c# - 在 C# 中实现 ImageSearchDLL.dll

c# - MSBuild 任务中的哈希表/字典参数

JavaScript/CSS 与 Silverlight 与 Flex

c# - 将 ref 与列表一起使用以及列表如何保持更新

android - Cardboard sdk 右场景和左场景有错误?

c# - 按列表值获取字典键