首页 > 解决方案 > Unity 点击并传递 WaitForSeconds

问题描述

我正在制作简单的 2d 游戏。这是开场。(徽标图像显示)。如果鼠标单击(0)时间过去和其他图像显示,我想。我该怎么做 ?

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class OpeningCanvasScript : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(otherImage());
        
    }
    private void Deactivate()
    {
        for (int i = 0; i < transform.childCount; i++)
        {
            transform.GetChild(i).gameObject.SetActive(false);
        }
    }
    private IEnumerator otherImage()
    {
        for (int i = 0; i < transform.childCount; i++)
        {
            Deactivate();
            transform.GetChild(i).gameObject.SetActive(true);
            yield return new WaitForSeconds(3f);
            // I want to if mouse click down (0) Time passes and other image show
        }
        SceneManager.LoadScene(2);
    }
}```

标签: c#unity3d

解决方案


我想我是这样做的

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class OpeningCanvasScript : MonoBehaviour
{
    bool finished = false;
    void Start()
    {
        StartCoroutine(otherImage());
        
    }
    private void Deactivate()
    {
        for (int i = 0; i < transform.childCount; i++)
        {
            transform.GetChild(i).gameObject.SetActive(false);
        }
    }
    private void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            finished = true;
        }
    }
    private IEnumerator otherImage()
    {
        for (int i = 0; i < transform.childCount; i++)
        {
            finished = false;
            Deactivate();
            transform.GetChild(i).gameObject.SetActive(true);
            StartCoroutine(waitSeconds());
            yield return new WaitUntil(()=>finished);

        }
        SceneManager.LoadScene(2);
    }
    private IEnumerator waitSeconds()
    {
        yield return new WaitForSeconds(3f);
        finished = true;
    }
}

推荐阅读