Unity аварийно завершает работу после запуска сценария сохранения файлаC#

Место общения программистов C#
Anonymous
Unity аварийно завершает работу после запуска сценария сохранения файла

Сообщение Anonymous »

Я пытаюсь создать файл сохранения, в котором сохраняются положение и скорость всех объектов на сцене, однако при вызове OnSave() редактор Unity полностью зависает и, похоже, ничего не делает.
Это мой код:
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
using System.IO;
using System;

public class DataService : MonoBehaviour
{
string path = Directory.GetCurrentDirectory() + "/SaveFileGame.Json";
public SaveFile Saver;

public List GB_list = new List();
public List VEL_list = new List();
public List TRANS_list = new List();

public void OnSave()
{
GB_list.Clear();
VEL_list.Clear();
TRANS_list.Clear();

var componentRB = GameObject.FindObjectsByType(FindObjectsSortMode.None);//Adds all rigidbody components

for (int i = 0; i < componentRB.Length; i++)
{
if (! componentRB.gameObject.CompareTag("Player"))
{
// removes BIMOS Player objects
VEL_list.Add(componentRB.linearVelocity);//Adds velocity to list
GB_list.Add(componentRB.gameObject);//Adds GameObject to list
TRANS_list.Add(componentRB.gameObject.GetComponent().position); // Adds Transform To list
}
}

Saver.SAVED_GB = GB_list;
Saver.SAVED_VEL = VEL_list;
Saver.SAVED_TRANS = TRANS_list; // applies all lists to SaveFile script to be easily re applied to Json

if (File.Exists(path))
{
File.Delete(path);
string json = JsonConvert.SerializeObject(Saver, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore});
File.WriteAllText(path, json); //overwrites file if it already exists
}
else
{
File.Create(path);
string json = JsonConvert.SerializeObject(Saver, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore}); //creates new file if it doesn't
File.WriteAllText(path,json);
}
}
}

Я использовал приведенный ниже код, чтобы предотвратить цикл самоссылки. Неужели цикл просто повторяется снова и снова, вызывая сбой, но игнорируется, чтобы предотвратить ошибку?
JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore});

Изменить: это сценарий сохранения файла:
using UnityEngine;
using BIMOS;
using System.Collections.Generic;

[System.Serializable]
public class SaveFile
{
public List SAVED_GB = new List();
public List SAVED_VEL = new List();
public List SAVED_TRANS = new List();
}


Подробнее: https://stackoverflow.com/questions/799 ... ile-script

Вернуться в «C#»