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

Поправил, во 2-м оффтопе чётче видно
Пишу что ошибка на втором кадре, потому что один инстанс он всё таки создаёт


using UnityEngine;
using System.Collections;



public class 
Grid MonoBehaviour {    
    public  
Terrain            thisTerrain;
    public     static 
int         gridMaxXgridMaxZ;
    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=1z<gridMaxZz++)            
            {
            for (
int x=1x<gridMaxXx++)        
                {
                    
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)
 
Ответить с цитированием