private void Awake()
{
bullet = Resources.Load<Bullet>("Assets/PreFab/Bullet.prefab");
}
void Update()
{
if (bullet == null)
Debug.Log("Fuck");
if (Input.GetButtonDown("Fire1")) Shoot();
}
private void Shoot()
{
Vector3 position = transform.position; position.y += 0.8F;
Instantiate(bullet, position, bullet.transform.rotation);
}
При нажатии кнопки которая в Unity
Fire1, ошибка NullReferenceExeption
.
Не понимаю в чём проблема. Префаб называется Bullet
, точно, проверил. Если нужно будет, дам скрипт класса Bullet
. Unity2D
Проблема в том, что Resources.Load
ищет объекты внутри папки Resources. То есть в вашем коде объект ищется по пути Resources/Assets/PreFab/Bullet.prefab
При этом у юнити довольно специфичная работа с папкой Resources, а именно - в вашем проекте может быть сколько угодно папок с таким названием, и находиться они могут где угодно в других папках. Но при сборке проекта (или запуске в редакторе) юнити собирает все папки с именем Resources и их содержимое в один виртуальный контейнер и работать будет как будто в проекте всего одна папка с таким именем, при этом все ресурсы из этих попапок будут внутри одной виртуальной Resources.
Пример использования Resources.Load
можно посмотреть в документации
А во-вторых, как вам правильно заметили в комментарии, вы сначла должны создать объект который вы ищете с помощью Instantiate, а только потом работать с ним
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Внимание! Это краткий перевод вопроса Implement dependency injection outside of Startupcs
Есть проектНачальство, спустя более 40к строк кода решило добавить логирование