Скрипт в 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);
Оказалось, что два лишних экземпляра скрипта каким-то образом оказались прикреплены к камере.