JamesB 发表于 2023-4-13 10:28

Unreal Engine 4 画线DrawLines 画轨道

Unreal Engine 4 画线DrawLines 画轨道

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



前言

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

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

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

文件–新建C++类,继承Actor,然后next,命名自己随意写,我的是 drawlineActor,完成后会打开VS,有.h和.cpp文件。在.cpp文件的BeginPlay中添加以下代码,在这里只是试验一下功能,具体在哪里,看自己需求。
    TArray<FBatchedLine> lines;
        TArray<FVector>mVertexes;
        mVertexes.SetNum(4);//需要先设置个数,不然会报错,之前报了些乱七八糟的错误,经大神指点才知道需要设置
        mVertexes.X=-180.f;//这里自己随意设置数值,为了试验功能而已
        mVertexes.Y=0.f;
        mVertexes.Z=32.f;
        mVertexes.X=-215.f;
        mVertexes.Y=-120.f;
        mVertexes.Z=32.f;
        mVertexes.X=-260.f;
        mVertexes.Y=-120.f;
        mVertexes.Z=30.f;
        mVertexes.X=-200.f;
        mVertexes.Y=40.f;
        mVertexes.Z=40.f;
        ULineBatchComponent*const LineBatchComponent =GetWorld()->PersistentLineBatcher;for(auto i =0; i < mVertexes.Num()-1; i++){
                FVector start =FVector(mVertexes.X, mVertexes.Y, mVertexes.Z);
                FVector end =FVector(mVertexes.X, mVertexes.Y, mVertexes.Z);
                FBatchedLine line =FBatchedLine(start,
                        end,FLinearColor(1,0,0,1),//设置颜色、透明度0,// 设置显示时间。设为0,表示永久显示0.3,4);
                lines.Add(line);}
        LineBatchComponent->DrawLines(lines);添加以上代码后,肯定报错了,因为没有添加相应的头文件。现在在.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代码调试模式
页: [1]
查看完整版本: Unreal Engine 4 画线DrawLines 画轨道