我在虚幻引擎4中创建计时器时遇到问题。问题出在GetWorldTimerManager中。当我在此调用set timer时,我得到一个E0070不完整类型错误。通常这意味着我没有包含某些内容
void ACubeFarmBlock::HandleClicked()
{
if (!bIsPlanted)
{
bIsPlanted = true;
// Change material
BlockMesh->SetMaterial(0, OrangeMaterial);
// Determine when to harvest
GetWorldTimerManager().SetTimer(HarvestTimerHandle, &ACubeFarmBlock::Harvest, HarvestTime,false);
}
}
HarvestTimerHandle在标头中定义。 以下是包含列表。 MyActor.h包含一个定义GetWorldTimerManager的方法,所以我认为我已经包含了所有内容。值得注意的是,当我在线查看计时器功能时,我发现了几个站点,其中这个set timer方法包含一个插入在HarvestTimerHandle参数和& ACubeFormBlock :: Harvest参数之间的参数。包括这个不会让我的错误消失。
#include "CubeFarmBlock.h"
#include "CubeFarmBlockGrid.h"
#include "UObject/ConstructorHelpers.h"
#include "Components/StaticMeshComponent.h"
#include "Engine/StaticMesh.h"
#include "Materials/MaterialInstance.h"
#include "MyActor.h"
错误:
.. \ CubeFarmBlock.cpp(76):注意:请参阅函数模板实例化的引用 ' TFunction :: TFunction(FunctorType&&)'正在编译1> 用1> [1> FunctorType = void(__ cdecl ACubeFarmBlock :: *)(float)1> ]
严重级代码说明项目文件行抑制状态错误(活动)
E0070不完整类型不允许CubeFarm .. \ CubeFarmBlock.cpp 78严重性
代码说明项目文件行抑制状态错误(有效)E0070
不完整类型不允许CubeFarm .. \ CubeFarmBlock.cpp 78
答案 0 :(得分:1)
在头文件中创建一个处理程序FTimerHandle InputTimeHandle;
然后在你的cpp文件中
GetWorld() - > GetTimerManager()。SetTimer(InputTimeHandle,this,& AMyPlayerController :: GetInputTimer,1,true,0.5f);
您只缺少参数
答案 1 :(得分:-1)
好的,所以对于警告,我从未使用过UE4,但是......
此错误表示您正在尝试将成员函数绑定到TFunction:
decoder
成员函数需要一个Object指向..我认为你缺少'this'参数。如果没有查找,我认为您需要:
将'TFunction::TFunction(FunctorType &&)' being compiled 1> with 1>
[ 1> FunctorType=void (__cdecl ACubeFarmBlock::* )(float) 1> ]
绑定到您尝试传递定时器的TFunction OR
this
重载
E.g。
SetTimer
我在网上找不到任何简单的引用,但是如果你搜索成员函数指针,或者hidden this parameter,你就可以知道出了什么问题。