Скрипт в Unity генерирует три объекта, вместо одного

Написал скрипт, генерирующий на сцене рандомный рельеф:

public class ChunkLoader : MonoBehaviour
{
    public int width = 512;
    public int len = 512;
    public int height = 26;
    public float[] JR = new float[3] { 0.01f, 0.1f, 2f};
    public Material material;

    void Start()
    {
        TerrainData tdata = new TerrainData();
        tdata.size = new Vector3(width, height, len);
        HMapGenerator(tdata, Math.Max(width, len) * 2 + 1);
        GameObject terrobj = Terrain.CreateTerrainGameObject(tdata);
        tdata = null;
        GC.Collect();
        terrobj.name = "Chunk";
        terrobj.GetComponent<Terrain>().materialTemplate = material;
    }
    TerrainData HMapGenerator(TerrainData tdata, int hmRes)
    {
        //Генератор рандомной карты высот.
    }
}

Однако он, почему-то, срабатывает три раза (можно убедиться, если добавить в скрипт вывод в консоль), причём в первые два генерирует меш размера 0х300х0, вне зависимости от переданных параметров.

Почему это происходит, и как это исправить?


Ответы (1 шт):

Автор решения: Risto

Благодаря подсказке в комментариях понял, что надо было писать в лог не просто текст, а что-то полезное. Например, имя объекта, запускающего скрипт:

Debug.Log("Срабатывание скрипта объекта "+this.name);

Оказалось, что два лишних экземпляра скрипта каким-то образом оказались прикреплены к камере.

→ Ссылка