我刚接触C#(我用其他语言编程),我得到了一项任务,记录Unity3D游戏中物体的位置和旋转。
我成功地创建了在Unity控制台中打印当前位置和旋转的代码,并设置了定时(void RecPoint中没有“lista”的部分),最后它将所有位置数据保存在一个文件中(void SaveToFile)。
我想做的是创建一个文件,同时保存位置和旋转,如下所示:
xposition;位置;zposition;旋转;X旋转;眩晕;zrotation
xposition;位置;zposition;旋转;X旋转;眩晕;zrotation
我想通过在void开始处创建空字符串列表,然后每次添加一个位置和旋转(在void RecPoint中)。之后,我会修改void SaveToFile,将所有内容保存为当前void SaveToFile中的内容。
问题是无论我是否使用
var lista=新列表();
或
lista=新列表();
我得到了同样的错误CS0103,唯一的区别是当使用var lista时,我没有得到这一行的CS0103错误。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ReadData : MonoBehaviour
{
public string fileName = "D:/position.txt";
public List<Vector3> positions;
public List<Quaternion> rotations;
public float interval = 0.2f;
public float tSample = 1.0f;
void Start() {
positions = new List<Vector3>();
rotations = new List<Quaternion>();
var lista = new List<string>();
InvokeRepeating("RecPoint", tSample, interval);
}
void RecPoint()
{
positions.Add(transform.position);
rotations.Add(transform.rotation);
lista.Add(transform.position.ToString());
lista.Add(transform.rotation.ToString());
Debug.Log("position " + transform.position + " rotation " + transform.rotation);
}
void SaveToFile(string fileName)
{
foreach (Vector3 pos in positions)
{
string line = System.String.Format("{0,3:f2};{1,3:f2};{2,3:f2}\r\n", pos.x, pos.y, pos.z);
System.IO.File.AppendAllText(fileName, line);
}
}
void Update()
{
if (Input.GetKeyDown(KeyCode.O))
{
CancelInvoke("RecPoint");
SaveToFile(fileName);
Debug.Log("Koniec czytania danych, zapisujÄ do pliku");
}
}
}