diff --git a/Source/Engine/Serialization/JsonSerializer.cs b/Source/Engine/Serialization/JsonSerializer.cs index c8d00567a..179adf364 100644 --- a/Source/Engine/Serialization/JsonSerializer.cs +++ b/Source/Engine/Serialization/JsonSerializer.cs @@ -507,16 +507,22 @@ namespace FlaxEngine.Json cache.MemoryStream.Initialize(jsonBuffer, jsonLength); cache.Reader.DiscardBufferedData(); var jsonReader = new JsonTextReader(cache.Reader); - if (*jsonBuffer != (byte)'{' && input is LocalizedString asLocalizedString) + if (*jsonBuffer != (byte)'{') { // Hack for objects that are serialized into sth different thant "{..}" (eg. LocalizedString can be saved as plain string if not using localization) - asLocalizedString.Id = null; - asLocalizedString.Value = jsonReader.ReadAsString(); - } - else - { - cache.JsonSerializer.Populate(jsonReader, input); + if (input is LocalizedString asLocalizedString) + { + asLocalizedString.Id = null; + asLocalizedString.Value = jsonReader.ReadAsString(); + return; + } + if (input is SceneReference) + { + typeof(SceneReference).GetField("ID").SetValue(input, ParseID(jsonReader.ReadAsString())); + return; + } } + cache.JsonSerializer.Populate(jsonReader, input); if (cache.JsonSerializer.CheckAdditionalContent) { while (jsonReader.Read())