在Unity中播放一系列360度视频之间,如何在2秒内(可配置)使屏幕空白

时间:2019-08-20 14:58:40

标签: c# unity3d

我已经在Unity中编写了一个C#脚本,以播放一系列持续时间为一分钟的360度视频。由于stackoverflow获得了支持,该脚本可以按预期工作。我现在想在每个视频播放之间添加几秒钟的分隔符,就像一个空白屏幕,这将有助于区分每个视频的开始和结束。

我尝试将GameObject与Canvas上的图像一起使用,然后在播放每个视频后将其设置为活动状态。但是,它不能按预期工作。

private GameObject gameobject;
gameobject = GameObject.FindGameObjectWithTag("Delimiter");
gameObject.SetActive(true);

1 个答案:

答案 0 :(得分:0)

不幸的是,GameObject。FindWithTag(string tag)仅返回活动的GameObject。您找不到使用此方法禁用的对象。有几种解决方案:

  1. 将GameObject引用设置为public或添加[SerializeField]属性,以允许您在编辑器中对其进行配置。

  2. 将GameObject启动为活动状态,并在其变为非活动状态之前缓存对其的引用。 (以唤醒方式或其他方式)

更新编辑内容以更明确地说明#2:

所有GameObject在执行任何其他逻辑之前都运行Awake()和Start()。

您可以移动

private GameObject canvasObject;

到类级变量(而不是方法内部)和Awake()方法内部,如下所示:

void Awake()
{
    canvasObject = GameObject.FindWithTag("Delimiter");
}

现在,您有一个对canvasObject的缓存引用,因此您不必每次都执行GameObject.FindWithTag。现在您可以使用此方法:

public void TurnOnImage()
{
    canvasObject.SetActive(true);
}