(UE4 4.20)UE4的UObject,UActorComponent,AActor的Tick函数

 

UObject的Tick

UE4中原生的UObject并不支持Tick函数,得继承FTickableGameObject才可以,代码示例如下:

 


#pragma once

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Tickable.h"
#include "TickObject.generated.h"


/**
 * 
 */
UCLASS()
class MYPROJECT6_API UTickObject : public UObject, public FTickableGameObject
{
	GENERATED_BODY()
	
public:
	UTickObject();
	~UTickObject();

public:
	virtual void Tick(float DeltaTime) override;
	virtual bool IsTickable() const override;
	virtual TStatId GetStatId() const override;

};

 

#include "TickObject.h"


UTickObject::UTickObject()
{

}


UTickObject::~UTickObject()
{

}


void UTickObject::Tick(float DeltaTime)
{

}

bool UTickObject::IsTickable() const
{
	return true;
}

TStatId UTickObject::GetStatId() const
{
	return Super::GetStatID();
}

得非常注意

[1]. 重载GetStatId函数的时候得返回UObject的GetStatID,而不能直接返回0,否则会报错。

[2]. IsTickable函数得返回true 

 

UActorComponent的TickComponent

在构造函数设置 PrimaryComponentTick.bCanEverTick 为 true

UTickActorComponent::UTickActorComponent()
{
	// 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;

	// ...
}
	virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;

 

void UTickActorComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
	Super::TickComponent(DeltaTime, TickType, ThisTickFunction);

	// ...
}


AActor的Tick

构造函数设置PrimaryActorTick.bCanEverTick 为 true

ATickActor::ATickActor()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
}
virtual void Tick(float DeltaTime) override;
void ATickActor::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值