好了,最近修改了下项目,总结下其中的坑,不过还是有点小瑕疵,,有时候会有一圈的点,不知道什么原因,数据截取不到。暂停之后数据还在一直打印。有明白的交流下。
先看下效果图:
Unity 效果图:
PointCloudViewer 效果图:(官方给的测试工具)
-
Unity 中的脚本是继承自 MonoBehaviour,其中内在的一些函数不能用在分线程中。由于接收串口传过来的数据太多,所以主线程只接收数据,接受完后将数据传递给分线程进行处理。Unity 中的 Debug.Log ,GetCompenent,SendMessage 等等不能写在分线程中,即使有的能写类似 Debug.Log 用于辅助查看信息是否出错,在后续运行的过程中也要去掉,否则会造成数据错误。
-
Mathf.Sin() Mathf.Cos() 参数都是弧度。重点强调,处理数据的时候自己想到了Mathf.Atan() 参数是弧度,实际应用计算位置坐标的时候又忘记了,导致效果一直不对。解析出来的是角度,通过距离和角度进行计算坐标时,使用时先将角度转为弧度再进行三角函数计算。
-
由于项目需求是接受完一条完整数据再进行实例化显示,而接收处理数据都在分线程中进行,接收完数据避免不了使用 Unity 内部封装的函数进行 UI 实例化,如果使用官方给的解决方案,脚本加到项目中,同时根据代码最后说明的将注释的那一段放到需要的脚本中即可使用。就会造成数据没有接收处理完就进行实例化,造成数据混乱。解决办法:不使用