Страница 1 из 1

ToJson

СообщениеДобавлено: 21 янв 2021, 17:53
NOVA
День добрый. Пытался закинуть в String переменную список GameObject.
Выдаёт только instanceID":10074
Ни position ни rotarion ни каких других параметров, если учитывать что это камеры с кучей настроек.

Синтаксис:
Используется csharp
public List<GameObject> Cameras;

    [Multiline(20)]
    public string Data;


Cameras = GetComponent<MainCameraScript>().Cameras;
        Data = JsonUtility.ToJson(this);
 


Надо вручную это всё пихать? Тогда как плюсовать в цикле данные в переменную Data, чтобы всё это обратно прочитать?

Re: ToJson

СообщениеДобавлено: 22 янв 2021, 00:49
BornFoRdeatH
Only plain classes and structures are supported; classes derived from UnityEngine.Object (such as MonoBehaviour or ScriptableObject) are not.

Re: ToJson

СообщениеДобавлено: 23 янв 2021, 09:31
NOVA
Начинаю догонять. Но.

Создал класс.
Синтаксис:
Используется csharp
public static class FileData
    {
        public static GameObject Camera;
        public static string CameraName;
        public static Vector3 Position;
        public static Quaternion Rotation;
        public static float FOV;
        public static float FL;
        public static string SequencePath;
        public static string FileName;
    }



И написал цикл.
Синтаксис:
Используется csharp
for (int c = 0; c < GetComponent<MainCameraScript>().Cameras.Count; c++)
        {
            FileData.Camera = GetComponent<MainCameraScript>().Cameras[c];
            FileData.CameraName = GetComponent<MainCameraScript>().Cameras[c].name;
            FileData.Position = GetComponent<MainCameraScript>().Cameras[c].transform.position;
            FileData.Rotation = GetComponent<MainCameraScript>().Cameras[c].transform.rotation;
            FileData.FOV = GetComponent<MainCameraScript>().Cameras[c].GetComponent<CameraScript>().FOV;
            FileData.FL = GetComponent<MainCameraScript>().Cameras[c].GetComponent<CameraScript>().FL;
            FileData.SequencePath = GetComponent<MainCameraScript>().Cameras[c].GetComponent<CameraScript>().lastDirectory;

            Data = Data + JsonUtility.ToJson(FileData, true);
        }



Ругается на тип FileData. Хотя если перенести весь класс из public static в основной класс и использовать Data = Data + JsonUtility.ToJson(this, true); всё работает. Но мне нужны переменные в скрипте которые я не хочу записывать.

Re: ToJson

СообщениеДобавлено: 23 янв 2021, 09:54
1max1
Тебе нужен экземпляр что сериализовать его, статик убери просто и создавай через new.

Re: ToJson

СообщениеДобавлено: 23 янв 2021, 13:00
NOVA
Просто нужные перменные в глобал унёс.

Re: ToJson

СообщениеДобавлено: 24 янв 2021, 18:42
NOVA
А в чём прикол Джейсона я не пойму? Точно так же можно вручную данный в стринг запихать и сохранить и загрузить.

Re: ToJson

СообщениеДобавлено: 24 янв 2021, 18:56
1max1
Прикол в том что за тебя это уже сделали и тебе ничего писать не нужно.

Re: ToJson

СообщениеДобавлено: 25 янв 2021, 20:13
NOVA
1max1 писал(а):Прикол в том что за тебя это уже сделали и тебе ничего писать не нужно.

Нудануда. Корячусь тут с сохранением списка камер со всеми параметрами, включая 8 параметров скрипта на каждую.