Кастомное окно EditorWindow выдает ошибку "The same field name is serialized multiple times in the class or its parent class."

196
14 сентября 2021, 16:10

Не понимаю с чём может быть связана эта ошибка :

The same field name is serialized multiple times in the class or its parent class. This is not supported: Base(PlacementObjects) m_Pos

Vector2 m_Pos используется всего пару раз в коде :

...
public class PlacementObjects : EditorWindow {
   protected Vector2 m_Pos;
   ...
   [MenuItem("Window/PlacementObjects")]
   static void Init() {
        PlacementObjects window = (PlacementObjects)EditorWindow.GetWindow(typeof(PlacementObjects));
        window.Show();
    }
    void OnGUI()
    {
       /* код */
       m_Pos = GUILayout.BeginScrollView(m_Pos, false, true,GUILayout.Width(LeftSection.width), GUILayout.Height(LeftSection.height));
       /* код */
    }
}
Answer 1

Все на самом деле очевидно из текста ошибки: имя m_Pos сериализируется 2+ раза. Если это делаете не вы, то это делает внутренний код Unity.

Дизассемблируем код класса EditorWindow и видим, что в нем действительно уже определена переменная m_Pos:

Компилятор не ругается просто потому что ваша реализация перекрывает это имя, так что с точки зрения языка тут нет проблем, а вот сам Unity пытается сериализовать все переменные во всей иерархии классов.

TL;DR

Нужно переименовать переменную m_Pos во что угодно другое, например, _m_Pos.

READ ALSO
Почему считывание двумерного массива такое долгое

Почему считывание двумерного массива такое долгое

Пытаюсь считать массив целых чиселЕстественно мне на вход попадают строки и

170
Генерация текстовых файлов с помощью Razor Pages в консольном приложении

Генерация текстовых файлов с помощью Razor Pages в консольном приложении

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

171
Удаление записи flask-sqlalchemy

Удаление записи flask-sqlalchemy

Сделал такие модели:

140
Выполнить запрос без join

Выполнить запрос без join

Есть таблица, со следующей структурой

98