Unity+YDLIDAR+C# 被坑知识点总结

本文总结了在Unity项目中使用C#处理YDLIDAR雷达数据时遇到的问题,包括Unity的线程限制、数据处理错误、角度与弧度转换的混淆、数据实例化混乱、List管理及优化。建议在分线程中避免使用Unity的MonoBehaviour函数,处理角度时确保转换为弧度,并合理利用InvokeRepeating进行位置更新,以及注意List的清理。通过与PointCloudViewer工具对比数据,确保信息正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

好了,最近修改了下项目,总结下其中的坑,不过还是有点小瑕疵,,有时候会有一圈的点,不知道什么原因,数据截取不到。暂停之后数据还在一直打印。有明白的交流下。

先看下效果图:

Unity 效果图:

PointCloudViewer 效果图:(官方给的测试工具)

  1. Unity 中的脚本是继承自 MonoBehaviour,其中内在的一些函数不能用在分线程中。由于接收串口传过来的数据太多,所以主线程只接收数据,接受完后将数据传递给分线程进行处理。Unity 中的 Debug.Log ,GetCompenent,SendMessage 等等不能写在分线程中,即使有的能写类似 Debug.Log 用于辅助查看信息是否出错,在后续运行的过程中也要去掉,否则会造成数据错误。

  2. Mathf.Sin() Mathf.Cos() 参数都是弧度。重点强调,处理数据的时候自己想到了Mathf.Atan() 参数是弧度,实际应用计算位置坐标的时候又忘记了,导致效果一直不对。解析出来的是角度,通过距离和角度进行计算坐标时,使用时先将角度转为弧度再进行三角函数计算。

  3. 由于项目需求是接受完一条完整数据再进行实例化显示,而接收处理数据都在分线程中进行,接收完数据避免不了使用 Unity 内部封装的函数进行 UI 实例化,如果使用官方给的解决方案,脚本加到项目中,同时根据代码最后说明的将注释的那一段放到需要的脚本中即可使用。就会造成数据没有接收处理完就进行实例化,造成数据混乱。解决办法:不使用

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值