2016-01-23 52 views
1

當我淡入淡出場景並嘗試淡入原始屏幕時,遇到黑屏。例如,從暫停屏幕返回到主菜單讓我看到黑屏,我認爲這是我的代碼的問題。我應該如何解決這個問題?在統一中淡入場景無法正常工作

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

試着問上http://answers.unity3d.com/你很可能會得到一個答案有 – kentor

+0

你真的不應該使用古代遺留下來的GUI系統。現在只使用普通的Unity.UI。使用遺留系統只是不切合實際。 – Fattie

+0

由於kentor提到有這個容易googleable〜100完整的工作示例http://answers.unity3d.com/questions/780323/unity-ui-fading-canvaspanel.html – Fattie

回答

1

Brackeys有一個簡單而有效的方法,以場景之間的淡入淡出:https://www.youtube.com/watch?v=0HwZQt94uHQ

+0

此鏈接只有在可用時纔有效。直接在您的答案中包含相關信息可確保只要此問題在此,就可以使用。應將鏈接唯一的答案轉換爲對問題的評論。 – user3071284

+0

是的,但我的更改級別功能與視頻不兼容 – GamerC42

+0

然後修改它;) –

2

您的代碼表示:

  1. 當遊戲開始時,立即開始褪色。
  2. OnGUI(每秒30到100倍的任何地方調用):淡出
  3. 如果調用方法BeginFade ...什麼也不做(您已經褪色)
  4. 進行永遠褪色爲黑色。

從來沒有一段代碼停止衰落。

你可以添加一個布爾「isFading」,並把所有的OnGUI代碼:

if(isFading) 
{ 
... 
} 

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

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

然後,我必須將alpha重置爲1,然後右? – GamerC42

+0

我對我缺乏理解表示歉意,但我仍然受到同一黑屏幕的歡迎。 – GamerC42

+0

是的。通常情況下,你有兩種方法 - 「開始時尚到黑色」和「開始淡入淡出」。你有一個布爾值來表示「我現在正在褪色」還是「我要去哪個方向 - 正面還是負面」。你有所有這些,但在不同的地方,和/或只有一半實現。如果你在紙上寫下你的算法,而不是寫在代碼中,並考慮你寫的是什麼,那麼它會正常工作。 – Adam