我已经在Unity中编写了一个C#脚本,以播放一系列持续时间为一分钟的360度视频。由于stackoverflow获得了支持,该脚本可以按预期工作。我现在想在每个视频播放之间添加几秒钟的分隔符,就像一个空白屏幕,这将有助于区分每个视频的开始和结束。
我尝试将GameObject与Canvas上的图像一起使用,然后在播放每个视频后将其设置为活动状态。但是,它不能按预期工作。
private GameObject gameobject;
gameobject = GameObject.FindGameObjectWithTag("Delimiter");
gameObject.SetActive(true);
答案 0 :(得分:0)
不幸的是,GameObject。FindWithTag(string tag)仅返回活动的GameObject。您找不到使用此方法禁用的对象。有几种解决方案:
将GameObject引用设置为public或添加[SerializeField]属性,以允许您在编辑器中对其进行配置。
将GameObject启动为活动状态,并在其变为非活动状态之前缓存对其的引用。 (以唤醒方式或其他方式)
所有GameObject在执行任何其他逻辑之前都运行Awake()和Start()。
您可以移动
private GameObject canvasObject;
到类级变量(而不是方法内部)和Awake()方法内部,如下所示:
void Awake()
{
canvasObject = GameObject.FindWithTag("Delimiter");
}
现在,您有一个对canvasObject的缓存引用,因此您不必每次都执行GameObject.FindWithTag。现在您可以使用此方法:
public void TurnOnImage()
{
canvasObject.SetActive(true);
}