【问题标题】:show Gameobject one time only unity仅显示一次 Gameobject 统一
【发布时间】:2018-08-18 17:23:37
【问题描述】:

我有游戏对象我只想显示一次,如果我有分数 2000 游戏对象未显示,之后当分数

if (Scores < 2000) {

    Rock1.gameObject.SetActive (true);

}
if (Scores > 2000) {

    Rock1.gameObject.SetActive (false);

}

【问题讨论】:

    标签: c# unity3d gameobject


    【解决方案1】:

    只需使用一个布尔变量。您可以使用此代码:

    bool hideOneTime = false;
    
    ...
    
    if (!hideOneTime)
    {
        if (score < 2000)
        {
            Rock1.gameObject.SetActive (true);
        }
        else if (score > 2000)
        {
            Rock1.gameObject.SetActive (false);
            hideOneTime = true;            
        }
    }
    

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      您希望游戏对象在分数 2000 时隐藏游戏对象,但不要再这样做了。

      您可以在 Update 函数中使用布尔变量作为标志来执行此操作,但由于您希望它运行一次,因此最好在协程函数中执行此操作。 Unity 的Start 协程函数很好,会自行启动。这将运行一次并且不会再次检查它,因为与Update 函数不同,协程函数将立即退出。

      public int scores;
      public GameObject Rock1;
      
      IEnumerator Start()
      {
          //Wait until score is < 2000
          while (!(scores < 2000))
              yield return null;
      
          //Show Object
          Rock1.SetActive(true);
      
          //Wait again until score is > 2000
          while (!(scores > 2000))
              yield return null;
      
          //Hide Object
          Rock1.SetActive(false);
      
          //Done. Coroutine stops!
      }
      

      【讨论】:

      • 真正巧妙地使用了协程,用它来保持状态而不是boolean。
      【解决方案3】:

      您可以简单地测试游戏对象的状态。

      例如,如果您想显示它并执行 SetActive 一次就可以了:

      if(!Rock1.gameObject.activeSelf)
          Rock1.gameObject.SetActive(true);
      

      反之亦然,如果你想隐藏它。

      编码愉快!

      【讨论】:

        【解决方案4】:

        在 Start() 函数而不是 Update() 函数中编写代码。 否则游戏对象将在崩溃之前无限生成。

        如果您想隐藏游戏对象,请尝试通过代码关闭渲染器,但如果您希望您的对象与其逻辑永远存在,请尝试在需要时销毁它并使用 IEnumerator 来控制时间。谢谢。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多