Unity Dynamic Serializable Field - PullRequest
       1

Unity Dynamic Serializable Field

0 голосов
/ 14 октября 2018

Есть ли способ установить динамическое сериализуемое поле в пределах единицы?Я пытался использовать object и UnityEngine.Object, оба дают ошибки.

object не представляется сериализуемым, потому что value является нулевым.

NullReferenceException: Ссылка на объект не установлена ​​на экземпляр объекта

UnityEngine.Object является сериализуемым, но когда я пытаюсь установить для него int, я получаю следующую ошибку:

тип не поддерживается int значение

Так как я могу установить динамический тип для переменной?

public enum ValueType { Integer, Float, String, Boolean, GameObject }

public class SetVariable : ScriptableObject {
  public ValueType valueType;
  public string key;
  public object value;
}

Затем у меня есть специальный скрипт инспектора, которыйвыглядит так:

SerializedObject serializedObject;

public void SetObject(MyObject obj) {
  serializedObject = new SerializedObject(obj);
}

public override void OnDisplay() {
  accessType = serializedObject.FindProperty("accessType");
  key = serializedObject.FindProperty("key");
  value = serializedObject.FindProperty("value");
}

public override void OnGUI() {
  EditorGUILayout.PropertyField(valueType);
  EditorGUILayout.PropertyField(key);

  if (key.stringValue.Trim().Length > 0) {
    switch (valueType.enumNames[valueType.enumValueIndex]) {
      case "Integer":
        value.intValue = EditorGUILayout.IntField(value.displayName, value.intValue);
        break;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...