Всем привет. Пишу простую 2д игру на юнити. Суть в том, что шарик прыгает, а платформа под ним движется. Нужно в процессе игры генерировать новые платформы. Тут возникла проблемка с использованием метода Instantiate. Ссылки на префаб платформы хранятся в массиве platforms. Их я присвоил через редактор Unity. После удаления старого объекта вылезает исключение, но почему? Ссылка ведь на префаб, а не на конкретный объект на сцене.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Generate : MonoBehaviour {
GameObject emptyObject;
public GameObject[] platforms = new GameObject[3];
void Start(){
Data.pointOfGenerate.Set(9.1f, -4.5f, 0.0f);
emptyObject = GameObject.Find("EmptyObject");
}
void OnTriggerExit2D(Collider2D checkObj)
{
if (checkObj.gameObject.tag == "Platform")
{
GenerateNewPlatform();
}
}
void GenerateNewPlatform() {
Data.nextPlatform = platforms[Random.Range(0,3)];
Instantiate(Data.nextPlatform, Data.pointOfGenerate, Quaternion.identity);
}
}
Ошибка
Проблема решена. В редакторе Unity я прикрепил к скрипту Generate объект со сцены, думая что это префаб (у них были одинаковые имена). Поэтому при удалении платформы со сцены функция Instantiate ссылалась на несуществующий объект.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости