Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для Fidel_Castro63
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 24

Почему не работает программа?

25.11.2017, 17:19. Показов 1347. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне необходимо получить доступ к переменной, которая находится в другом коде, но у меня не получается. Язык программирования С# платформа Unity 5.5.2
1 скрипт:
C#
1
2
3
4
5
public int chet=0;
void OnGUI()
{
GUI.Box(new Rect(0,0,100,100),"Score ="+chet);
}
2 скрипт:
C#
1
2
3
4
5
6
public int f;
void Start () 
{
Score f = GetComponent<Score> ();
f.chet++;
}
В пояснении вылетает такая ошибка
NullReferenceException: Object reference not set to an instance of an object
Click.Start () (at Assets/Script/Click.cs:9)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.11.2017, 17:19
Ответы с готовыми решениями:

Не работает программа, почему?
Программа должна запоминать 2 координаты(&quot;х&quot; и &quot;у&quot;)(если operation == 0) и выводить их(в данной попытке выводить &quot;+&quot; если...

Почему так программа работает?
Скорей всего я что то не знаю, но почему наименьший общий множитель чисел 100 и 75 равен 5? Почему? Все комментарии, код программы и...

Почему данная программа работает и выводит сумму элементов?
static void Main(string args) { int numbers = { 4, 7, 1, 23, 43 }; int s = 0; for (int i = 0; i &lt; numbers.Length; i++) ...

5
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
25.11.2017, 17:57
Fidel_Castro63, девятая строка в "Click.cs" это Score f = GetComponent<Score> ();? Проверь, чтобы в инспекторе на одном объекте были добавлены оба компонента (на каждом объекте где есть компонент Click).

какой смысл несет в себе public int f;?
0
 Аватар для Fidel_Castro63
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 24
25.11.2017, 18:54  [ТС]
Да
Цитата Сообщение от Aael Посмотреть сообщение
девятая строка в "Click.cs" это Score f = GetComponent<Score> ();?
Кажется я запутался и она мне не нужна. Суть этих кодов заключается в том, что скрипт Click должен прибавлять единицу к переменной chet, которая находится в другом скрипте.
Цитата Сообщение от Aael Посмотреть сообщение
какой смысл несет в себе public int f;?
0
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
25.11.2017, 19:06
Лучший ответ Сообщение было отмечено Fidel_Castro63 как решение

Решение

Fidel_Castro63, GetComponent перебирает компоненты у текущего объекта (т.е. у того на котором установлен скрипт Clicks), поэтому, если на объекте нет скрипта Score - будет NullReferenceException. Исправить можно добавив скрипт Score к каждому объекту сцены на котором есть Clicks.

Если же экземпляр Score должен быть один на сцене, то нужно создать для него объект (сцены), далее для каждого объекта с Click указать ссылку на него в инспекторе (или процедурно когда вы инстанционируете префабы):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Clicks: MonoBehaviour
{
    public GameObject ObjectWithScoreComponent; // это поле можно заполнить через инспектор
    private Score score;
    
    void Start () 
    {
        score = ObjectWithScoreComponent.GetComponent<Score>();
    }
    
    private void OnMouseDown()
    {
        score.chet++;
    }
}
либо сразу просить ссылку на (score юнити, вроде, сам умеет GetComponent вызывать):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
class Clicks: MonoBehaviour
{
    public Score score;
    
    void Start () 
    {
    }
    
    private void OnMouseDown()
    {
        score.chet++;
    }
}
1
 Аватар для Fidel_Castro63
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 24
25.11.2017, 19:07  [ТС]
Спасибо
0
964 / 485 / 241
Регистрация: 02.06.2016
Сообщений: 760
25.11.2017, 19:10
Fidel_Castro63, в отет на то, что вы потерли: да, либо как я сказал выше - просто просить ссылку и ждать пока кто-то другой заполнит её, либо, например, использовать паттерн Singleton (для Score), в некоторых книгах по unity его рекомендуют использовать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.11.2017, 19:10
Помогаю со студенческими работами здесь

Почему программа работает именно так? (Тема Params)
После того как скомпилировал программу, я не понимаю как именно она работает, меня интересует элемент с 4 строки до 16 строки (весь класс...

Подскажите почему не работает программа. Может быть где то ошибка в коде
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { ...

Почему не правильно работает программа
Подскажите пожалуйста, почему программа, которую я написал на стационарном компьютере, в Visual Studio 2015, не работает так же при...

Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает
почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает. Имею в ввиду что сделал прогу которая меняет...

почему не работает программа?
Скажите почему программа ничего не выводит???? Ошибок не выдает, но и ничего не делает. package javaapplication4; import...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru