Unity - Custom Inspector - нередактируемый массив - PullRequest
0 голосов
/ 23 декабря 2018

Я создаю воксельную игру для удовольствия, находясь в отпуске, и наткнулся на 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();
    }
  }
}

Результат:

enter image description here

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

Заранее спасибо.

1 Ответ

0 голосов
/ 23 декабря 2018

Попробуйте изменить переменную лиц DirectionalFace [] с приватной на публичную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...