Создание перфабов

Общие вопросы о Unity3D

Создание перфабов

Сообщение molodoy 13 янв 2018, 14:31

Привет, у меня код рабочий, все создается, только при каждом создании выдает ошибку, как исправить?

фрагмент кода:
Синтаксис:
Используется csharp
 public Transform[] spawnPoint;
 public Transform parent;
 public void Spawn()
    {
        int rnd = Random.Range(0, spawnPoint.Length);
        Instantiate(enemyPrefab, spawnPoint[rnd].position, spawnPoint[rnd].rotation, parent);
    }

 


Ошибка там где Instantiate
molodoy
UNец
 
Сообщения: 6
Зарегистрирован: 13 янв 2018, 14:26

Re: Создание перфабов

Сообщение samana 13 янв 2018, 17:33

molodoy писал(а):у меня код рабочий... только выдает ошибку


:D

А что за ошибка? В коде не вижу ничего подозрительного, если все переменные конечно назначены.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Создание перфабов

Сообщение molodoy 13 янв 2018, 17:42

Синтаксис:
Используется csharp
NullReferenceException: Object reference not set to an instance of an object
Spawner.Spawn () (at Assets/Scripts/Spawner.cs:64)
Spawner.Update () (at Assets/Scripts/Spawner.cs:46)

Spawn(); //46 строка функции Апдейт

Instantiate(enemyPrefab, spawnPoint[rnd].position, spawnPoint[rnd].rotation, parent); // 64 Спавн

 


Update:

Синтаксис:
Используется csharp
void Update () {

       
        waveText.text = "Wawe " + pointer + " / " + kstEnemy.Length;
        killstText.text = "Spawned mobs to finish: " + kstEnemy[pointer].ToString();
        curTimeToSpawn -= Time.deltaTime;
        curWaveReloading -= Time.deltaTime;
        if (curWaveReloading <= 0)
        {
            isReloaded = true;
            if (curTimeToSpawn <= 0 && kstEnemy[pointer] > 0 && isReloaded==true )
            {
                Spawn();
                curTimeToSpawn = timeToSpawn;
                kstEnemy[pointer]--;
                if(kstEnemy[pointer]==0)
                {
                    readyPanel.SetActive(true);
                    isReloaded = false;
                   
                }
            }

        }
        }
molodoy
UNец
 
Сообщения: 6
Зарегистрирован: 13 янв 2018, 14:26

Re: Создание перфабов

Сообщение samana 13 янв 2018, 17:50

По-прежнему не вижу ошибки.
А переменной parent точно назначен объект?
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Создание перфабов

Сообщение molodoy 13 янв 2018, 18:14

Да, Canvas, может быть это через перегрузки?

Изображение
molodoy
UNец
 
Сообщения: 6
Зарегистрирован: 13 янв 2018, 14:26

Re: Создание перфабов

Сообщение samana 13 янв 2018, 18:34

Перегрузки точно не причём.
Я попробовал подобный код у себя и ошибок нет. Код был такой же (почти) как и у вас, но суть та же.

Синтаксис:
Используется csharp
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    public Transform parent; // назначил Canvas
    public Transform prefab; // назначил префаб
   
    [ContextMenu("test")]
    private void test()
    {
        Instantiate(prefab, Vector3.zero, Quaternion.identity, parent);
    }
}
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Создание перфабов

Сообщение Xtir 14 янв 2018, 13:35

Instantiate(prefab, Vector3.zero, Quaternion.identity, parent) as GameObject; ?
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: Создание перфабов

Сообщение mastersmit 14 янв 2018, 15:10

Xtir писал(а):Instantiate(prefab, Vector3.zero, Quaternion.identity, parent) as GameObject; ?

В данном случае делать приведение не нужно, да и с ошибкой должно быть..

enemyPrefab назначен?
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край

Re: Создание перфабов

Сообщение seaman 14 янв 2018, 15:29

spawnPoint заполнен?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Создание перфабов

Сообщение mastersmit 14 янв 2018, 15:51

seaman писал(а):spawnPoint заполнен?

Так если массив будет null, то и была бы ошибка NullReference.. Если бы индекс был больше, чем имеется в массиве, то ошибка OutOfRange.. А тут не назначен какой-то объект для инстанса нового объекта, а это enemyPrefab.. Разве не так?
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край

Re: Создание перфабов

Сообщение seaman 14 янв 2018, 15:54

НУ во первых у него и есть NullReference. Во вторых не сам массив null, а его члены.
spawnPoint[rnd] == null
А может в массиве вообще ни одного члена нет.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Создание перфабов

Сообщение mastersmit 14 янв 2018, 16:11

Ёп.. и как я пропустил..
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9