0

我的二维游戏中有一个数组列表中的对象。这些对象实例化了游戏中的其他对象。哪些实例化是基于随机的。但是,这些可能会在游戏过程中被破坏。代码仍然试图寻找被破坏的变换,所以我告诉它只在数组不为空时从数组中实例化,修复错误消息。尽管如此,行为仍然存在。由于其中一个数组每隔设定的秒数生成一个游戏对象,它仍然可以决定从一个为空的数组生成。当它随机选择一个为null的数组时,有一段时间该play不得不坐等事情发生,这当然是不能接受的。我如何告诉游戏当数组为空时,跳过它并转到下一个,为了摆脱游戏中的等待期?我也知道 void 不会返回任何东西。它只是脚本末尾的占位符,因为我无法输入 break 或 continue,因为它不是 for 循环。我之前发布了这个,一旦错误消息离开,我认为这就是它的结束。很抱歉再次发布它。提前致谢。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Text;


public class podControl : MonoBehaviour {


public Transform [] spawns;
public float spawnTime = 6f;
public float secondSpawnTime = 3f;      
public GameObject podPrefab;



void Start ()
{

    InvokeRepeating ("landingPod", spawnTime, secondSpawnTime);

}



void landingPod ()
{

    int spawnIndex = Random.Range (0, spawns.Length);

    if (spawns[spawnIndex] != null) {

        Instantiate (podPrefab, spawns [spawnIndex].position, spawns [spawnIndex].rotation); 

    }
    else {
        if (spawns [spawnIndex] = null)
            return;

    }
}   

}

4

2 回答 2

0

您可以简单地在它之前继续寻找有效的产卵Instantiate

void landingPod()
{

    int spawnIndex = Random.Range(0, spawns.Length);

    while(spawns[spawnIndex] == null)
    {
        spawnIndex = Random.Range(0, spawns.Length);
    }

    Instantiate(podPrefab, spawns[spawnIndex].position, spawns[spawnIndex].rotation);

}

你有这个你做你的回报:

if (spawns[spawnIndex] = null)

通过仅仅拥有=而不是==你没有验证它是否为空,而是给它spawns[spawnIndex]一个空值。

于 2017-03-21T19:36:29.870 回答
0

不要将数组位置设置为空,而是用最后一项填充它们并跟踪数组中的项目计数。

public Transform [] spawns;
private int spawnsCount;

// Index must be in the range [0 ... spawnsCount - 1] and spawnsCount > 0.
public DeleteSpawnAt(int index)
{
    spawnsCount--;
    spawns[index] = spawns[spawnsCount];
    spawns[spawnsCount] = null;
}

在 0 到 spawnsCount - 1 的范围内,您将始终有非空变换。所有null条目都将位于数组的末尾。

然后创建一个索引

int spawnIndex = Random.Range (0, spawnsCount);

删除“D”:

              +-----------------------+
              |                       |
              V                       |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| A | B | C | D | E | F | G | H | I | J |   |   |   |   |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
                                    |<--|
                                    spawnCount--

后:

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| A | B | C | J | E | F | G | H | I |   |   |   |   |   |   |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
于 2017-03-21T19:40:40.083 回答