The Object you want to instantiate is null. Unity 3D

Please don’t use Find for this! It is extremely expensive! And unreliable!

This function only returns active GameObjects. If no GameObject with name can be found, null is returned.

Especially since it looks like you want to use this for prefabs that only exist in the Assets and not in the Scene this will always return null as it only finds objects from the Scene.


Rather use an array like

public GameObject[] Prefabs;

reference your objects here and simply do

Vector3 position = new Vector3(Random.Range(-1.88f, 2.1f), Random.Range(-7.81f, -3.1f));
Instantiate(Prefabs[Random.Range(0, Prefabs.Length)], position, Quaternion.identity);

To your IEnuemrator … well, you never start this as a Coroutine so it is simply never running.

You can do it directly in Start using StartCoroutine

private void Start()
{
    StartCoroutine(Spawn());
}

private IEnumerator Spawn()
{
    while (true)
    {
        Vector3 position = new Vector3(Random.Range(-1.88f, 2.1f), Random.Range(-7.81f, -3.1f));
        Instantiate(Prefabs[Random.Range(0, Prefabs.Length)], position, Quaternion.identity);

        yield return new WaitForSeconds(1.0f);
    }
}

actually you could even directly use

private IEnumerator Start()
{
    while (true)
    {
        Vector3 position = new Vector3(Random.Range(-1.88f, 2.1f), Random.Range(-7.81f, -3.1f));
        Instantiate(Prefabs[Random.Range(0, Prefabs.Length)], position, Quaternion.identity);

        yield return new WaitForSeconds(1.0f);
    }
}

If Start is declared as IEnumerator Unity automatically runs it as a Coroutine.


Or in such a simple case you could even use InvokeRepeating like

private void Start()
{
    // second parameter is the initial delay
    // last parameter the repeat interval
    InvokeRepeating(nameof(Spawn), 0, 1.0f);
}

private void Spawn()
{
    Vector3 position = new Vector3(Random.Range(-1.88f, 2.1f), Random.Range(-7.81f, -3.1f));
    Instantiate(Prefabs[Random.Range(0, Prefabs.Length)], position, Quaternion.identity);
}

Leave a Comment