UE4 C++常用函数使用方法总结

Posted Tanzq*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4 C++常用函数使用方法总结相关的知识,希望对你有一定的参考价值。

Delay 函数的使用

FLatentActionInfo LatentInfo;
LatentInfo.CallbackTarget = this;
LatentInfo.ExecutionFunction = "此处输入之后要调用的函数名";
LatentInfo.Linkage = 1;
LatentInfo.UUID = 100;
UKismetSystemLibrary::Delay(this, 间隔时间, LatentInfo);

在游戏运行中生成某个Actor

.h 
TSubclassOf<生成的类型的基类名> PawnToSpawn;

.cpp
GetWorld()->SpawnActor<生成的Actor类型>(生成的Actor对应的类, 出生地址, 出生旋转角度)

在游戏中生成AI控制的Actor

SpawnAIFromClass能够在生成actor的同时生成AI控制器

UAIBlueprintHelperLibrary::SpawnAIFromClass(GetWorld(), EnemyClass, nullptr, FVector(-198.f, -27.f, 95.f),
FRotator(0.f, 0.f, 0.f), false, nullptr);

使用委托函数进行碰撞检测

.h

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="XXXX")
USphereComponent* DetectSphere;

// 委托函数
UFUNCTION()
void OnDetectSphereOverlapBegin(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor,
	                                UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep,
	                                const FHitResult& SweepResult);
UFUNCTION()
void OnDetectSphereOverlapEnd(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor,
		UPrimitiveComponent* OtherComp, int32 OtherBodyIndex);

.cpp

// 绑定委托函数 
// 开始重叠的时候才会调用OnDetectSphereOverlapBegin函数
DetectSphere->OnComponentBeginOverlap.AddDynamic(this, &AXXXX::OnDetectSphereOverlapBegin);
// 结束重叠的时候才会调用OnDetectSphereOverlapBegin函数
DetectSphere->OnComponentEndOverlap.AddDynamic(this, &AXXXX::OnDetectSphereOverlapEnd);

让Actor自动按照指定的方向移动

FTransform Transform = GetActorTransform();
Transform.SetLocation(GetActorLocation() + UKismetMathLibrary::Normal(Direction) * DeltaSeconds * Speed);
SetActorTransform(Transform);

AI 自动寻路

EnemyController = GetController<AAIController>(); // 使用前要先获取AI控制器

FAIMoveRequest MoveRequest;
MoveRequest.SetGoalActor(TargetCharacter);
MoveRequest.SetAcceptanceRadius(0.f); // 之间相差多少算是移动停止了

FNavPathSharedPtr NavPath;
EnemyController->MoveTo(MoveRequest, &NavPath);

需要在地图中添加Nav Mesh Bounds Bolume来规划AI的行走路线,添加之后按下P键就可以看到绿颜色,绿色的就是代表AI可以心走的区域,可以使用Nav Modifier Volume进行修剪AI的行走区域。

AI 停止或者继续移动

EnemyController->PauseMove(RequestID); // AI 停止移动

nemyController->ResumeMove(RequestID); // AI 继续运动

将UI加载到屏幕中

  • 变量声明
// 运行游戏时的UI静态资源
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="UI")
TSubclassOf<UUserWidget> GameRunHUDAsset;

// 保存UI的变量
UPROPERTY()
UUserWidget* GameRunHUD;
  • 函数调用

先在BeginPlaye中初始化数据:

if (GameRunHUDAsset)
{
	GameRunHUD = CreateWidget<UUserWidget>(this, GameRunHUDAsset);
}

在展示它的地方使用:

if (GameRunHUD)
{
	GameRunHUD->AddToViewport();
}

在销毁它的地方使用:

if (GameRunHUD)
{
	GameRunHUD->RemoveFromViewport();
}

更新摄像机管理器中摄像机的位置

void AGameCameraManager::UpdateViewTargetInternal(FTViewTarget& OutVT, float DeltaTime)
{
	Super::UpdateViewTargetInternal(OutVT, DeltaTime);
	OutVT.POV.Location = FVector(25.f, 0.f, 535.f);
	OutVT.POV.Rotation = FRotator(-90.f, -90.f, 0.f);
	OutVT.POV.FOV = 90;
}

以上是关于UE4 C++常用函数使用方法总结的主要内容,如果未能解决你的问题,请参考以下文章

UE4 C++代理(委托)

UE4 代码总结

基于C++代码的UE4学习—— 带一个参数的FParamDelegateSignature动态代理与函数指针

python常用代码片段总结

ue4 c++ 怎么引入dll

虚幻4 C++编程经验总结