这个问题搞了好久还是不行,贴出来让老师看看。
RPG项目中,在鼠标点击的地方Spawn一个CursorDecal。以下是我角色类中的部分代码:
头文件声明贴花组件的指针:
UPROPERTY(EditAnywhere, Category = Mouse)
TSubclassOf<class ACursorDecal> CursorDecal;
源文件中的包含情况:
#include "RPGBaseCharacter.h"
#include "Engine/Engine.h"
#include "Camera/CameraComponent.h"
#include "GameFramework/CharacterMovementComponent.h"
#include "GameFramework/SpringArmComponent.h"
#include "GameFramework/PlayerController.h"
#include "RPGProject.h"
#include "Engine/World.h"
#include "Blueprint/AIBlueprintHelperLibrary.h"
#include "MainUserWidget.h"
构造函数中并没有给这个指针赋值,老师视频中是在外面蓝图中赋值的,不知道问题是不是出在这里。
下面是BindAction中绑定的一个函数,鼠标点击地面时,强制取消键盘控制,获取碰撞信息,生成一个贴花,角色基于寻路系统移动到碰撞点。
void ARPGBaseCharacter::OnDestinationClick()
{
CancelMoveToDestination();
bHasMouseMoveCommand = true;
FHitResult HitResult;
PC->GetHitResultUnderCursor(CursorTraceChannel, false, HitResult); //获取碰撞信息
if (HitResult.bBlockingHit)
{
const UWorld* World = GetWorld();
FActorSpawnParameters SpawnParam;
SpawnParam.Owner = this;
if (World)
{
UE_LOG(LogTemp, Warning, TEXT("Click!"));
//World->SpawnActor<ACursorDecal>(CursorDecal, HitResult.Location, FRotator::ZeroRotator, SpawnParam);
MoveToDestination(HitResult.ImpactPoint);
}
}
}
现在的问题出在我注释掉的那句代码,如果注释掉的话一切正常编译可以通过,可以取消移动以及寻路,打印的日志也能输出。取消注释的话编译报错。IDE给的错误提示画在World后面的指针引用符->上面,提示“没有与参数列表和对象匹配的重载函数”。
编辑器的报错是这样(没什么卵用):
Compiling game modules for hot reload
Building 3 actions with 8 processes...
[1/3] RPGBaseCharacter.cpp
D:\MyProjects\UE4Projects\RPGProject\Source\RPGProject\Private\RPGBaseCharacter.cpp(170) : error C2662: ??T *UWorld::SpawnActor<ACursorDecal>(UClass *,const FVector &,const FRotator &,const FActorSpawnParameters &)??: ???????this???????const UWorld????????UWorld &??
with
[
T=ACursorDecal
]
D:\MyProjects\UE4Projects\RPGProject\Source\RPGProject\Private\RPGBaseCharacter.cpp(170): note: ???????????
ERROR: UBT ERROR: Failed to produce item: D:\MyProjects\UE4Projects\RPGProject\Binaries\Win64\UE4Editor-RPGProject-2174.dll
(see ../Programs/UnrealBuildTool/Log.txt for full exception trace)
Total build time: 3.03 seconds (Parallel executor: 0.00 seconds)
我的虚幻版本是4.20.3,希望老师给看看哪出问题了,我觉得参数没有写错啊,和视频中的一样。