[英]Setting timers in Unreal Engine C++
我在虚幻引擎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的方法,因此我认为我已经包含了所有内容。 值得一提的是,当我在线查看计时器功能时,发现了几个站点,其中此设置计时器方法包括在HarvestTimerHandle参数和&ACubeFormBlock :: Harvest参数之间插入的this参数。 包括这并不能使我的错误消失。
#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
在头文件中,创建一个处理程序FTimerHandle InputTimeHandle;
然后在您的cpp文件中
GetWorld()-> GetTimerManager()。SetTimer(InputTimeHandle,this,&AMyPlayerController :: GetInputTimer,1,true,0.5f);
您只缺少参数
好的,因此,为了警告起见,我从未使用过UE4,但是...
此错误表明您正在尝试将成员函数绑定到TFunction:
'TFunction::TFunction(FunctorType &&)' being compiled 1> with 1>
[ 1> FunctorType=void (__cdecl ACubeFarmBlock::* )(float) 1> ]
成员函数需要一个Object指向。.我认为您缺少'this'参数。 如果不查找,我认为您要么需要:
this
绑定到您要传递计时器的TFunction 或
使用另一个SetTimer
重载, 该重载可以将其作为参数传递 。
例如
GetWorldTimerManager().SetTimer(HarvestTimerHandle, this, &ACubeFarmBlock::Harvest, HarvestTime,false);
我在网上找不到任何简单的引用,但是如果您搜索成员函数指针,并且可能隐藏了此参数 ,则可以了解出了什么问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.