关于统一c#脚本更新功能的问题

问题描述 投票:0回答:2

我正在尝试制作一个计时器来控制游戏对象的显示,我发现t变为零时并没有改变,我该如何解决或其他更好的解决方案?

public class randomGopher : MonoBehaviour
{

  // Use this for initialization
  public int t;
  public bool active;
  void Start()
  {
    t = Random.Range(30, 150);
  }

  // Update is called once per frame
  void Update()
  {
        Debug.Log(t);
    if (t == 0)
    {
      active = this.gameObject.activeSelf;
      this.gameObject.SetActive(!active);
      t = Random.Range(30, 150);
    }
    else
    {
      t = t - 1;
    }
  }
}
c# unity3d
2个回答
0
投票

最好的方法是在单独的GameObject中执行脚本,并且仅激活或停用TargetObject。

public class randomGopher : MonoBehaviour
{

  // Use this for initialization
  public int t;
  public bool active;
  public GameObject TargetObj;
  void Start()
  {
    t = Random.Range(30, 150);
  }

  // Update is called once per frame
  void Update()
  {
    Debug.Log(t);
    if (t == 0)
    {
      active = TargetObj.activeSelf;
      TargetObj.SetActive(!active);
      t = Random.Range(30, 150);
    }
    else
    {
      t = t - 1;
    }
  }
}

0
投票

所以您的问题是,如果脚本附加到的Update在之后无效,则不再调用[C0

GameObject

((不是100%肯定,现在无法在智能手机上打字时对其进行测试。)

Afaik gameObject.SetActive(false); 仍在禁用的Invoke或无效的Invoke上也起作用(至少我知道MonoBehaviour是这种情况,所以您可以简单地使用类似的东西)>

GameObject    
© www.soinside.com 2019 - 2024. All rights reserved.