2017-06-13 35 views
-1

我想在我的位置列表中产生对象,但使用计时器!通过定时器或别的东西产生对象。 c#unity 3D

因为我有很多的对象,所以当我产卵它需要时间产卵,所以我们需要用计时器每1-2秒产卵一个对象。

或者,创建int并且他的值是MyList.count 并且计数和我的列表包含所有对象时。

当对象名单= Null会自动从我们的名单中删除,以便我们的名单数将减少,每次1个减少产卵1个对象,

我的想法是:我在FPS游戏,我的工作当我一次产生所有代理时,有任务的敌人需要很长时间才能运行。

所以我想要解决方案来解决这个问题,当我完成前面的任务时产生任务代理。

任何人有另一种想法让我的游戏与很多代理快速工作?

+0

你可以使用协程。 – Lestat

+0

这听起来像是你一次在关卡中产生每一个敌人,这意味着你正在浪费资源来创造/维护任何与玩家无关的敌人。只需根据玩家完成任务或进入某个区域等事件产生一组玩家。 – Serlite

+0

你能提供一些你试过的代码吗? –

回答

0

我在我的游戏中做过类似的事情。我想在定时器上产生平台,所以我使用了DeltaTime并制作了一个循环,当定时器耗尽时,它只会产生一个平台。对你而言,我不会建议你使用随机发生器,因为你希望它每两秒产卵一次。看到我的执行如下:

/** 
    * Use this for initialization 
    */ 
    void Start() { 
     waitingTime = Random.Range(1f, 1.35f); 
     boxCollider = GetComponent<BoxCollider2D>(); 
    } 

    /** 
    * Update is called once per frame 
    */ 
    void Update() { 
     timer += Time.deltaTime; 

     if (timer > waitingTime) 
     { 
      createPlatform(); 
      timer = -20; 
     } 

这很简单。在创建对象时启动一个计时器。当计时器不在时,对象会产生一个新的自己,然后创建另一个,依此类推。另一个建议是将计时器放在某个外部对象上,以便您可以更容易地计算出您创建的对象数量。如果您有任何问题,请让我知道!