Вот ошибка
- Код: Выделить всё
NullReferenceException
GameCell.ChangeType (CellType ct) (at Assets/GameCell.cs:64)
GameField.Start () (at Assets/GameField.cs:19)
GameField
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class GameField : MonoBehaviour
{
private GameObject[,] gameField;
private int[,] gameFieldLines;
// Инициализация
void Start ()
{
gameField = new GameObject[10,10];
LoadLevel();
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
{
gameField[i,j] = (GameObject)Instantiate(Resources.Load("Game Cell/Cell"));
gameField[i,j].GetComponent<GameCell>().ChangeType((CellType)gameFieldLines[i,j]);
gameField[i,j].transform.Translate(i,0,j);
}
}
}
// Обновление
void Update ()
{
//gameField[5,5].transform.Translate(Vector3.forward * Time.deltaTime);
}
public void LoadLevel()
{
gameFieldLines = new int[10,10];
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
{
gameFieldLines[i,j] = 2;
}
}
}
}
using System.Collections;
public class GameField : MonoBehaviour
{
private GameObject[,] gameField;
private int[,] gameFieldLines;
// Инициализация
void Start ()
{
gameField = new GameObject[10,10];
LoadLevel();
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
{
gameField[i,j] = (GameObject)Instantiate(Resources.Load("Game Cell/Cell"));
gameField[i,j].GetComponent<GameCell>().ChangeType((CellType)gameFieldLines[i,j]);
gameField[i,j].transform.Translate(i,0,j);
}
}
}
// Обновление
void Update ()
{
//gameField[5,5].transform.Translate(Vector3.forward * Time.deltaTime);
}
public void LoadLevel()
{
gameFieldLines = new int[10,10];
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
{
gameFieldLines[i,j] = 2;
}
}
}
}
GameCell
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public enum CellType // Типы ячеек игрового поля
{
VOID, // Пустое место
BRICKS, // Кирпичи
BORDER // Неразрушимые блоки
}
public class GameCell : MonoBehaviour
{
#region Public Fields
public int x; // Индекс ячейки по x
public int y; // Индекс ячейки по y
public CellType cellType; // Тип ячейки
#endregion
#region Private Fields
private GameObject bricksCell;
private GameObject borderCell;
#endregion
// Инициализация
void Start ()
{
// Получаем ссылки на дочерние обьекты-типы ячейки
bricksCell = transform.Find("Bricks Cell").gameObject;
borderCell = transform.Find("Border Cell").gameObject;
// Скрываем дочерние обьекты
ChangeType(CellType.VOID);
// TEMP
ChangeType(CellType.BORDER);
}
// Обновление
void Update ()
{
}
public void ChangeType(CellType ct)
{
cellType = ct;
switch(cellType)
{
case CellType.VOID:
bricksCell.renderer.enabled = false;
borderCell.renderer.enabled = false;
break;
case CellType.BRICKS:
bricksCell.renderer.enabled = true;
borderCell.renderer.enabled = false;
break;
case CellType.BORDER:
bricksCell.renderer.enabled = false;
borderCell.renderer.enabled = true;
break;
}
}
}
using System.Collections;
public enum CellType // Типы ячеек игрового поля
{
VOID, // Пустое место
BRICKS, // Кирпичи
BORDER // Неразрушимые блоки
}
public class GameCell : MonoBehaviour
{
#region Public Fields
public int x; // Индекс ячейки по x
public int y; // Индекс ячейки по y
public CellType cellType; // Тип ячейки
#endregion
#region Private Fields
private GameObject bricksCell;
private GameObject borderCell;
#endregion
// Инициализация
void Start ()
{
// Получаем ссылки на дочерние обьекты-типы ячейки
bricksCell = transform.Find("Bricks Cell").gameObject;
borderCell = transform.Find("Border Cell").gameObject;
// Скрываем дочерние обьекты
ChangeType(CellType.VOID);
// TEMP
ChangeType(CellType.BORDER);
}
// Обновление
void Update ()
{
}
public void ChangeType(CellType ct)
{
cellType = ct;
switch(cellType)
{
case CellType.VOID:
bricksCell.renderer.enabled = false;
borderCell.renderer.enabled = false;
break;
case CellType.BRICKS:
bricksCell.renderer.enabled = true;
borderCell.renderer.enabled = false;
break;
case CellType.BORDER:
bricksCell.renderer.enabled = false;
borderCell.renderer.enabled = true;
break;
}
}
}
У меня возникают подозрения что я как то неправильно вызываю ChangeType из GameField.