Unity C# 无法在 void Start 中初始化列表:获取错误 CS0103
Unity C# Can't initialise list in void Start: getting error CS0103
我刚接触 C#(我用其他语言编程),我接到了一个任务,要在 Unity3D 游戏中记录物体的位置和旋转。
我成功地创建了在 Unity 控制台中打印当前位置和旋转设置时间的代码(void RecPoint
的部分没有 lista
),最后它将所有位置数据保存在一个文件 (void SaveToFile
).
我想做的是创建一个文件来同时保存位置和旋转,如下所示:
xposition; yposition; zposition; wrotation; xrotation; yrotation; zrotation
xposition; yposition; zposition; wrotation; xrotation; yrotation; zrotation
我想通过在 void Start 处创建空字符串列表然后一次添加位置和旋转一步(在 void RecPoint 中)来实现这一点。之后,我将修改 void SaveToFile 以保存与当前 void SaveToFile 中的内容类似的所有内容。
问题是无论我用var lista = new List<string>()
还是lista = new List<string>()
.
我得到了同样的错误 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");
}
}
}
嗯,问题是你没有在任何地方定义列表“lista”。
这样声明:public List<string> lista;
然后在 Start() 中执行:lista = new List<string>();
您可以在声明时将所有这些压缩到一行中,如下所示:public List<string> lista = new List<string>();
希望对您有所帮助!
我刚接触 C#(我用其他语言编程),我接到了一个任务,要在 Unity3D 游戏中记录物体的位置和旋转。
我成功地创建了在 Unity 控制台中打印当前位置和旋转设置时间的代码(void RecPoint
的部分没有 lista
),最后它将所有位置数据保存在一个文件 (void SaveToFile
).
我想做的是创建一个文件来同时保存位置和旋转,如下所示:
xposition; yposition; zposition; wrotation; xrotation; yrotation; zrotation
xposition; yposition; zposition; wrotation; xrotation; yrotation; zrotation
我想通过在 void Start 处创建空字符串列表然后一次添加位置和旋转一步(在 void RecPoint 中)来实现这一点。之后,我将修改 void SaveToFile 以保存与当前 void SaveToFile 中的内容类似的所有内容。
问题是无论我用var lista = new List<string>()
还是lista = new List<string>()
.
我得到了同样的错误 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");
}
}
}
嗯,问题是你没有在任何地方定义列表“lista”。
这样声明:public List<string> lista;
然后在 Start() 中执行:lista = new List<string>();
您可以在声明时将所有这些压缩到一行中,如下所示:public List<string> lista = new List<string>();
希望对您有所帮助!