【问题标题】:Gameobject​ timer in unity统一的游戏对象计时器
【发布时间】:2017-10-30 06:22:44
【问题描述】:

我正在尝试在有游戏对象(比如说一个球)的地方制作一个统一游戏,并且在分配的时间量(5 秒)后游戏对象消失了,代码上有任何线索吗??

【问题讨论】:

    标签: c# unityscript unity2d


    【解决方案1】:

    实现这一点的最简单方法是使用 Unity 的内置 Destroy() 方法。
    您可以将对象和计时器(以秒为单位)作为参数传递。

    Destroy(gameObject, 5); // destroys the gameObject after 5 seconds elapsed
    

    【讨论】:

      【解决方案2】:

      好吧,你可以尝试使用 Invoke 方法,它会在一段时间后调用你指定的方法。

      void Start()
      {
          Invoke("DestroyMyObject", 5);
      }
      
      void DestroyMyObject()
      {
          this.Destroy(this.gameObject);
      }
      

      如果你想重复调用某个方法,你可以使用 InvokeRepeating 这是整个文档:

      Invoke docs

      InvokeRepeating docs

      【讨论】:

      • 现在假设我也想拥有它,我们每 2 秒就会出现一个球的克隆,并且该克隆上的新时间从 5 开始倒计时,我该怎么做?跨度>
      • 刚刚编辑了答案。如果你想每两秒调用一个方法来克隆球,你可以使用 InvokeRepeating。
      • 非常感谢您的帮助!
      【解决方案3】:

      您可以为计时器使用协程。这比其他答案要复杂一些,但这是使用协程的好习惯。例如:

      IEnumerator DestroyObject(GameObject object, int time) {
      yield return new WaitForSeconds(time);
      Destroy(object);
      }
      

      如果此脚本附加到控制器或其他任何非播放器:

      public GameObject player;
      
      //Wherever the player is supposed to be destroyed 
      {
      DestroyObject(player, 5);
      }
      

      如果此脚本附加到播放器:

      //Wherever the player is supposed to be destroyed
      {
      DestroyObject(this.gameObject, 5);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-26
        • 1970-01-01
        • 2017-02-12
        • 1970-01-01
        相关资源
        最近更新 更多