自从我迁移到Unity 5.6后,屏幕淡入效果在Daydream VR中无效

时间:2017-03-21 15:34:06

标签: c# unity3d google-vr daydream

我正在构建一个DayDream VR游戏。我之前有一个脚本可以在用户点击某个地方更改关卡/场景时淡出屏幕。

由于我已迁移到Unity 5.6 / Google VR SDK 1.2,因此任何淡入淡出效果都会停止工作。但它仍然可以在我的桌面上以预览模式运行。这是因为他们改变了相机的工作方式。我在网上尝试过不同的剧本,但是没有一个可以工作,有人会想知道如何在场景变化时淡化屏幕吗?

以下是代码的当前主要部分:

// Derived from OVRScreenFade
float elapsedTime = 0.0f;
Color color = fadeColor;
color.a = 0.0f;
fadeMaterial.color = color;
while (elapsedTime < fadeTime)
{
    yield return new WaitForEndOfFrame();
    elapsedTime += Time.deltaTime;
    color.a = Mathf.Clamp01(elapsedTime / fadeTime);
    fadeMaterial.color = color;
}

我也尝试过使用Autofade脚本。正如我所提到的那样,当我在桌面上试玩游戏时,它们都能正常工作,但它们无法在Android手机上运行:(。

有什么好主意的吗?

编辑:这是一些额外的代码

public Material fadeMaterial = null; //starts NULL

        //applied to cameras inside a function
        foreach (Camera c in Camera.allCameras)
        {
            var fadeControl = c.gameObject.AddComponent<ScreenFadeControl>();
            fadeControl.fadeMaterial = fadeMaterial;
            fadeControls.Add(fadeControl);
        }

最终解决方案

使用这里给出的答案,我已经创建了一个包含说明的脚本文件,随时可以下载并在需要相同内容时使用它:

https://gist.github.com/xtrimsky/0d58ee4db1964577893353365903b91a

1 个答案:

答案 0 :(得分:1)

如果你想淡化整个屏幕我建议:

  
      
  1. Unity中添加Panel(确保它覆盖整个屏幕)。
  2.   
  3. 制作新的Material并将其附加到Panel
  4.   
  5. 材料应将渲染模式设置为Transparent
  6.   
  7. 将以下Script附加到Panel
  8.   
public Material m;
public float _colorSpeed = 0.01f;
private Color c;
private bool start = false;

void Update()
{
    if (start)
    {
        if (c.a < 1.0f)
            c.a = c.a + _colorSpeed;
        m.color = c;
    }
}
public void Fade()
{
    c = m.color;
    c.a = 0.0f;
    start = true;
}
  
      
  1. 必要时调用Fade()方法   希望能解决你的问题!
  2.