gpt4 book ai didi

c# - WaitForSeconds 未被调用

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:32 26 4
gpt4 key购买 nike

我想在开始时隐藏一个按钮并让它在一定时间后再次激活。但是,对 WaitForSeconds() 的调用不起作用。

我试过以下方法:

  • 让其他方法调用 WaitForSeconds
  • 从其他脚本访问 bool 值以跳过 WaitForSeconds
  • StartCoroutine 方法

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

public class HideUnhideBtn : MonoBehaviour
{
public Button buttonToHide;
public float comeInTime = 32.5f;

IEnumerator Start()
{
buttonToHide.gameObject.SetActive(false);
yield return new WaitForSeconds(comeInTime);
buttonToHide.gameObject.SetActive(true);
}
}

最佳答案

协程不在禁用的对象上运行

到目前为止的答案是不正确的,因为 Start() 可以直接用作协程,不需要 StartCoroutineexample in the Manual 开始(可惜 Unity 在 Start 的这个功能上不是很明确)。

您很可能将 HideUnhideBtn 脚本放在了您要禁用的同一 GameObject 上。因此,这一行 buttonToHide.gameObject.SetActive(false); 使用您的脚本禁用对象,并因此停止协程。

要解决此问题,您需要使用 2 个不同的 GameObject

  1. 对于按钮
  2. 对于运行协程的脚本

第二个 GameObject 需要一直保持启用状态。如果禁用它,您将杀死协程。

关于c# - WaitForSeconds 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57409723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com