アンリアルエンジンにはコンポーネントという考え方があります。
コンポーネントについて調べてみました。
アクターを構成するための一要素だそうです。
まぁ確かにアクターのクラスに処理のすべてを書いてしまうと
コードがややこしくなってしまうので分けるべきかな~と
C++での定義の仕方)
/**
* @file ComponentAttack.h
* @brief コンポーネント(攻撃)
*/#pragma once
#include "Components/ActorComponent.h"
#include "ComponentAttack.generated.h"/**
* @brief コンポーネント(攻撃)
*/
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class FIELDTEST01_API UComponentAttack
: public UActorComponent
{
GENERATED_BODY()public:
/**
* @brief コンストラクタ
*/
UComponentAttack()
{
PrimaryComponentTick.bCanEverTick = true;
}/**
* @brief 再生開始イベント
* (アクタがプレイ可能なステートになったことを知らせるイベント)
*/
virtual void BeginPlay() override
{
UE_LOG( LogTemp, Log, TEXT("UComponentAttack::BeginPlay()") );
Super::BeginPlay();
}/**
* @brief 更新イベント
*/
virtual void TickComponent( float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction ) override{
UE_LOG( LogTemp, Log, TEXT("UComponentAttack::TickComponent()") );
Super::TickComponent( DeltaTime, TickType, ThisTickFunction );
}
};
アンリアルエンジンでのアクターへのコンポーネントの追加の仕方)
ドロップして追加します。(これがコンポーネント設計か)
実際TickComponent()でのデバッグログが表示されました。
よばれてる よばれてる。