読者です 読者をやめる 読者になる 読者になる

技術ブログを目指すブログ

toncrimentan_w’s blog

アンリアルエンジン のC++からコンポーネントの追加方法

アンリアルエンジンにはコンポーネントという考え方があります。

コンポーネントについて調べてみました。

 

アクターを構成するための一要素だそうです。

まぁ確かにアクターのクラスに処理のすべてを書いてしまうと

コードがややこしくなってしまうので分けるべきかな~と

 

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 );
      }
};

 

アンリアルエンジンでのアクターへのコンポーネントの追加の仕方)

ドロップして追加します。(これがコンポーネント設計か)

f:id:toncrimentan_w:20170331004751j:plain

 

実際TickComponent()でのデバッグログが表示されました。

よばれてる よばれてる。

f:id:toncrimentan_w:20170331004756j:plain