В настоящее время у меня есть скрипт, который может размещать префабы на моей местности.
Это мой код для этого:
RaycastHit hit;
for (int i = 0; i < spawnerData.spawnableObjects.Length; i++)
{
if (spawnerData.spawnableObjects[i].currentObjects != spawnerData.spawnableObjects[i].numberOfObjects)
{
if (Physics.Raycast(new Vector3(randomX, r.bounds.max.y + 5f, randomZ), -Vector3.up, out hit))
{
randomX = Random.Range(r.bounds.min.x, r.bounds.max.x);
randomZ = Random.Range(r.bounds.min.z, r.bounds.max.z);
if (hit.point.y >= spawnerData.spawnableObjects[i].spawnerStartHeight && hit.point.y <= spawnerData.spawnableObjects[i].spawnerEndHeight)
{
spawnedObject = Instantiate(spawnerData.spawnableObjects[i].spawnablePrefab, hit.point, Quaternion.identity);
objectsSpawned[spawnerData.spawnableObjects[i].currentObjects] = spawnedObject;
spawnerData.spawnableObjects[i].currentObjects += 1;
Debug.Log(objectsSpawned.Length);
}
}
}
}
SpawnerData поступает из другого класса:
[CreateAssetMenu]
public class SurfaceSpawnerData : ScriptableObject
{
public SpawnableObjects[] spawnableObjects;
[System.Serializable]
public class SpawnableObjects
{
public GameObject spawnablePrefab;
public float spawnerStartHeight = 2f;
public float spawnerEndHeight;
public int currentObjects;
public int numberOfObjects;
}
}
В настоящее время все нормально, если я уберу строку:
objectsSpawned[spawnerData.spawnableObjects[i].currentObjects] = spawnedObject;
Однако, с этой строкой в коде, она будет порождать бесконечное количество объектов, которые не добавляются в массив.
Любая помощь приветствуется.