csv - 如何使用 csv 或 txt 文件中的 X、Y、Z 坐标绘制一条线?
问题描述
我很难使用 CSV 或 TXT 文件的 X、Y、Z 坐标在屏幕上画线。我尝试了线条渲染和滑动轨迹,但我做不到。谢谢你的帮助
解决方案
读取文件,例如使用StreamReader.ReadToEnd
var fileContent = ""; (using var reader = new StreamReader(path)) { fileContent = reader.ReadToEnd(); }
假设一个 CSV/txt 内容像
23.46, 1.0, 2.4 0.003, 7.038, 3 ...
解析内容,例如
SplitCSVLine
使用CSVReaderprivate 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(',');
最后将这些点应用到
LineRenderer
使用SetPositionsGetComponent<LineRenderer>().SetPositions(points);
不过,可能有更有效的选择。
推荐阅读
- python-3.x - Discord 机器人掷骰错误。为什么我的代码没有达到预期的结果?
- bash - Bash 脚本中的随机字符串
- spring-boot - 在 FUSE EAP 环境中使用 Springboot 自动配置连接到 SQL-Server 的问题
- python - Python while / if循环忽略条件
- python - 如何在 Python 中的日志文件中写入标题
- datatables - 数据表状态保存刷新在关闭对话框后继续 POST 请求
- reactjs - 收到来自 axios 请求的承诺时,状态未更新操作
- c# - 在 Visual Studio 中运行 Docker Compose 时引发异常
- javascript - 有没有办法使用三元的条件作为值?
- android - 从以前的活动中检索字符串