Unity,C#:延迟功能不起作用? Waitforseconds?

时间:2016-05-01 00:05:39

标签: c# unity3d

我正在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");

    }

我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

您忘记将Switchback函数称为Coroutine

您需要在Switchback()函数中调用StartCoroutine(Switchback()),而不是致电Update()