Hi, I'm having an issue that is blocking development. I posted this issue in the Unity thread, but figured I'd post here in hopes of getting help.
I renamed my main namespace for my game scripts from Foo to Bar, and now I get
Data layout mismatch errors. I also tried replacing the old namespace in .asset files containing string names of scripts, which did not change anything. I also tried removing the assemblies and using the source scripts so that I could log which serialized asset/node is causing the issue, and I think that the ExitNode() throws the error when called for the 'comparer' node, but when I look at the source for the problem serialized asset/node, I'm not sure what I can do to fix it.
Here is the full stack trace:
Data layout mismatch; skipping past array boundary when exiting node. UnityEngine.Debug:LogError(Object) Sirenix.Serialization.CustomLogger:LogError(String) (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization.Config/CustomLogger.cs:53) Sirenix.Serialization.DebugContext:LogError(String) (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization/Misc/SerializationConfig.cs:193) Sirenix.Serialization.BinaryDataReader:ExitNode() (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization/DataReaderWriters/Binary/BinaryDataReader.cs:486) Sirenix.Serialization.ComplexTypeSerializer`1:ReadValue(IDataReader) (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization/Serializers/ComplexTypeSerializer.cs:362) Sirenix.Serialization.DictionaryFormatter`2:DeserializeImplementation(Dictionary`2&, IDataReader) (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization/Formatters/DictionaryFormatter.cs:70) Sirenix.Serialization.BaseFormatter`1:Deserialize(IDataReader) (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization/Formatters/BaseFormatter.cs:172) Sirenix.Serialization.ComplexTypeSerializer`1:ReadValue(IDataReader) (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization/Serializers/ComplexTypeSerializer.cs:332) Sirenix.Serialization.Serializer`1:ReadValueWeak(IDataReader) (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization/Serializers/Serializer.cs:249) Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, IDataReader) (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization/Utilities/UnitySerializationUtility.cs:1433) Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, Byte&, List`1&, DataFormat, DeserializationContext) (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization/Utilities/UnitySerializationUtility.cs:1346) Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, SerializationData&, DeserializationContext, Boolean, List`1) (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization/Utilities/UnitySerializationUtility.cs:1079) Sirenix.Serialization.UnitySerializationUtility:DeserializeUnityObject(Object, SerializationData&, DeserializationContext) (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization/Utilities/UnitySerializationUtility.cs:994) Sirenix.OdinInspector.SerializedScriptableObject:UnityEngine.ISerializationCallbackReceiver.OnAfterDeserialize() (at F:/Sirenix/Sirenix Solution/Sirenix.Serialization/Unity Integration/SerializedScriptableObject.cs:24) UnityEditor.BuildPlayerWindow:BuildPlayerAndRun()
Any idea on what is causing the issue? Are there specific steps that I need to take when renaming the namespace of a script that is being referenced by a serialized object? Maybe changing the string resulted in a different hashed guid, and the old hash wasn't replaced? Or maybe the different serialized asset byte size was cached somewhere, and the namespace string length change brough it out of sync with the cached length? Grasping at straws here, but trying to figure out how I can fix this.
On OSX, Unity 2018.1.1f1, 126.96.36.199.