Как сделать так, чтобы одна функция открывала файл, записывала в него, а затем закрывала файл, прежде чем следующая функция записывает в него? - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь записать данные в файл. Я хочу, чтобы каждая функция открывала файл, если он существует, записывал в него и затем закрывал перед следующей функцией. Ниже приведен код, который я получил до сих пор, который записывает в файл, но не так, как я хочу, как упоминалось.

Например, я хочу, чтобы GetInitialRoomData () сначала открывала, записывала и закрывала файл. Затем следующая функция GetInitialTargetData () откроет, запишет и закроет файл. Любые идеи / код будет оценен? Спасибо!

void WriteInitialDataToFile()
    {
        string path = Application.persistentDataPath + fileName;
        if (!File.Exists(path))
        {           
            File.WriteAllText(path, "");            
        }

        GetInitialRoomData();
        GetInitialTargetData();

        string json = JsonConvert.SerializeObject(saveDataList);
        Debug.Log(json);
        File.AppendAllText(path, json);
    }

    void GetInitialRoomData()
    {
        foreach (GameObject roomObject in GameObject.FindGameObjectsWithTag("Cell"))
        {
            saveRoomObject = new SaveRoomData(roomObject.name, roomObject.transform.position);
            saveDataList.Add(saveRoomObject);
        }
    }

    void GetInitialTargetData() 
    {
        foreach (GameObject targetObject in GameObject.FindGameObjectsWithTag("Target")) 
        {
            saveTargetObject = new SaveRoomData(targetObject.name, targetObject.transform.position, targetObject.transform.eulerAngles);
            saveDataList.Add(saveTargetObject);
        }
    }

1 Ответ

0 голосов
/ 24 апреля 2020

Я думаю, что ваша проблема не в том, как открыть и написать файл, вы уже сделали это с помощью функции File.AppendAllText. Вы не можете сериализовать List напрямую при использовании функции SerializeObject. И, наконец, в вашем случае JsonConvert.SerializeObject(saveDataList); вернет пустую строку, и ваш файл тоже будет пустым. Вместо этого используйте класс или массив ( Подробнее )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...