C# 有没有办法将数组中的数据保存到文本文件中
我正在用unity和c做一个测验。最后是一个带有切换问题和输入字段的调查,我正在使用数组保存调查中的数据。是否有任何方法可以将存储在数组中的内容放入文本文件中,以便稍后打开? 以下是我的调查代码:C# 有没有办法将数组中的数据保存到文本文件中,c#,unity3d,survey,C#,Unity3d,Survey,我正在用unity和c做一个测验。最后是一个带有切换问题和输入字段的调查,我正在使用数组保存调查中的数据。是否有任何方法可以将存储在数组中的内容放入文本文件中,以便稍后打开? 以下是我的调查代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class UIScript07 : MonoBehaviour { pub
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UIScript07 : MonoBehaviour
{
public GameObject[] questionGroupArr;
public QAClass07[] qaArr;
public GameObject AnwerPanel;
void Start()
{
qaArr = new QAClass07[questionGroupArr.Length];
}
void Update()
{
}
public void SubmitAnswer()
{
for (int i = 0; i < qaArr.Length; i++)
{
qaArr[i] = ReadQuestionAndAnswer(questionGroupArr[i]);
}
}
QAClass07 ReadQuestionAndAnswer(GameObject questionGroup)
{
QAClass07 result = new QAClass07();
GameObject q = questionGroup.transform.Find("Question").gameObject;
GameObject a = questionGroup.transform.Find("Answer").gameObject;
result.Question = q.GetComponent<Text>().text;
if (a.GetComponent<InputField>() != null)
{
result.Answer = a.transform.Find("Text").GetComponent<Text>().text;
}
else if (a.GetComponent<InputField>()== null)
{
string s = "";
int counter = 0;
for (int i = 0; i < a.transform.childCount; i++)
{
if (a.transform.GetChild(i).GetComponent<Toggle>().isOn)
{
if (counter != 0)
{
s = s + ",";
}
s = s + a.transform.GetChild(i).Find("Label").GetComponent<Text>().text;
counter++;
}
if (i == a.transform.childCount - 1)
{
s = s + ".";
}
}
result.Answer = s;
}
return result;
}
[System.Serializable]
public class QAClass07
{
public string Question = "";
public string Answer = "";
}
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共类UIScript 07:单一行为
{
公共游戏对象[]问题组arr;
公共QAClass07[]qaArr;
公共游戏对象面板;
void Start()
{
QARR=新QAClass07[问题组阵列长度];
}
无效更新()
{
}
公共无效提交人()
{
for(int i=0;i
您可以将数组数据保存为json对象,并将其保存为文本文件。
如果您希望自定义类也保存到json,那么应该添加**[System.Serializable],您已经添加了**[System.Serializable]。然后,为了保存任何序列化对象,您可以创建一个序列化类,您可以添加每个变量。下面是示例工作流
[Serializable]
public class SaveObject
{
public GameObject[] questionGroup;
public string playerName;
public QAClass07[] qaArr;
public GameObject AnswerPanel;
}
[System.Serializable]
public class QAClass07
{
public string Question = "";
public string Answer = "";
}
public void Save()
{
var saveObject = new SaveObject()
{
AnswerPanel = GetAnswerPanel(),
playerName = GetPlayerName(),
qaArr = GetqaArr,
questionGroup = GetquestionGroup
};
string saveText = JsonUtility.ToJson(saveObject);
File.WriteAllText(Application.persistentDataPath + "/SAVES/save.txt", saveText);
}
public void LoadQ()
{
if (File.Exists(Application.persistentDataPath + "/SAVES/save.txt"))
{
isLoading = true;
string saveText = File.ReadAllText(Application.persistentDataPath + "/SAVES/save.txt");
var saveObject = JsonUtility.FromJson<SaveObject>(saveText);
// You can load back all objects from saveObject in same way. Load and Get methods are random. You get the point
LoadAnswerPanel(saveObject.AnswerPanel);
}
}
[可序列化]
公共类存储对象
{
公共游戏对象组;
公共字符串播放器名称;
公共QAClass07[]qaArr;
公共游戏对象应答面板;
}
[系统可序列化]
公开课QAClass07
{
公共字符串问题=”;
公共字符串答案=”;
}
公共作废保存()
{
var saveObject=new saveObject()
{
AnswerPanel=GetAnswerPanel(),
playerName=GetPlayerName(),
qaArr=GetqaArr,
questionGroup=GetquestionGroup
};
字符串saveText=JsonUtility.ToJson(saveObject);
File.WriteAllText(Application.persistentDataPath+“/SAVES/save.txt”,saveText);
}
公共void LoadQ()
{
if(File.Exists(Application.persistentDataPath+“/SAVES/save.txt”))
{
isLoading=true;
字符串saveText=File.ReadAllText(Application.persistentDataPath+“/SAVES/save.txt”);
var saveObject=JsonUtility.FromJson(saveText);
//您可以用相同的方式从saveObject加载回所有对象。加载和获取方法是随机的。您得到了要点
LoadAnswerPanel(saveObject.AnswerPanel);
}
}
之所以有一个名为SaveObject的类,是因为它收集了一个类中的所有数据,并保存到json,然后轻松地从json加载回来。是的,您可以写入文本文件。你做过任何研究吗?例如,这是否回答了你的问题?