Хорошо, я делаю простой игровой механик, где вы играете мяч по небольшой панели. На краю панели находятся 8 дочерних объектов. 4 из них являются триггерами по краям панели, а 4 из них - пустыми игровыми объектами на расстоянии 1 единицы от каждого края панели для размещения следующей сборной панели для появления в ней. У мяча есть спусковой механизм, который определяет местоположение пустых игровых объектов, чтобы сообщить сборку панели, где икрой. Когда мяч вводит определенный триггер на панели, предполагается, что мяч создает экземпляр панели в месте, которое я назначаю, на основе триггера, в который входит мяч. Вот мой код:NullReferenceException и не знаю, как исправить это
public GameObject panelPrefab;
Transform frontSpawn;
Transform backSpawn;
Transform leftSpawn;
Transform rightSpawn;
private bool allowSpawn;
void Awake()
{
allowSpawn = true;
}
void OnTriggerStay(Collider spawn)
{
if (spawn.gameObject.tag == "FrontSpawn")
{
frontSpawn = spawn.transform;
}
else if (spawn.gameObject.tag == "BackSpawn")
{
backSpawn = spawn.transform;
}
else if (spawn.gameObject.tag == "LeftSpawn")
{
leftSpawn = spawn.transform;
}
else if (spawn.gameObject.tag == "RightSpawn")
{
rightSpawn = spawn.transform;
}
}
void OnTriggerEnter (Collider other)
{
if (other.gameObject.tag == "Front" && allowSpawn == true)
{
Instantiate (panelPrefab, frontSpawn.transform.position, Quaternion.identity);
allowSpawn = false;
}
else if (other.gameObject.tag == "Back" && allowSpawn == true)
{
Instantiate (panelPrefab, backSpawn.transform.position, Quaternion.identity);
allowSpawn = false;
}
else if (other.gameObject.tag == "Left" && allowSpawn == true)
{
Instantiate (panelPrefab, leftSpawn.transform.position, Quaternion.identity);
allowSpawn = false;
}
else if (other.gameObject.tag == "Right" && allowSpawn == true)
{
Instantiate (panelPrefab, rightSpawn.transform.position, Quaternion.identity);
allowSpawn = false;
}
}
void OnTriggerExit (Collider other)
{
allowSpawn = true;
}
Мой вопрос по каждому из Instantiate вызовов, я получаю NullReferenceException. У меня есть panelPrefab, назначенный в редакторе единства, и я не знаю, что может быть причиной этого! Если кто-нибудь может мне помочь здесь, это было бы ВЕЛИКОЕ оценено ... Так что спасибо заранее!
Случалось со мной один раз. Сначала попробуйте spawn.gameObject.transform; вместо spawn.transform; Если это не решило, глупо, вам нужно перезапустить Unity/PC/Mac и т. Д. Надеюсь, что он будет решен. –
Конечно, ваш идеал должен сказать, какая строка дает эту ошибку. пожалуйста, сообщите линии для более легкого и точного ответа. – virtouso