Я только что обновил путь мой код загружает файл:Unity3D не в exicute Newtonsoft JSon код
string filename = Path.Combine(Data.BaseDir, "entities.txt");
if (File.Exists(filename))
{
string tempJson = System.IO.File.ReadAllText(filename);
var settings = new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.Objects
};
IList parsedEntities = (IList)JsonConvert.DeserializeObject<List<Entity>>(tempJson, settings);
foreach (Entity e in parsedEntities)
{
//e.Initialise();
Map.Get(e.Coord).Entity = e;
}
}
Этот код компилируется, но тогда имеет исключение во время выполнения в редакторе Unity 5. (журнал ниже) Этот код, как правило, распространен с моим редактором, который представляет собой проект окон, и он отлично работает при компиляции визуальной студией. Мой Newtonsoft.Json.dll
говорит, что это версия 7.
Это проблема с компилятором Unity? Являются ли определенные части Newtonsoft Json DLL несовместимыми с версией .Net? Как я могу написать это, чтобы быть совместимым с Unity?
Вход:
JsonSerializationException: Не удалось загрузить сборку 'MO1Common. Newtonsoft.Json.Serialization.DefaultSerializationBinder.GetTypeFromTypeNameKey (TypeNameKey typeNameKey) Newtonsoft.Json.Utilities.ThreadSafeStore
2[Newtonsoft.Json.Serialization.DefaultSerializationBinder+TypeNameKey,System.Type].AddValue (TypeNameKey key) Newtonsoft.Json.Utilities.ThreadSafeStore
2 [Newtonsoft.Json.Serialization.DefaultSerializationBinder + TypeNameKey, System.Type] .get (клавиша TypeNameKey) Newtonsoft.Json. Serialization.DefaultSerializationBinder.BindToType (System.String AssemblyName, System.String TYPENAME) Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ResolveTypeName (Newtonsoft.Json.JsonReader читатель, System.Type & OBJECTTYPE, Newtonsoft.Json.Serialization.JsonContract & контракт, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, System.String qualifiedTypeN ame) Rethrow as JsonSerializationException: Тип разрешения ошибки указан в JSON 'MO1.Definitions.Entities.Charactor, MO1Common'. Path '[0]. $ Type', строка 1, позиция 57. Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ResolveTypeName (Newtonsoft.Json.JsonReader reader, System.Type & objectType, Newtonsoft.Json.Serialization.JsonContract & контракт, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, System.String qualifiedTypeName) Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadMetadataProperties (Newtonsoft.Json.JsonReader reader, System.Type & objectType, Newtonsoft.Json.Serialization.JsonContract & контракт, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty co ntainerMember, System.Object existingValue, System.Object & новое_значение, System.String & идентификатор) Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject (Newtonsoft.Json.JsonReader читатель, System.Type OBJECTTYPE, контракт Newtonsoft.Json.Serialization.JsonContract , Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, System.Object existingValue) Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal (Newtonsoft.Json.JsonReader reader , System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, System.Object existingValue) Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList (список IList, Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonArrayContract contract, Newtonsoft.Json.Serialization.JsonProperty containerProperty, System.String идентификатор)
Вы пробовали ссылаться на недостающую сборку (MO1Common.dll) на проект? – AgentFire
Хорошо. Говоря со старшим программистом, я сейчас понимаю основную проблему. Unity не включает те же сборные библиотеки, которые существуют в моем проекте Visual studio. Он просто захватывает все классы и создает одну сборную библиотеку. Мне посоветовали обойти это, используя «IfDefs». Я отправлю ответ, если он будет работать. –