虚幻4C++学习文档翻译4

创建和NPC的对话窗体

我们需要创建一个继承自HUD的类

UCLASS()

class CPLUSLEARN_API AMyHUDMessage : public AHUD {

public : };

void AMyHUDMessage::DrawHUD() {

DrawText(\欢迎来到虚幻的世界!!\, FVector2D(0, 0), hudFont, FVector2D(1, 1), DrawLine(200, 300, 400, 500, FLinearColor::Blue); Super::DrawHUD();

virtual void DrawHUD() override;

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = HUDFont) UFont *hudFont; GENERATED_BODY()

FColor::White); }

我们在自己的HUD的类中定义了一个字体,并且在界面上绘出一个线框和文字

重新编译项目,我们进入UE4中,创建一个继承自MyHUD的蓝图类,同时设置我们自己的字体信息。最后在我们的游戏模式中将默认的HUD改成我们自己创建的HUD

下面我们要用一个一个列表来存放这些对话的信息,我们打开自己创建的C++的HUD类

void AMyHUDMessage::DrawHUD() {

//DrawLine(200, 300, 400, 500, FLinearColor::Blue); Super::DrawHUD();

}

void AMyHUDMessage::addMessage(Message msg) { }

messages.Add(msg); }

//当该条消息的时间小于0的时候将该条信息移除 if (messages[c].time < 0) { }

messages.RemoveAt(c);

//时间逐步缩减

messages[c].time -=GetWorld()->GetDeltaSeconds();

//使用字体绘制出我们的信息(信息,颜色,宽度+边距,高度+边距,字体)

DrawText(messages[c].message, messages[c].color, x + pad, y + pad, hudFont);

//绘制出背景

DrawRect(FLinearColor::Black, x, y, Canvas->SizeX, messageH);

float messageH = outputHeight + 2.f*pad;//信息的高度就是输出高度+2倍的间隔 float x = 0.f, y = c*messageH;

for (int c = messages.Num() - 1; c >= 0; c--) {

float outputWidth, outputHeight, pad = 10.f; //定义输出的宽度高度和间隔

//获取出信息内容大小

GetTextSize(messages[c].message, outputWidth, outputHeight, hudFont, 1.f); //DrawText(\

下面我们必须要完成我们的NPC实体

UCLASS()

class CPLUSLEARN_API ANonePla

>>鐏炴洖绱戦崗銊︽瀮<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4