Четверг, 25 Апреля 2024, 15:40

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 7 из 7
  • «
  • 1
  • 2
  • 5
  • 6
  • 7
Форум игроделов » Записи участника » ArtemS [124]
Результаты поиска
ArtemSДата: Понедельник, 24 Апреля 2017, 18:06 | Сообщение # 121 | Тема: А как правильно писать код ?
почетный гость
Сейчас нет на сайте
Пол года смотрю и читаю разные уроки по юньке и возник вопрос.. а как правильнее или удобнее писать код для больших проектов ?
В разных уроках народ объясняет каждый раз по своему, но игры в этих уроках длятся буквально 1-2 уровня, либо объясняют какой-то определенный аспект какого-либо действия.
Сам я нечего крупного пока не написал, так как время хватает лишь посмотреть уроки и повторить за ними, +- какие-то свои моменты протестить, в общем как и у любого новичка..ну я так думаю.

Собственно хочу узнать мнение более опытных людей, скажите ,пожалуйста, как правильнее или грамотнее выстраивать код. Пытаться уложить все в некий GameControllerScript или же каждому объекту и на каждое действие писать свой уникальный скрипт... ну и собственно как это будет влиять на затраты ресурсов компьютера.

Здравый смысл говорит, что
общий код - очень просто запутаться, не знаю но может и обработка будет расти..так как каждый кадр в главном скрипте будет проходить тело всего прооекта..
хренова куча скриптов - как минимум больше памяти будет занимать, но подозреваю, что увеличится работоспособность, да и если грамотно реализовать структуру, то и не запутаешься..

А вы что скажите ?


хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 20 Марта 2017, 19:05 | Сообщение # 122 | Тема: Ошибка NullReferenceException
почетный гость
Сейчас нет на сайте
Цитата Nordicus666 ()
Смотри: дело не в этом скрипте, дело в том, что когда ты делаешь gameover = findObjectOfType<...>(); у тебя в gameover записывается, по простому этот скрипт (а вообще ссылка на него) и ты можешь через эту переменную сразу обращаться к этому скрипту (ну в том же и суть функции findobjectoftype()), но если эта функция (так написано в ее описании, вроде (я её сопоставляю с GetComponent<>() и подобными)) не находит то что ты хочешь, она возвращает null и в переменную соответственно тоже записывается null, а не этот скрипт, и когда ты пытаешься вызвать его функцию, ты пытаешься вызвать функцию "у ничего", у null, ествественно тебе и выдает ошибку nullreferenceexeption - в дословном переводе: Пустота ссылка ошибка, т.е. ошибка пустой ссылки
знаю, пишу много и однообразного, но я первый раз кому то помогаю вообще, а так же просто пытаюсь разными путями одно и то же объяснить для удобства :DD


понятно)) ну в общем у меня юнька похоже повисла, просто перезагрузил ее и ошибка пропала)))) надеюсь навсегда. спасибо за объяснение


хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 20 Марта 2017, 18:31 | Сообщение # 123 | Тема: Ошибка NullReferenceException
почетный гость
Сейчас нет на сайте
Цитата Nordicus666 ()
Reference - ссылка, у тебя в методе OnDestroy, когда ты пытаешься взаимодействовать с gameover (gameover.showbuttons) выходит так, что обращаешься к переменной с null внутри (исходя из текста ошибки), следовательно, когда ты создаешь переменную и запихиваешь в нее FindObjectOfType<GameOverScript>(), то этот findobject ничего не возвращает, следовательно он ничего не находит
вывод: FindObjectOfType<GameOverScript>() не находит GameOverScript, ничего не возвращает, в переменной null, ты пытаешься с ней взаимодействовать, вылетает ошибка.


Так получается у меня кнопки удаляются, а потом при смерти появляются.

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

/// <summary>
/// Start or quit the game
/// </summary>
public class GameOverScript : MonoBehaviour
{
private Button[] buttons;

void Awake()
{
// Get the buttons
buttons = GetComponentsInChildren<Button>();

// Disable them
HideButtons();
}

public void HideButtons()
{
foreach (var b in buttons)
{
b.gameObject.SetActive(false);
}
}

public void ShowButtons()
{
foreach (var b in buttons)
{
b.gameObject.SetActive(true);
}
}

public void ExitToMenu()
{
// Reload the level
Application.LoadLevel("Menu");

}

public void RestartGame()
{
// Reload the level
Application.LoadLevel("Stage1");
}
}


Получается он не находит нечего потому, что у меня HideButton ?
Как можно сделать так , чтобы он не писал мне эту ошибку, подскажи пожалуйста если можешь)


хуяк, хуяк и в продакшн
ArtemSДата: Понедельник, 20 Марта 2017, 17:51 | Сообщение # 124 | Тема: Ошибка NullReferenceException
почетный гость
Сейчас нет на сайте
В консоли движка выводится ошибка
"NullReferenceException: Object reference not set to an instance of an object PlayerScript.OnDestroy () (at Assets/Scripts/PlayerScript.cs:112)"

в скрипте прописано

void OnDestroy()
{
// Game Over.
var gameOver = FindObjectOfType<GameOverScript>();
gameOver.ShowButtons();
}


ошибок никаких нет. Единственное в скрипте <GameOverScript> подчеркнуто

Application.LoadLevel("Menu");

сказано что устарел метод, надо юзать другой, но у меня почему-то он не работает. Предпологаю, что у меня 5,5,1f, а новый метод начал работать лишь в 5,5,3

Так вот и вопрос, неужели первая ошибка из-за этого или есть какая-то ошибка в синтаксисе. все работает отлично, просто хочу разобраться что за хрень


хуяк, хуяк и в продакшн
Форум игроделов » Записи участника » ArtemS [124]
  • Страница 7 из 7
  • «
  • 1
  • 2
  • 5
  • 6
  • 7
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг