Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 04.08.2020
Сообщений: 44
1

Object reference not set to an instance of an object и генерация облаков

31.03.2022, 17:36. Показов 308. Ответов 3

Author24 — интернет-сервис помощи студентам
Всем здравствуйте, начал делать новую 2d игру и начал с генерации облаков. Долго писал код и решил наконец запустить сцену.
По идее при запуске сцены на ней бы просто появлялись спрайты облаков(8 в моем случае), но этого не происходит и выдает ошибку из заголовка на 18 строке при включении игрового режима, не понятно почему. Также у меня есть просьба - можете пожалуйста подсказать, где что можно подправить.
P.S. В некоторых местах не дописан код(его попросту еще не существует)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Clouds : MonoBehaviour
{
    public Sprite[] clouds = new Sprite[] {}; 
    private List<Cloud> cloudsList;
    public int MinSpeed; 
    public int MaxSpeed;
    public int MinDelay;
    public int MaxDelay;
    private GameObject go;
   void Awake()
    {
        for(int i = 0; i < clouds.Length; i++)
        {   
            Debug.Log("1");
            go = new GameObject("Cloud");
            go.transform.SetParent(transform);
            cloudsList.Add(new Cloud (go,0,0));
 
            Debug.Log("2");
            cloudsList[i].Go.GetComponent<SpriteRenderer>().sprite = clouds[i];
            DelayF(cloudsList[i]);
            SpeedF(cloudsList[i]);
                        Debug.Log("3");
            if (gameObject.name == "Left")
            {
                cloudsList[i].Go.tag = "Left";
            }
            else if (gameObject.name == "Right")
            {
                cloudsList[i].Go.tag = "Right";
            }
        }
    }
 
    void FixedUpdate()
    {
 
    }
 
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.transform.tag == "Left" || collision.transform.tag == "Right")
        {
            if (gameObject.name == "Right")
            {
                if (collision.gameObject.tag == "Left")
                {
                }
            }
            if (gameObject.name == "Left")
            {
                if (collision.gameObject.tag == "Right")
                {
 
                }
            }
        }
    }
 
    private void DelayF(Cloud cloud)
    {
        System.Random rand = new System.Random();
        cloud.Delay = rand.Next(MinDelay,MaxDelay);
    }
 
    private void SpeedF(Cloud cloud)
    {
        System.Random rand = new System.Random();
        cloud.Speed = rand.Next(MinSpeed, MaxSpeed);
    }
 
    private void transformF(Cloud cloud)
    {
        System.Random rand = new System.Random();
 
        cloud.Go.transform.position = new Vector2(transform.position.x, rand.Next(0, Mathf.RoundToInt(cloud.Go.GetComponent<BoxCollider2D>().size.y))) ;
    }
 
    private IEnumerator d(Cloud cloud)
    {
        cloud.Go.SetActive(false);
        yield return new WaitForSeconds(cloud.Delay);
        cloud.Go.SetActive(true);
        DelayF(cloud);
 
    }
 
    private IEnumerator move(Cloud cloud)
    {
        while (cloud.Go.activeInHierarchy == true)
        {
            if (cloud.Go.tag == "Left")
            {
                    cloud.Go.GetComponent<Rigidbody2D>().velocity = new Vector2(cloud.Speed * 1, cloud.Go.GetComponent<Rigidbody2D>().velocity.y);
            }
            else if (cloud.Go.tag == "Right")
            {
                    cloud.Go.GetComponent<Rigidbody2D>().velocity = new Vector2(cloud.Speed * -1, cloud.Go.GetComponent<Rigidbody2D>().velocity.y);
            }
        }
        yield return null;
    }
}
 
//public interface IGo { GameObject Go { get; set; } }
//public interface ISpeed { int Speed { get; set; } }
//public interface IDelayed { int Delay { get; set; } }
public class Cloud
{
    public GameObject Go { get; set; }
    public int Speed { get; set; }
    public int Delay { get; set; }
    public Cloud (GameObject Go, int Speed, int Delay)
    {
        this.Go = Go;
        this.Speed = Speed; 
        this.Delay = Delay;
        this.Go.gameObject.AddComponent<SpriteRenderer>();
        this.Go.gameObject.AddComponent<BoxCollider2D>();
        this.Go.gameObject.AddComponent<Rigidbody2D>();
        this.Go.gameObject.GetComponent<BoxCollider2D>().size = new Vector2(1, 1);
        this.Go.gameObject.GetComponent<Rigidbody2D>().bodyType = RigidbodyType2D.Kinematic;
        this.Go.gameObject.GetComponent<Rigidbody2D>().constraints = RigidbodyConstraints2D.FreezeRotation;
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2022, 17:36
Ответы с готовыми решениями:

Как убрать ошибку NullReferenceException: Object reference not set to an instance of an object?
Выдаёт ошибку: NullReferenceException: Object reference not set to an instance of an object...

Как исправить ошибку NullReferenceException: Object reference not set to an instance of an object
Делаю свой кликер и написал метод для сокращения чисел выпадающий при клике, но при вызове метода...

NullReferenceException: Object reference not set to an instance of an object в FindObjectType как исправить?
Ошибка NullReferenceException: Object reference not set to an instance of an object в...

NullReferenceException: Object reference not set to an instance of an object UnityStandardAssets.Characters.FirstPerson
Здравствуйте. Делал мультиплеер в игре с помощью Unet на старой версии юнити,а точнее 2018.2.4f1...

Скрипт не работает - NullReferenceException: Object reference not set to an instance of an object MissionSay.S
Нужный элемент со скриптом MissionPlayer.cs есть Версия Unity: 5.4.1 Код: using...

3
16 / 10 / 7
Регистрация: 26.11.2021
Сообщений: 131
Записей в блоге: 1
31.03.2022, 21:18 2
Цитата Сообщение от God_lag Посмотреть сообщение
Object reference not set to an instance of an object
ну эта ошибка указывает на то, что ты не установил ссылку на спрайты облаков, перепроверь
0
0 / 0 / 0
Регистрация: 04.08.2020
Сообщений: 44
01.04.2022, 20:21  [ТС] 3
Fill Simpson, Всё на месте, я даже специально перепроверил, выводя в консоль имя каждого спрайта.
Ошибка именно в этой строчке
C#
1
2
            
cloudsList.Add(new Cloud (go,0,0));
Пробовал заменить список массивом - тоже не получается. Видимо ошибка именно в конструкторе, но я не понимаю какая.
0
46 / 35 / 12
Регистрация: 15.11.2011
Сообщений: 204
02.04.2022, 09:39 4
Вы хотите создать облако, еще облако, пишете код, где, грубо говоря, берем некий объект и помещаем в некоторой координате. Так вот, юнити не видит этот объект, облако. В инспекторе надо банально этот ваш спрайт перетащить в окошко нужное
0
02.04.2022, 09:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2022, 09:39
Помогаю со студенческими работами здесь

Как исправить ошибку NullReferenceException: Object reference not set to an instance of an object
Делаю свой кликер и написал метод для сокращения чисел выпадающий при клике, но при вызове метода...

Unity ошибка NullReferenceException: Object reference not set to an instance of an object
Сам новичок в C# и Unity. Много чего не знаю. Подскажите, пожалуйста. Столкнулся с ошибкой:...

Проблема с unity:NullReferenceException: Object reference not set to an instance of an object
Делаю игру на юнити первый раз. И возникла такая ошибка: Когда я запускаю игру мой объект пульку...

Unity 2D | Ошибка NullReferenceException: Object reference not set to an instance of an object
При нажатии кнопки стрелять (игра на Android) выдает ошибку: NullReferenceException: Object...

NullReferenceException: Object reference not set to an instance of an object - как исправить?
Здравствуйте, разбирался с unity и UI в нём после определённого момента, при попытке обратиться к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru