文章目录
- ue4与pycharm联合仿真的调试问题
- 前言
- ue4端的debug过程
- pycharm端
- 一些仿真经验
- 小结
ue4与pycharm联合仿真的调试问题
前言
因为在实验中我需要用到py代码输出控制信息给到ue4中,并且希望看到py端和ue端分别在运行过程中的输出以及debug调试。所以,即使ue4中可以直接调用py代码执行,我也没有利用,同时我也不会用。
尽管我通过TCP通信将ue4与py端进行了通信,在代码执行过程中如何debug仍然是一个让我手忙脚乱的问题,有时候需要重新运行多次,才可以轻松地在想要的代码位置进行调试。
ue4端的debug过程
在ue4端的debug过程比较简单,在运行模拟游戏/仿真之后,选中一个调试对象,即可在蓝图中看到信息流的传递并在对应的引脚上停留,会输出实时的信息,从而帮助我们进行debug的调试。
同时,如果编写的蓝图有错误,在程序运行结束之后,或者编译时就会指出错误所在的地方,因此在与py端的联合仿真中,ue4的debug调试还是比较简单和直观的。
pycharm端
因为这个工程暂时只需要py文件和ue4联合仿真就能够完成任务,我使用的IDE是pycharm。本来在pycharm上进行调试也是很简单的事件,只需要打断点慢慢debug就可以了。但由于ue4端的信息是实时在运行着的,因此如果打断点的话,下一次的ue4端的输入信息会与上一次的输入差别较大,这也不是正常仿真下会出现的情况。
因此在进行pycharm端的仿真时应当首先进入“调试”状态。但该状态下是不存在断点的,也就是说代码是能够畅通无阻的运行的。当你想查看某一部分目前的代码运行是否按照你的预期,这时候应该按照以下步骤进行调试:
-
暂停ue4端的仿真,使得ue4端的所有actor、Pawn等的对象状态不再变化;
-
由于ue4输出的状态信息是不变化的,此时对应py端执行代码得到的结果也应该是不变的。打断点让代码运行到你希望断点的位置。
从而能够按照正常pycharm中的代码调试进行调试。
同时还要注意的是如果ue4和py端中有用到时间,并且时间没有同步的状况下,要注意到调试对两端运行时间所带来的影响,避免在调试过程中得到的信息较真实运行时有所不同。
一些仿真经验
经验总结:
-
首先应该仔细检查数值仿真与3D仿真中的代码是否一致,尽量能够在3D仿真的代码中复现数值仿真所得到的结果图;
-
其次应当注意到数值仿真中是右手坐标系,虚幻引擎是左手坐标系,因此虽然在算法上二者不需要进行修改,但在某些方面二者是不相同的;例如顺时针和逆时针
-
绕Z轴旋转的角取值范围是 [ − π , − π ] [-\pi, -\pi] [−π,−π],且以X轴正半轴为起始,以Y轴正半轴为增加的方向,增加图以更好地说明。
-
在3D仿真中,对于控制参数可能更加敏感,需要小心调整;
-
要注意python的数组起始是0索引,MATLAB是1;
小结
本文主要简单讲述了一下在UE4和PyCharm联合仿真中所需要主要的代码调试的问题以及一些经验。本文比较简单,属于是水文。
如果您觉得我写的不错,麻烦给我一个免费的赞!如果内容中有错误,也欢迎向我反馈。