,而且我很难使用CSV或TXT文件的X,Y,Z坐标在屏幕上画一条线。我尝试了线条渲染以及滑动轨迹,但是我做不到。谢谢您的帮助
答案 0 :(得分:2)
var fileContent = "";
(using var reader = new StreamReader(path))
{
fileContent = reader.ReadToEnd();
}
假定类似CSV / txt的内容
23.46, 1.0, 2.4
0.003, 7.038, 3
...
解析内容,例如使用CSVReader中的SplitCSVLine
private static string[] SplitCsvLine(string line)
{
return (from System.Text.RegularExpressions.Match m in System.Text.RegularExpressions.Regex.Matches(line,
@"(((?<x>(?=[,\r\n]+))|""(?<x>([^""]|"""")+)""|(?<x>[^,\r\n]+)),?)",
System.Text.RegularExpressions.RegexOptions.ExplicitCapture)
select m.Groups[1].Value).ToArray();
}
与float.TryParse(string, out float)一起使用,如
var lines = fileContent.Split('/n');
var points = new List<Vector3>();
foreach(var line in lines)
{
var parts = SplitCsvLine(line);
float x = float.TryParse(parts[0], out x) ? x : 0;
float y = float.TryParse(parts[1], out y) ? y : 0;
float z = float.TryParse(parts[2], out z) ? z : 0;
points.Add(new Vector3(x, y, z));
}
其中
float x = float.TryParse(parts[0], out x) ? x : 0;
是一种简短的写作形式
float x;
if(!float.TryParse(parts[0], out x))
{
x = 0;
// Alternatively you could also declare this point as invalid
// and not add this point at all
continue;
}
或者,如果您知道内容仅包含那些数字符号和逗号,没有特殊字符,则也可以简单地使用
var parts = line.Split(',');
最后应用这些要点,例如使用SetPositions
到LineRenderer
GetComponent<LineRenderer>().SetPositions(points);
不过可能会有更有效的选择。