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

кастомный Editor для зубчатого массива

СообщениеДобавлено: 22 авг 2019, 14:13
DimaJoke
Есть MonoBehaviour класс, в нём хранится двухмерный массив. Для этого класса я пишу кастомный Editor.
Задача: вывести этот массив. Все величины уже известны. Задаются из класса Эдитора.
Пробовал это:
Синтаксис:
Используется csharp
            subject.exps = new int[4][];

            for(int i = 0; i < 4; i++)
            {
                subject.exps[i] = new int[10];
                for(int j = 0; j < 10; j++)
                {
                    var prop = serializedObject.FindProperty(string.Format("exps.Array.data[{0}][{1}]", i, j));
                    EditorGUILayout.PropertyField(prop);
                }
            }
 

так же пробовал
Синтаксис:
Используется csharp
string.Format("exps.Array.data[{0}][{1}]", i, j)
 

поменять на
Синтаксис:
Используется csharp
string.Format("exps.Array.data[{0}].Array.data[{1}]", i, j)
 


но в строке
Синтаксис:
Используется csharp
EditorGUILayout.PropertyField(prop);
 

идёт ошибка "prop == null" (грубо говоря)

Re: кастомный Editor для зубчатого массива

СообщениеДобавлено: 28 авг 2019, 22:56
DimaJoke
Всем спасибо, я разобрался.
Ответ: зубчатые массивы не сериализуются, следовательно нет способа получить его в виде SrializedProperty. Пришлось сделать его публичным и через target получить это массив. В двойном цикле for перебираю этот массив и и с помощью EditorGUILayout.IntField() вывожу поля для ввода числа и привязываю их к соответствующим элементам массива.

Костыльно, но работает.