Комментарии 4
Картина Кузьмы Петрова-Водкина: Купание педального коня.
ведь их, очевидно, можно связываться по FName-именам инстансов.
здесь опечатка: связывать
К сожалению принты так и не только так весьма часто ломаются :(
Обычно чиню подобное следующими способами:
Первый самый простой:
Полностью вырезаю или трансинчу поломанные компоненты
Пересохраняю всю иерархию макаронных наследников, что бы серриализовать все без поломанного компонента
Возвращаю все как было и надеюсь, что починится
Второй вариант - более сложный, может помочь если первый вариант не сработал но текущая ситуация и то как должно быть абсолютно понятно, что не всегда к сожалению так. Можно написать код, который сделает нужные манипуляции с компонентом блюпринтового класса или с самим классом, это работает если надо менять указатели, пересоздавать компоненты или менять флаги. Если таким образом получается получить желанную картину - всю иерархию сохраняем снова. Выключаем код, ребутаем эдитор и смотрим починилось или нет.
Третий вариант - самый душный: воссоздавать вручную и заменять всю макаронную иерархию наследования. Такое может помочь, если в уровнях есть куча поломанных акторов, потому что есть вероятность (и порой так оно и есть) что они не корректно сериализованы в пекеджах уровней. Порядок действий простой:
Создаешь новые блюпринтовые классы
Пишешь конвертер из поломанного инстанса в новый
Пишешь код который проходится по всем уровням, заменяет всех акторов (и ссылки на них) и все сейвит
Запускаешь, проверяешь, радуешься
Не уверен что третий вариант валиден в текущей ситуации, но помогал когда например блюпринтовый класс помнил о своих удаленных функциях и пытался их вызывать, так как они были в каком то графе, но по факту их не было уже. (Такое было на 4.16 вроде как). И недавно буквально на одном оч древнем проекте на 4.24 поломалась пачка акторов, которые стояли на уровне - если кликаешь на конкретный компонент или серриализуешь актора в текст, например что бы запихать в буффер - краш. Точную причину тогда выяснить так и не удалось, но проблема исправил 3-м способом.
Подвох с указателями на Default Subobject