Can't serialize GradientMode

Issue #278 resolved
Former user created an issue

Hi,

I'm trying to serialize a class with a Gradient member and get an error about not being able to create the formatter for GradientMode.

This can be reproduced by adding the following script to a game object.

I'm using 2017.3.0f2 and Odin 1.0.6.0 on Windows 10.

using System;
using Sirenix.OdinInspector;
using Sirenix.Serialization;
using UnityEngine;

public class GradientTest : SerializedMonoBehaviour {

    [NonSerialized, OdinSerialize]
    public Gradient lala;
}

Here's the callstack: [Exception] ArgumentException: Cannot create formatters for a primitive type like GradientMode FormatterLocator.CreateFormatter() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Utilities/FormatterLocator.cs:279

FormatterLocator.GetFormatter() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Utilities/FormatterLocator.cs:183

ComplexTypeSerializer`1[System.Enum].WriteValue() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Serializers/ComplexTypeSerializer.cs:542

Serializer`1[System.Enum].WriteValue() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Serializers/Serializer.cs:279

GradientFormatter.Write() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Unity Integration/GradientFormatter.cs:62

Sirenix.Serialization.MinimalBaseFormatter`1[T].Serialize() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Formatters/MinimalBaseFormatter.cs:58

Sirenix.Serialization.MinimalBaseFormatter`1[T].Sirenix.Serialization.IFormatter.Serialize() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Formatters/MinimalBaseFormatter.cs:70

Sirenix.Serialization.ComplexTypeSerializer`1[UnityEngine.Gradient].WriteValue() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Serializers/ComplexTypeSerializer.cs:547

Sirenix.Serialization.Serializer`1[UnityEngine.Gradient].WriteValueWeak() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Serializers/Serializer.cs:260

UnitySerializationUtility.SerializeUnityObject() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Utilities/UnitySerializationUtility.cs:959

Debug.LogException()

CustomLogger.LogException() D:/Sirenix/Sirenix Solution/Sirenix.Serialization.Config/CustomLogger.cs:61

DebugContext.LogException() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Misc/SerializationConfig.cs:222

UnitySerializationUtility.SerializeUnityObject() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Utilities/UnitySerializationUtility.cs:963

UnitySerializationUtility.SerializeUnityObject() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Utilities/UnitySerializationUtility.cs:650

Sirenix.OdinInspector.SerializedMonoBehaviour.UnityEngine.ISerializationCallbackReceiver.OnBeforeSerialize() D:/Sirenix/Sirenix Solution/Sirenix.Serialization/Unity Integration/SerializedMonoBehaviour.cs:31

Comments (2)

  1. Log in to comment