Страница 1 из 3

Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 14 янв 2021, 14:45
Jora
Приветствую товарищи. Забавный баг. Где-то года 2 назад столкнулся с ним первый раз. Примерно в 50% случаев юнити отказывался видеть компоненты на геймобжекте. Я всё не мог понять почему это происходит, ковырялся, проверял текущий объект на наличие этих компонентов и т.д. Но компоненты там были. Ошибка так и появлялась в 50% случаев, и я начал пытаться найти закономерность. И нашёл. Ошибка появлялась, когда префаб этого объекта был выделен в окне Project. То есть если не кликать на префаб, то ошибок нет, и после компиляции ошибок не было, соответственно. И вот спустя 2 года я опять столкнулся с этой проблемой. Запускаю проект - всё отлично. Стоит кликнуть на префаб в окне Project и запустить игру, сразу появляется куча ошибок, о том, что на объектах(внутри этого инстанцированного префаба) нет компонентов. И опять же, если не выделять этот префаб - всё отлично. Бред какой-то)) Надеюсь понятно объяснил. Интересно, сталкивался кто-нибудь с подобным?

Итак, записал видос, где демонстрирую проблему. Если не выделять префаб - всё отлично. Стоит выделить - появляется ошибка при его инстанциировании...

https://youtu.be/uDo-4mtsUd4

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 14 янв 2021, 15:09
Alkos26Rus
Ни разу не сталкивался с таким, постоянно меняю свойства префаба во время игры, возможно версия юнити багованная

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 14 янв 2021, 15:31
Jora
Alkos26Rus писал(а):Ни разу не сталкивался с таким, постоянно меняю свойства префаба во время игры, возможно версия юнити багованная


Не, прикол ещё в том, что и свойства менять не нужно(паблик переменные). Достаточно просто выделить префаб и ловить глюки при его инстанциировании) Версия юнити 2017. В 2018 проверял - тоже самое. В 2020 не хочется проверять, проект здоровенный, несколько часов будет переоткрываться. Просто продолжаю разработку, не кликая в этот префаб))

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 14 янв 2021, 15:41
Alex5
А это с одним единственным префабом или со всеми происходит?

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 14 янв 2021, 15:51
Jora
Alex5 писал(а):А это с одним единственным префабом или со всеми происходит?


С одним. Что-то я с ним сделал такое, что его конкретно разнесло)) Единственное, что помню, перед этим глюком в Awake ему прописал новое имя, чтобы не было с припиской (Clone). Может это как-то поломало его. Однако, потом убрал эту строчку, но глюк так и остался.

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 14 янв 2021, 16:45
BornFoRdeatH
Помню в какой-то версии юнити был баг с yaml, ассеты сохранялись с дублированными значениями, одну сцену разнесло на пару гигов, пришлось ручками открывать и удалять лишние строки, но до сих пор в файлах проекта встречаю такую фигню, даже есть обьекты на которые ругается компилятор но на сцене их нет :)

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 14 янв 2021, 17:04
Alkos26Rus
Можно продублировать этот префаб и посмотреть будут ли ошибки при выделении нового префаба. Так же можно кинуть его на сцену анпакнуть и заново кинуть его на старый префаб тем самым переназначив, вобщем много есть вариантов поправить это, на крайняк анпакнуть и пересобрать заново тоесть создать пустой объект кинуть все дочерние обьекты в него и накинуть на него все компоненты если такие имеются и снова переназначить, а ловить постоянно ошибкии это не дело.

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 14 янв 2021, 20:34
Jora
Alkos26Rus писал(а):Можно продублировать этот префаб и посмотреть будут ли ошибки при выделении нового префаба. Так же можно кинуть его на сцену анпакнуть и заново кинуть его на старый префаб тем самым переназначив, вобщем много есть вариантов поправить это, на крайняк анпакнуть и пересобрать заново тоесть создать пустой объект кинуть все дочерние обьекты в него и накинуть на него все компоненты если такие имеются и снова переназначить, а ловить постоянно ошибкии это не дело.


Всё это уже делал :) Ничего не помогает. Даже удалял все мета данные, думал может в них какой-то косяк. Но тоже ничего)
Более того, сейчас загеморился, удалил скрипт с этого префаба и создал полностью новый скрипт, с другим названием. Вставил в него весь код. Далее пришлось отредактировать кучу других скриптов под новое название скрипта. - и тоже хрен с маслом))

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 14 янв 2021, 20:57
Alex5
Без самого префаба - это просто гадание.
Вообще, unity - это ведь интерактивный редактор, по сути. Конечно, да emacs ему далеко, но кажется, что сделать ещё один unity внутри него вполне можно. :)

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 14 янв 2021, 21:10
Alkos26Rus
Всё это уже делал :) Ничего не помогает. Даже удалял все мета данные, думал может в них какой-то косяк. Но тоже ничего)
Более того, сейчас загеморился, удалил скрипт с этого префаба и создал полностью новый скрипт, с другим названием. Вставил в него весь код. Далее пришлось отредактировать кучу других скриптов под новое название скрипта. - и тоже хрен с маслом))


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

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 14 янв 2021, 21:28
Jora
Alkos26Rus писал(а):Сделай копию этого префаба над котрым можно изгаляться сколько влезит, и удаляй компоненты и дочерние объекты по очереди пока не перестанет выдавать ошибку, я сильно сомневаюсь что оставшийся пустой префаб будет выдавать ошибки, скорей всего дело в его дочерних объектах и компанентах.


К сожалению, это сделать сложно. Там довольно большой префаб с кучей дочерних объектов, со своими скриптами. Стоит что-нибудь удалить и всё посыпится. То есть мне просто проще проигнорить этот момент, поскольку, опять же, всё работает отлично, без ошибок, если просто не выделять этот префаб в папке. Собственно мне его и не нужно выделять, так что ничего критичного нет. В прошлом проекте, где 2 года назад был такой же глюк, я потом его успешно портировал на кучу платформ, нигде ошибок не было в связи с этим косяком с выделением. Сейчас просто нет времени на доскональный разбор. Но месяца через 3 всё таки попробую более досконально всё разобрать по твоему совету.

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 15 янв 2021, 09:46
Alkos26Rus
Стоит что-нибудь удалить и всё посыпится.


А с чего он должен посыпаться, если я правильно понял выделять префаб нужно не на сцене а в библиотеке, чему там сыпатся, ну ссылки послетают и все. Пока префаб не на сцене никаких ошибок выдавать не будет, если их нет в скриптах. Это же тестовый префаб, за его целостность не нужно переживать.

Там довольно большой префаб с кучей дочерних объектов, со своими скриптами.


Ну не обязательно удалять по одному дочернему объекту, удаляешь половину из них, проверяешь, затем опять половину и т.д. Это займет гараздо меньше времени, ведь вся суть найти из за чего там конкретно видает ошибки.

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 15 янв 2021, 10:06
Alex5
Дихотомия - штука шустрая. Но, медитация над префабом, лучше! :)

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 15 янв 2021, 11:56
Jora
Alkos26Rus писал(а):А с чего он должен посыпаться, если я правильно понял выделять префаб нужно не на сцене а в библиотеке, чему там сыпатся, ну ссылки послетают и все. Пока префаб не на сцене никаких ошибок выдавать не будет, если их нет в скриптах.


Не, ошибка происходит, когда префаб создаётся на сцене. Если просто в него кликнуть - ничего не будет, конечно) Запишу видос чуть попозже)

Re: Необычный Баг. Может кто сталкивался?

СообщениеДобавлено: 15 янв 2021, 13:19
Jora
Итак, записал видос, где демонстрирую проблему. Если не выделять префаб - всё отлично. Стоит выделить - появляется ошибка при его инстанциировании...

https://youtu.be/uDo-4mtsUd4