2015-08-03 2 views
2

Я пытаюсь сериализовать весь GameObject с помощью Newtonsoft.Json. Когда я сериализовать объект с JsonConvert он выдает ошибку:Unity 5 GameObject сериализация

NotSupportedException: rigidbody property has been deprecated 
    UnityEngine.GameObject.get_rigidbody() (at C:/buildslave/unity/build/Runtime/Export/UnityEngineGameObject_Deprecated.cs:23) 
(wrapper dynamic-method) UnityEngine.GameObject.Getrigidbody (object) <IL 0x00006, 0x00073> 
Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue (object) (at Assets/JsonDotNet/Source/Serialization/DynamicValueProvider.cs:104) 
Rethrow as JsonSerializationException: Error getting value from 'rigidbody' on 'UnityEngine.GameObject'. 
Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue (System.Object target) (at Assets/JsonDotNet/Source/Serialization/DynamicValueProvider.cs:108) 
Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject (Newtonsoft.Json.JsonWriter writer, System.Object value, Newtonsoft.Json.Serialization.JsonObjectContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContract collectionValueContract) (at Assets/JsonDotNet/Source/Serialization/JsonSerializerInternalWriter.cs:338) 

Почему это происходит?

Существует проблема здесь:

public object GetValue(object target) 
    { 
     try 
     { 
     if (_getter == null) 
      _getter = DynamicReflectionDelegateFactory.Instance.CreateGet<object>(_memberInfo); 

     return _getter(target); 
     } 
     catch (Exception ex) 
     { 
     throw new JsonSerializationException("Error getting value from '{0}' on '{1}'.".FormatWith(CultureInfo.InvariantCulture, _memberInfo.Name, target.GetType()), ex); 
     } 
    } 

Это часть DynamicValueProvider.cs

ответ

1

я не знаю о Newtonsoft.Json, но, судя по сообщению об ошибке - геймобжекты собственности rigidbody было устаревшие в Unity 5 вместе с некоторыми другими общими бытовыми устройствами, см. here и here.

Все звонки на номер rigidbody вместо этого необходимо заменить на GetComponent<Rigidbody>().

+0

Проблема заключается в добавленной части. – metalowy

Смежные вопросы