VS не видит Newton Json.Net

Рейтинг: 0Ответов: 1Опубликовано: 22.08.2023

Библиотеку установил с помощью менеджера пакетов нугет, при этом в коде для юнити VS не видит эту библиотеку. Что нужно сделать, чтобы он начал видеть эту библиотеку?

Код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using Newtonsoft.Json; // Вот эту библиотеку не видит и выдает ошибку

namespace DB
{

    [System.Serializable]
    public class Stats : MonoBehaviour
    {

        

        public PlayerData playerData;
        Player player = new("Mendzek", 30, 5);
        public ForPlayerData forPlayerData;
        [HideInInspector]
        public string path = "D:\\Unity\\Unity projects\\Darkest Bone\\Darkest Bone\\Assets";
        [HideInInspector]
        public string jsonPlayerStats = "Player stats.json";
        private void Start()
        {
            
            forPlayerData.data = new List<Player>();
            forPlayerData.data.Add(player);
            savePlayerStats();
            loadPlayerStats();
            Debug.Log("Name: " + playerData.name + " HP: " + playerData.HP + " damage: " + playerData.damage);
            
        }
        void savePlayerStats()
        {
            string json = JsonConvert.SerializeObject(player);
            File.WriteAllText(path, json);
        }
        void loadPlayerStats()
        {
            player = JsonConvert.DeserializeObject<Player>(path + jsonPlayerStats);
        }
    }
}

Ошибка: Assets\Skripts\Stats.cs(5,7): error CS0246: The type or namespace name 'Newtonsoft' could not be found (are you missing a using directive or an assembly reference?)

Ответы

▲ 3Принят

Unity3D Json

Не видит Newtonsoft.Json, потому, что этой библиотеки нет. Открой Ссылки в Assembly-CSharp в твоем проекте и сам посмотри.

Более того под IL2CPP, она не работает, как и System.Text.Json, который так-же отсутствует в сборе Unity в виду бесполезнлсти.

Для работы с объектами в Unity есть JsonUtility.

public class JsonUtilityTest : MonoBehaviour
{
    private const string Key = "Test";

    private struct TestPiggy
    {
        public int value;
    }

    [ContextMenu("Save")]
    public void Save ()
    {
        TestPiggy myPiggy = new TestPiggy() { value = 1 };
        string json = JsonUtility.ToJson(myPiggy);
        PlayerPrefs.SetString(Key, json);
        Debug.Log(json);
    }

    [ContextMenu("Load")]
    public void Load ()
    {
        string json = PlayerPrefs.GetString(Key);
        TestPiggy myPiggy = JsonUtility.FromJson<TestPiggy>(json);
        Debug.Log(myPiggy.value);
    }
}

Для работы с кастумными JsonObject, есть решения в Asset Store.