Я создаю воксельную игру для удовольствия, находясь в отпуске, и наткнулся на Custom Inspector и Editors, чтобы облегчить мою жизнь при создании новых вокселей.
Проблема в том, что простой воксель имеет сеткусостоит из массива из 6 граней, каждый индекс соответствует одному направлению, например, северная грань является гранью индекса 0, верхняя грань является индексом 4 и т. д.Но если я оставлю инспектор, чтобы показать массив как есть, то не гарантируется, что каждое лицо будет помещено в правильный индекс.
Моя идея состоит в том, чтобы создать собственный инспектор и заставить его реорганизовать массив,Скрипт редактора будет содержать новый массив «грани» (см. код ниже), который получит грани и направления и отобразится в инспекторе, что сделает это возможным.Текущий код:
using System;
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(VoxelMesh))]
public class VoxelMeshEditor: Editor {
public enum DirectionEnum {
North,
East,
South,
West,
Up,
Down,
Other,
Special,
All
}
[Serializable]
public struct DirectionalFace {
public DirectionEnum direction;
public Face face;
}
[SerializeField] private DirectionalFace[] faces;
private SerializedObject soEditor;
private SerializedProperty spFaces;
private void OnEnable() {
soEditor = new SerializedObject(this);
spFaces = soEditor.FindProperty("faces");
}
public override void OnInspectorGUI() {
base.OnInspectorGUI();
if (EditorGUILayout.PropertyField(spFaces, true)) {
soEditor.ApplyModifiedProperties();
}
}
}
Результат:

Создает неизменяемый массив, я не могу его редактировать,Как я могу сделать его редактируемым?
Заранее спасибо.