Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
            }
        }