private void OnEnable() { var outsideConverterTypes = UnityConverterInitializer.FindCustomConverters().ToArray(); var unityConverterTypes = UnityConverterInitializer.FindUnityConverters().ToArray(); var jsonNetConverterTypes = UnityConverterInitializer.FindJsonNetConverters().ToArray(); // Hack around the "SerializedObjectNotCreatableException: Object at index 0 is null" // error message try { _ = serializedObject; } catch (Exception) { return; } _useUnityContractResolver = serializedObject.FindProperty(nameof(UnityConvertersConfig.useUnityContractResolver)); _useAllOutsideConverters = serializedObject.FindProperty(nameof(UnityConvertersConfig.useAllOutsideConverters)); _outsideConverters = serializedObject.FindProperty(nameof(UnityConvertersConfig.outsideConverters)); _useAllUnityConverters = serializedObject.FindProperty(nameof(UnityConvertersConfig.useAllUnityConverters)); _unityConverters = serializedObject.FindProperty(nameof(UnityConvertersConfig.unityConverters)); _useAllJsonNetConverters = serializedObject.FindProperty(nameof(UnityConvertersConfig.useAllJsonNetConverters)); _jsonNetConverters = serializedObject.FindProperty(nameof(UnityConvertersConfig.jsonNetConverters)); _outsideConvertersShow = new AnimBool(_outsideConverters.isExpanded); _unityConvertersShow = new AnimBool(_unityConverters.isExpanded); _jsonNetConvertersShow = new AnimBool(_jsonNetConverters.isExpanded); _outsideConvertersShow.valueChanged.AddListener(Repaint); _unityConvertersShow.valueChanged.AddListener(Repaint); _jsonNetConvertersShow.valueChanged.AddListener(Repaint); _headerStyle = new GUIStyle { fontSize = 20, wordWrap = true, normal = EditorStyles.label.normal }; _boldHeaderStyle = new GUIStyle { fontSize = 20, fontStyle = FontStyle.Bold, wordWrap = true, normal = EditorStyles.label.normal }; serializedObject.Update(); AddAndSetupConverters(_outsideConverters, outsideConverterTypes, _useAllOutsideConverters.boolValue); AddAndSetupConverters(_unityConverters, unityConverterTypes, _useAllUnityConverters.boolValue); AddAndSetupConverters(_jsonNetConverters, jsonNetConverterTypes, _useAllJsonNetConverters.boolValue); serializedObject.ApplyModifiedProperties(); }
public override void OnInspectorGUI() { _isDirty = false; EditorGUILayout.LabelField("Settings for the converters of", _headerStyle); EditorGUILayout.LabelField("Newtonsoft.Json-for-Unity.Converters", _boldHeaderStyle); serializedObject.Update(); EditorGUILayout.Space(); ToggleLeft(_useUnityContractResolver, "Custom 'Newtonsoft.Json.Serialization.IContractResolver' defined to" + " properly handle the 'UnityEngine.SerializeFieldAttribute' attribute and correctly creates" + " 'UnityEngine.ScriptableObject' via 'ScriptableObject.Create()' instead of the default" + " 'new ScriptableObject()'."); EditorGUILayout.Space(); FoldedConverters(_useAllOutsideConverters, _outsideConverters, _outsideConvertersShow, "Registers all classes outside of the 'Newtonsoft.Json.*' namespace" + " that derive from 'Newtonsoft.Json.JsonConverter' that has a default constructor."); EditorGUILayout.Space(); FoldedConverters(_useAllUnityConverters, _unityConverters, _unityConvertersShow, "Registers all classes inside of the 'Newtonsoft.Json.UnityConverters.*' namespace."); EditorGUILayout.Space(); FoldedConverters(_useAllJsonNetConverters, _jsonNetConverters, _jsonNetConvertersShow, "Registers all classes inside of the 'Newtonsoft.Json.UnityConverters.*' namespace."); EditorGUILayout.Space(); serializedObject.ApplyModifiedProperties(); if (_isDirty) { UnityConverterInitializer.RefreshSettingsFromConfig(); } }