|
4 / 3 / 1
Регистрация: 16.03.2020
Сообщений: 35
|
|||||||||||
Проблема с наследованием методов класса28.03.2020, 14:32. Показов 5150. Ответов 7
Метки нет (Все метки)
Нужна помощь! Я загнан в тупик.
Уже упростил до минимума: создаю класс с неким методом check, наследую от класса и там переписываю этот метод. Объекты дочерних классов лежат в списке. И просто для каждого элемента списка вызываю этот метод check. При этом почему-то вызывается метод их родительского класса condition, а не новые переписанные методы. Вот код:
Самое интересное, что в другом обычном скрипте, все работает как надо и вызываются методы именно Big_Dog и Small_Dog, хотя записано все так же:
Вопрос: почему во втором работает, а в первом - нет??
0
|
|||||||||||
| 28.03.2020, 14:32 | |
|
Ответы с готовыми решениями:
7
Создать 2 класса с наследованием полей и методов Проблема с наследованием класса Проблема с наследованием |
|
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
|
|
| 28.03.2020, 14:45 | |
|
По коду все правильно, может этот лог вылезает еще где-то в другом месте?
0
|
|
|
4 / 3 / 1
Регистрация: 16.03.2020
Сообщений: 35
|
|
| 28.03.2020, 15:35 [ТС] | |
|
Да нет вроде, больше нету такого..
Я посмотрел, где-то на этапе foreach ошибка должна быть, потому что для второго кода он правильно говорит, что the_dog это объект класса Big_Dog и Small_Dog соответственно, а вот в первом он считает, что the_cond это именно класс condition, отсюда и результат неправильный. Почему по разному происходит - не понятно.
0
|
|
|
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
|
|
| 28.03.2020, 15:55 | |
|
1
|
|
|
295 / 244 / 128
Регистрация: 24.12.2014
Сообщений: 708
|
||
| 28.03.2020, 18:48 | ||
Что-то там не то. Попробуйте класс "condition" и его метод "check" сделать абстрактными. Тогда не будет базовой реализации "check", но будет конкретная реализация в дочерних классах.
1
|
||
|
|
|||
| 29.03.2020, 00:16 | |||
Сообщение было отмечено Rogdy как решение
РешениеПримерно происходит следующее: Когда вы запустили приложение и клацнули кнопку - в список events заносятся объекты типа transform_condition и join_condition. В этот момент все работает хорошо и как нужно. Затем вы останавливаете игру и запускаете ее снова. При этом, Unity сериализует ваш объект test_window и затем десериализует его снова (это стандартное поведение unity для EditorWindow). Но в момент десериализации происходит следующее: сериализатор смотрит, что ваш список имеет тип List<condition>. То есть это список объектов типа condition. Поэтому он создает объекты типа condition и пытается десериализовать их из файла как condition. Таким образом, после десериализации, ваш список уже заполнен не исходными объектами, а объектами типа condition. Выход из это ситуации - либо сделать тип condition абстрактным, и надеятся что сериализатор тогда поймет все правильно, либо же избавится от наследования, либо же делать свою сериализацию. Ну или кардинальный метод - вообще не использовать сериализованный список и очищать его при каждом открытии окна. Ну а в целом, нужно учитывать, что сериализатор unity (как и XML сериалзация) - плохо дружит с наследованием.
2
|
|||
|
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
|
|
| 29.03.2020, 08:16 | |
|
Storm23, может в новых версиях это пофиксили? Всё работает как надо, вроде...
https://www.youtube.com/watch?... e=youtu.be
0
|
|
|
4 / 3 / 1
Регистрация: 16.03.2020
Сообщений: 35
|
||
| 29.03.2020, 17:03 [ТС] | ||
|
Всем спасибо! Сейчас буду пробовать!
1max1, насколько я понял, там не пофиксили, просто если добавлять в режиме play то действительно все хорошо, а вот если добавить в эдиторе, а потом запустить, то работает так себе Добавлено через 4 часа 5 минут А если классы в месте со списком перенести в monobehavior, а в editorwindow оставить только кнопку, это поможет? Добавлено через 18 минут
0
|
||
| 29.03.2020, 17:03 | |
|
Помогаю со студенческими работами здесь
8
Проблема с наследованием
Проблема с наследованием класс Проблема с наследованием. css. Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе работу этих методов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|