我正在Unity中使用Google Cardboard创建一个VR应用程序,我已成功使用此功能从VR切换到普通视图:
public GameObject[] cardboardObjects;
public GameObject[] monoObjects;
public bool switched = false;
// Turn on or off VR mode
void ActivateVRMode(bool goToVR) {
foreach (GameObject cardboardThing in cardboardObjects) {
cardboardThing.SetActive(goToVR);
}
foreach (GameObject monoThing in monoObjects) {
monoThing.SetActive(!goToVR);
}
Cardboard.SDK.VRModeEnabled = goToVR;
// Tell the game over screen to redisplay itself if necessary
//gameObject.GetComponent<GameController>().RefreshGameOver();
}
然后我在按钮上调用此功能以切换到单声道视图:
public void Switch() {
ActivateVRMode(false);
switched = true;
Debug.Log (switched+"No VR!");
}
然后我希望在定时器上具有单声道视图,因为一旦用户切换到非VR模式,它在切换回VR之前仅保持一段时间(3秒左右)。
我尝试通过翻转布尔值并使用WaitForSeconds
来做到这一点,但是视图仍保持单声道视图并且没有任何反应:
IEnumerator Switchback()
{
yield return new WaitForSeconds(3);
ActivateVRMode(true);
switched = false;
Debug.Log (switched+"VR!");
}
void Update () {
if (switched == true) {
Switchback ();
}
//Debug.Log ("updating");
}
我在这里做错了什么?
答案 0 :(得分:3)
您忘记将Switchback
函数称为Coroutine
您需要在Switchback()
函数中调用StartCoroutine(Switchback())
,而不是致电Update()
。