找回密码
 立即注册
查看: 288|回复: 0

Unreal Engine 4 画线DrawLines 画轨道

[复制链接]
发表于 2023-4-13 10:28 | 显示全部楼层 |阅读模式
Unreal Engine 4 画线DrawLines 画轨道

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



前言

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

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

    文件–新建项目–空白蓝图,随便起了个项目名 draw。

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



清除线,重新画

因为项目需要,所以得不定时的把之前的线清除掉,重新根据新的数据画线,经过很多尝试,才知道是这样清除。最后加这两行代码。
  1. LineBatchComponent->BatchedLines.Empty();
  2. lines.Empty();
复制代码
代码调试

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-5 09:39 , Processed in 0.089688 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表