循环遍历用于 AutoSpawn 的 Unity GameObjects 数组

Posted

技术标签:

【中文标题】循环遍历用于 AutoSpawn 的 Unity GameObjects 数组【英文标题】:Looping through array for Unity GameObjects for AutoSpawn 【发布时间】:2021-04-05 06:10:09 【问题描述】:

我正在尝试执行以下操作。我有一个包含 2 个游戏对象的数组。我按照一些示例制作了一个用于自动生成它们的脚本,并根据我的喜好修改了脚本。(我快到了)。

问题是生成器只生成 1 个游戏对象然后停止。我很确定我在循环方面做错了,但我现在有 2 天时间,无法弄清楚。我想要的是让生成器生成第一个游戏对象 5 次,然后转到下一个游戏对象并再生成 5 次,我还从以前的帮助中添加了一个碰撞功能,以便生成的游戏对象不会在墙内生成,但是由于某种原因,它不能很好地工作。

我在 GameObjects 上有 2 个盒子碰撞器用于不同的工作,一个被触发并占用整个 GameObjects 的大小,另一个小一点作为碰撞器工作(未触发),有什么建议或帮助吗?这是我正在处理的代码。

public GameObject[] objblabla;
private GameObject selectedObject; 
public int limit;
private float radius = 5f;

void Start()

    StartCoroutine(SpawnObjects());


IEnumerator SpawnObjects()

    foreach (GameObject selectedObject in objblabla)
    
        while (limit != 0)
        
            Vector3 freePos = GetFreePosition();
            Instantiate(selectedObject, freePos, Quaternion.identity);
            yield return new WaitForSeconds(5.0f);
            limit--;
        
    


Vector3 GetFreePosition()

    Vector3 position;
    Collider[] collisions = new Collider[1];
    do
    
        position = new Vector3(Random.Range(35.0f, 950.0f), 10.0f, Random.Range(35.0f, 950.0f));
    
    while (Physics.OverlapSphereNonAlloc(position, radius, collisions) > 0);

    return position;

【问题讨论】:

【参考方案1】:

我认为当您循环遍历 gameObjects 数组时,您正在做一些令人困惑的事情。

一个数组作为调用.Lenght来检查他的大小的可能性,记住这一点你可以很容易地做到:

for(int i = 0; i < objblabla.Lenght; i++)

for(int j = 0; j < 5: j++)

Vector3 freePos = GetFreePosition();
        Instantiate(selectedObject, freePos, Quaternion.identity);

这样,您将为每个数组生成 5 次对象。我建议不要使用 selectedObject

objblabla[i]; 

for循环中,您将按顺序调用对象,一次一个

【讨论】:

我想我之前尝试过,但没有成功,这就是我发布的原因。但让我再试一次并告诉结果。请回复。 放置一个数组大小的变量,然后声明具有该大小的游戏对象数组或使用数组的大小@Kostas 工作就像一个魅力。Ty 很多。当我尝试相同的时候,我现在记得它没有工作;因为我在 LateUpdate 中有代码。 当然,它不起作用!祝游戏好运:D @Kostas 真的,你是救生员.

以上是关于循环遍历用于 AutoSpawn 的 Unity GameObjects 数组的主要内容,如果未能解决你的问题,请参考以下文章

SystemVerilog foreach 语法,用于循环遍历多维数组的低维

JavaScript循环遍历

js常用循环方式的比较

字符数组遍历循环

PHP中数组的遍历

python中for循环的用法