我正在尝试将数据写入文件。我想要做的就是让每个函数打开一个文件(如果存在),对其进行写入,然后在下一个函数之前将其关闭。下面是我到目前为止获得的代码,它确实写入了文件,但不是我所希望的那样。
例如,我希望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);
}
}
您到底是什么问题?对WriteInitialDataToFile方法有多个请求?您可以锁定。
...
private static readonly object LockObject = new object();
...
void WriteInitialDataToFile()
{
string path = Application.persistentDataPath + fileName;
if (!File.Exists(path))
{
File.WriteAllText(path, "");
lock (LockObject){
GetInitialRoomData();
GetInitialTargetData();
string json = JsonConvert.SerializeObject(saveDataList);
Debug.Log(json);
File.AppendAllText(path, json);
}
}