0 / 0 / 1
Регистрация: 23.03.2016
Сообщений: 47
1

Скрипт не работает - NullReferenceException: Object reference not set to an instance of an object MissionSay.S

28.12.2016, 20:42. Показов 2057. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужный элемент со скриптом MissionPlayer.cs есть

Версия Unity: 5.4.1

Код:

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
using UnityEngine;
using System.Collections;
 
public class MissionSay : MonoBehaviour {
    
    public string missionText;
    private bool _visible = false;
    public bool active = false;
    
    public GameObject NextBot;
    public bool EndBot = false; // Последний бот в цепочке разговоров
    public int Money = 10;
    
    private MissionPlayer MP;
 
    // Use this for initialization
    void Start () {
        GameObject.FindGameObjectWithTag("Player").GetComponent<MissionPlayer>();
    }
    
    void OnMouseUp () {
        if(Input.GetMouseButtonUp(0)) {
            _visible = true;
        }
    }
    
    void OnGUI () {
        if(_visible) {
            GUI.Box(new Rect((Screen.width - 300) / 2, (Screen.height - 300) / 2, 300, 300), "Задание");
            if(active) {    
                GUI.Label(new Rect((Screen.width - 300) / 2 + 5, (Screen.height - 300) / 2 + 15, 290, 250), missionText);
                    
                if(GUI.Button(new Rect((Screen.width - 100) / 2, (Screen.height - 300) / 2 + 250, 100, 40), "Принимаю")) {
                    if(EndBot) {
                        MP.quest = false;
                        MP.Money += Money;
                        MP.MissionText = "";
                        active = false;
                        _visible = false;
                    } else {
                        MP.quest = true;
                        MP.MissionText = missionText;
                        NextBot.GetComponent<MissionSay>().active = true;
                        active = false;
                        _visible = false;
                    }
                }   
            } else {
                GUI.Label(new Rect((Screen.width - 300) / 2 + 5, (Screen.height - 300) / 2 + 15, 290, 250), "Что ты от меня хочешь?");
                    
                if(GUI.Button(new Rect((Screen.width - 100) / 2, (Screen.height - 300) / 2 + 250, 100, 40), "Ничего")) {
                    _visible = false;
                }
            }
        }
    }
}
Миниатюры
Скрипт не работает - NullReferenceException: Object reference not set to an instance of an object MissionSay.S  
0
28.12.2016, 20:42
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.12.2016, 20:42
Ответы с готовыми решениями:

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

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

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

2
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
28.12.2016, 21:52 2
C#
1
GameObject.FindGameObjectWithTag("Player").GetComponent<MissionPlayer>();
Ну нашел ты объект и дальше что? Назначить никуда не надо, что ли? Вот так надо:
C#
1
MP = GameObject.FindGameObjectWithTag("Player").GetComponent<MissionPlayer>();
Внимательнее. Студию поставь, например.
0
 Аватар для wmysterio
295 / 244 / 128
Регистрация: 24.12.2014
Сообщений: 708
28.12.2016, 22:39 3
StiverZ, Согласно коду ошибки, она находится в методе Start. Учитывая ситуацию, даже если компонента MissionPlayer нет на объекте ошибку NullReferenseExeption в этой ситуации можно получить только если выражение "GameObject.FindGameObjectWithTag("Player")" возвращает NULL. Проверьте сначала что возвращает это выражение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
void Start () {
 
     // получаем игровой объект
     var playerObject = GameObject.FindGameObjectWithTag("Player");
 
     if( playerObject != null ) {
          // если он есть, тогда получаем компонент
          var componentMissionPlayer = playerObject.GetComponent<MissionPlayer>();
     } else {
          print( "нет игрока с тэгом 'Player'!" );
     }
 
}
В методах Update и других нужно учитывать, что игрового объекта с тэгом "Player" или другим может не быть вообще(или ещё не создался), по-этому могут возникать ошибки, что что-то там равно NULL. Также проверяйте поле "NextBot" на NULL прежде, чем получать компонент.
1
28.12.2016, 22:39
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.12.2016, 22:39
Помогаю со студенческими работами здесь

Проблема с unity: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
Привет всем. Пытаюсь сделать двухмерную карточную игру Memory. Как делать эту игру - подробно описано в учебнике &quot;Джозеф Хокинг -...

Ошибка NullReferenceException: Object reference not set to an instance of an object
Юнити выдает такую ошибку NullReferenceException: Object reference not set to an instance of an object MainMenu.Start () (at...

Prefab 2D: NullReferenceException: Object reference not set to an instance of an object
Помогите разобраться! Что не так? Есть Префаб из Геймобьекта с дочерним спрайтом(называется Bullet), у автора кода все работало в ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Почему могут не шифроваться русские символы в Java
Wired 17.02.2025
При разработке на Java нередко возникают сложности с шифрованием русских символов. Эта проблема особенно актуальна для разработчиков, создающих программное обеспечение для русскоязычной аудитории. . . .
Отличия ОС для x86_64 и ARM
Wired 17.02.2025
На данный момент сосуществуют две основные архитектуры процессоров - x86_64 и ARM. Эти архитектуры имеют принципиально разные подходы к организации вычислений и обработке данных, что накладывает. . .
Многопоточность в Python: как использовать Thread
bytestream 17.02.2025
Поток выполнения (thread) - это наименьшая последовательность инструкций, которая может управляться планировщиком операционной системы. Представьте себе, что ваша программа - это книга, а потоки -. . .
Как воспроизвести Race Condition в Python
bytestream 17.02.2025
В многопоточном программировании существует множество подводных камней, и одним из самых коварных является состояние гонки (Race Condition). Этот термин описывает ситуацию, когда результат выполнения. . .
Ошибка "node: --openssl-legacy-provider is not allowed in NODE_OPTIONS"
bytestream 17.02.2025
Каждый разработчик рано или поздно сталкивается с ситуацией, когда при запуске проекта Node. js неожиданно выскакивает ошибка "node: --openssl-legacy-provider is not allowed in NODE_OPTIONS". Это. . .
Ошибка pip Python "AttributeError­: module 'lib' has no attribute 'OpenSSL_add_al­l_algorit­hms'"
bytestream 17.02.2025
При разработке на Python частенько сталкиваешься с разными сюрпризами, но ошибка AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms' - это что-то особенное. Знаете, это как. . .
Сообщение Play Store "You must complete the advertising ID declaration before you can release an app that targets"
bytestream 17.02.2025
Рекламный идентификатор - это уникальный, но восстанавливаемый строковый идентификатор для каждого устройства Android. Думаю, вы удивитесь, но даже если ваше приложение не показывает рекламу. . .
Отличия App Router от Pages Router в Next.js
bytestream 17.02.2025
Next. js прошел длинный путь развития, и одним из самых значительных изменений стало появление App Router - революционного подхода к организации маршрутизации в приложении. Этот новый способ пришел на. . .
Топ10 лучших фреймворков JavaScript для изучения в 2025
bytestream 16.02.2025
В современной веб-разработке JavaScript занимает особое место, являясь одним из наиболее востребованных языков программирования. По мере развития веб-технологий появляется все больше фреймворков,. . .
Temporal в JavaScript - новый формат даты и времени
bytestream 16.02.2025
В мире JavaScript скоро произойдет значимое событие - появление нового встроенного объекта Temporal, который призван полностью заменить устаревший объект Date. Это революционное изменение в работе с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru