Unreal Engine 4 画线DrawLines 画轨道

  • 前言
    • 环境配置
    • 实现步骤
    • 清除线,重新画
    • 代码调试

前言

刚接触UE4没几天,从头开始实现了画轨道的功能,自己记录一下实现过程以及遇到的问题。

环境配置

因为电脑上先安装的VS2017,后来才安装的UE4,所以在UE4用到VS的时候有些问题,打不开VS,后来发现是一些需要的组件没有安装,所以搜一下UE4+VS2017配置的教程,看看安装的时候需要哪些组件,再在VS里添加上就好了。

实现步骤

  1. 文件–新建项目–空白蓝图,随便起了个项目名 draw。
  2. 文件–新建C++类,继承Actor,然后next,命名自己随意写,我的是 drawlineActor,完成后会打开VS,有.h和.cpp文件。
  3. 在.cpp文件的BeginPlay中添加以下代码,在这里只是试验一下功能,具体在哪里,看自己需求。
    TArray<FBatchedLine> lines;  TArray<FVector>  mVertexes;mVertexes.SetNum(4);  //需要先设置个数,不然会报错,之前报了些乱七八糟的错误,经大神指点才知道需要设置mVertexes[0].X = -180.f;  //这里自己随意设置数值,为了试验功能而已mVertexes[0].Y = 0.f;mVertexes[0].Z = 32.f;mVertexes[1].X = -215.f;mVertexes[1].Y = -120.f;mVertexes[1].Z = 32.f;mVertexes[2].X = -260.f;mVertexes[2].Y = -120.f;mVertexes[2].Z = 30.f;mVertexes[3].X = -200.f;mVertexes[3].Y = 40.f;mVertexes[3].Z = 40.f;ULineBatchComponent* const LineBatchComponent = GetWorld()->PersistentLineBatcher;for (auto i = 0; i < mVertexes.Num() - 1; i++){FVector start = FVector(mVertexes[i].X, mVertexes[i].Y, mVertexes[i].Z);FVector end = FVector(mVertexes[i + 1].X, mVertexes[i + 1].Y, mVertexes[i + 1].Z);FBatchedLine line = FBatchedLine(start,end,FLinearColor(1, 0, 0, 1),  //设置颜色、透明度0, // 设置显示时间。设为0,表示永久显示0.3,4);lines.Add(line);}LineBatchComponent->DrawLines(lines);
  1. 添加以上代码后,肯定报错了,因为没有添加相应的头文件。现在在.h中添加相应头文件,但是需要保证generated.h在最后。
#include "Math/Vector.h"
#include "Components/LineBatchComponent.h"


虽然这几个地方会标红,但是可以忽略,待会编译运行之后就没了。我也不知原因。


5. 在UE4中,选择新建空白蓝图类,点击之后,在所有类中,搜索自己创建的类,我的是 drawlineActor。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190824165220710.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk4OTgyNQ==,size_16,color_FFFFFF,t_70
6. 创建之后,在这里找到他,并将它拖到场景中,任意位置就可以。

7. 将VS中的代码进行生成,结束后在UE4点击编译,结束后,播放。

清除线,重新画

因为项目需要,所以得不定时的把之前的线清除掉,重新根据新的数据画线,经过很多尝试,才知道是这样清除。最后加这两行代码。

LineBatchComponent->BatchedLines.Empty();
lines.Empty();

代码调试

期间遇到很多问题,比如线画不出来等,所以就需要调试代码,调试步骤见以下链接,讲的挺清楚的。
UE4–VS代码调试模式

Unreal Engine 4 画线DrawLines 画轨道相关推荐

  1. C#编写画直线,简单画线,鼠标交互画线,画一条线

    从最简单C#窗体画线开始,直接打开VS,选择C#的窗体应用程序,然后把代码放进去,事件绑定就OK,下面是详细步骤. using System; using System.Collections.Gen ...

  2. MFC 画线,画刷,文本

    CPaintDC dc(this);//只能在OnPaint函数中使用 CClientDC dc(this);//在哪里使用都可以 画直线 获得设备描述表->MoveTo -->LineT ...

  3. Android在图片画线(放大,旋转,平移后可继续正确画线,限制画线区域)

    最近因为公司业务需求,需要给学校的老师们做一个在手机和电脑上同步进行图片上画线批注的效果.刚开始在github上看了几天, 但跟我们要求吻合的开源项目几乎没有.最后只能自己来实现一个相应的功能,经过一 ...

  4. Android动态画线 坐标画线动画

    效果图如下 根据相对于图片本身的坐标xy数组 基于view的左上角为原点 在图片上动态画线 //参考数据类型//pointList [PointEntity(pointX=1, pointY=1), ...

  5. android自动画线,android中实现自定义画线,画圆,画矩形,使用自定义字体

    首先,新建xml文件,resource type为drawble,root element为shape 一.自定义画线 android:shape="line" > andr ...

  6. 基于HTML5 画布功能canvas的绘画板:画线、画圆、画矩形、橡皮、改变线条

    写在前面 试看链接: https://yyywwwqqq.coding.me/draw 项目下载地址:https://coding.net/u/yyywwwqqq/p/draw 希望您能点个fork ...

  7. 【玩转嵌入式屏幕显示】(三)TFT-LCD屏幕打点 + 画线 + 画矩形 + 画圆Bresenham算法实现(基于打点函数,算法可移植到任何屏幕的驱动程序之上)

    0. 引言 TFT-LCD屏幕的画直线.画斜线.画矩形.画圆等算法都是基于打点函数的,所以此程序可以移植到任何屏幕的基本驱动程序之上. 1. 打点函数 -- 底层函数(移植需修改) 打点函数其实就是屏 ...

  8. 小学计算机画线反思,画线段图解决问题教学反思

    画线段图解决问题教学反思 作为一位刚到岗的人民教师,我们的工作之一就是课堂教学,写教学反思能总结教学过程中的很多讲课技巧,教学反思我们应该怎么写呢?以下是小编整理的画线段图解决问题教学反思,欢迎阅读与 ...

  9. cad的lisp画线_CAD画缓和曲线lisp程序

    注: 本程序, 缓和曲线段拟合长度为 0.4m , 如需更改拟合长度, 将程序的第 8 行 (repeat(FIX(/Ls0.4)) 及 9 行 (setql(+l(/Ls(FIX(/Ls0.4))) ...

最新文章

  1. NOIP2018 赛前集训总结反思
  2. python网络爬虫文献综述怎么写_毕业论文的文献综述怎么写
  3. oracle账号区分大小写吗,实战Oracle 11g用户密码不区分大小写
  4. 笔记:Zygote和SystemServer进程启动过程
  5. mysql declare 赋值_sql server和mysql变量赋值的区别 以及 MySql Declare
  6. 【转】如何让ucgui支持24位色(24bpp)
  7. php jsonerrorsyntax,php – json_decode返回JSON_ERROR_SYNTAX,但在线格式化程序表示JSON可以...
  8. Cocos2d-x中使用第三方so库
  9. 多线程中,NSOperationQueue和GCD的区别
  10. 半小时掌握 Jupyter Notebook常用用法
  11. java 对象排重_现代化的 Java (八)——重说对象序列化
  12. 嵌入式系统开发-麦子学院(11)——ARM Cortex A8 硬件基础(1)
  13. 〖Python 数据库开发实战 - MySQL篇㉒〗- 子查询的语法规则
  14. Windows调出软键盘
  15. LAB3 PartA 用户环境与异常处理
  16. excel 导出加水印
  17. 枯燥的生活需要每日情话
  18. 视频教程-数据中台-数据仓库建模设计方法和实现-数据仓库
  19. ubuntu11.10 安装谷歌拼音输入法详细步骤
  20. 修改Tomcat服务器启动图标

热门文章

  1. html5 抽奖效果,html5+css3实现抽奖活动的效果
  2. Docker:使用dockerfile生成镜像错误:The system cannot find the path specified.
  3. YRCloudFile新版本携数据分层功能闪亮发布
  4. opencv之模板匹配(初)
  5. FTP服务端安装-serV-U
  6. wifi android 指令,求大神解答,安卓按键精灵开启关闭手机wifi的指令
  7. 四家银行使用R3 Corda平台完成10万欧元商业票据交易
  8. 字节与字符与常见编码方式
  9. 基础数学问题3(洛谷)
  10. requestPermissions读写手机存储权限_单片机实例分享,RFID卡读写器的设计