- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 UE4 开发的新手,我学习过 Udemy 的虚幻引擎开发类(class)。我在一个 Actor 上创建了一个新组件,名为 PositionReporter,头文件为 PositionReporter.h
#pragma once
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "PositionReporter.generated.h"
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class BUILDINGESCAPE_API UPositionReporter : public UActorComponent
{
GENERATED_BODY()
public:
// Sets default values for this component's properties
UPositionReporter();
protected:
// Called when the game starts
virtual void BeginPlay() override;
public:
// Called every frame
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
};
PositionReporter.cpp 中的代码是
#include "PositionReporter.h"
// Sets default values for this component's properties
UPositionReporter::UPositionReporter()
{
// Set this component to be initialized when the game starts, and to be ticked every frame. You can turn these features
// off to improve performance if you don't need them.
PrimaryComponentTick.bCanEverTick = true;
// ...
}
// Called when the game starts
void UPositionReporter::BeginPlay()
{
Super::BeginPlay();
FString t = GetOwner()->GetActorLabel();
UE_LOG(LogTemp, Warning, TEXT("Position Reporter reporting for duty on %s"), *t);
}
// Called every frame
void UPositionReporter::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
// ...
}
如您所见,我现在正尝试在指向通过 GetObject() 检索到的 AActor 的指针上调用 GetName 函数。
但是,一旦我键入“GetObject()->”,就不会弹出自动完成(就像在视频中那样),当我手动添加“GetName()”时,我会收到编译器错误“指向不完整类的指针”类型不被允许”。
哪里做错了?我是否缺少进口商品?我已经将我的代码与 Ben 的 git 存储库进行了比较,但没有发现任何差异。我在虚幻编辑器 4.16.0 上!
我注意到另一件奇怪的事情:当我从虚幻引擎编辑器编译所有内容时,它编译并运行良好。但是当我用 VS 2017 编译它时,我得到了错误,而且我也没有得到自动完成,这真是太糟糕了。我错过了什么?
最佳答案
在 PositionReporter.h 中包含 Engine.h 解决了这个问题。
#pragma once
#include "Engine.h" // <- This
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "PositionReporter.generated.h"
您需要给 Intellisense 一些时间...事实上,我关闭并重新打开解决方案以停止显示不存在的错误并提供自动完成功能。
注意: 正如其他帖子中提到的,此解决方案很适合智能感知自动完成,但并不是最好的解决方案,因为它将包含大量内容并大大增加编译时间。包含特定的 .h 文件会更好,但您需要知道要包含什么 .h,而您可能不知道。
我发现的最佳解决方案是放弃 Intellisense 并使用 Resharper 进行代码自动完成,它运行速度快,自动完成正确,并且您不需要包含任何额外的文件。
关于c++ - AActor *UactorComponent::GetOwner const - 不允许指向不完整类类型的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44219810/
所以我在 Unreal Engine 中为 (4.15) 创建项目插件时遇到了一些问题。因此,让我们分解一下。1.我创建了派生自 UActor 组件的 MyClass 并且还有这一行: UCLASS(
我是 UE4 开发的新手,我学习过 Udemy 的虚幻引擎开发类(class)。我在一个 Actor 上创建了一个新组件,名为 PositionReporter,头文件为 PositionReport
我正在尝试创建 UActorComponent 来处理一些用户输入。我是这样做的: void MyComponent::BeginPlay() { Super::BeginPlay();
我是 Unreal 的新手,我很困惑为什么我在 VS 中收到错误。我目前正在使用一个继承自 UActorComponent 的类,但每当我尝试覆盖 TickComponent 方法时,我都会收到一条错
我是一名优秀的程序员,十分优秀!