20.02.2013, 22:55
|
#1425
|
Разработчик
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений (для 60 пользователей)
|
Ответ: Вопросы от новичка
Поправил, во 2-м оффтопе чётче видно
Пишу что ошибка на втором кадре, потому что один инстанс он всё таки создаёт

using UnityEngine; using System.Collections;
public class Grid : MonoBehaviour { public Terrain thisTerrain; public static int gridMaxX, gridMaxZ; public float gridHeight; public float[,] gridFloat; public int[,] gridDensity; public int[,] gridFerlity; public GameObject[,] gridEl; public GameObject cub; // Use this for initialization void Start () { thisTerrain = (Terrain)GetComponent<Terrain>(); gridMaxX = (int)thisTerrain.terrainData.size.x; gridMaxZ = (int)thisTerrain.terrainData.size.z; gridHeight = (float)thisTerrain.terrainData.size.y; gridFloat = new float[gridMaxX,gridMaxZ]; cub = GameObject.CreatePrimitive(PrimitiveType.Cube); cub.transform.localScale = new Vector3(0.1f,0.5f,0.1f); print(cub.transform.localScale.x); //есть результат for (int z=1; z<gridMaxZ; z++) { for (int x=1; x<gridMaxX; x++) { gridFloat[x,z] = (float)thisTerrain.SampleHeight(new Vector3(x,0f,z)); print("1 "+cub.transform.localScale.x); // есть результат gridEl[x,z] = (GameObject)Instantiate(cub); //на втором кадре ошибка print("2 "+cub.transform.localScale.x); //нет результата gridEl[x,z].transform.position = new Vector3(x,gridFloat[x,z],z); } } } }
using UnityEngine;
using System.Collections;
public class Grid : MonoBehaviour {
public Terrain thisTerrain;
public static int gridMaxX, gridMaxZ;
public float gridHeight;
public float[,] gridFloat;
public int[,] gridDensity;
public int[,] gridFerlity;
public GameObject[,] gridEl;
public GameObject cub;
// Use this for initialization
void Start () {
thisTerrain = (Terrain)GetComponent<Terrain>();
gridMaxX = (int)thisTerrain.terrainData.size.x;
gridMaxZ = (int)thisTerrain.terrainData.size.z;
gridHeight = (float)thisTerrain.terrainData.size.y;
gridFloat = new float[gridMaxX,gridMaxZ];
cub = GameObject.CreatePrimitive(PrimitiveType.Cube);
cub.transform.localScale = new Vector3(0.1f,0.5f,0.1f);
print(cub.transform.localScale.x); //есть результат
for (int z=1; z<gridMaxZ; z++)
{
for (int x=1; x<gridMaxX; x++)
{
gridFloat[x,z] = (float)thisTerrain.SampleHeight(new Vector3(x,0f,z));
print("1 "+cub.transform.localScale.x); // есть результат
gridEl[x,z] = (GameObject)Instantiate(cub); //на втором кадре ошибка
print("2 "+cub.transform.localScale.x); //нет результата
gridEl[x,z].transform.position = new Vector3(x,gridFloat[x,z],z);
}
}
}
}
Пишет NullReferenceException: A null value was found where an object instance was required.
Grid.Start ()
Главное в консоле пишет размер (дебаг при помощи print) до инстанса, а после инстанса нулл 
__________________
|
(Offline)
|
|