fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE5/UE4 C++でメモリに優しい方法でアクター(Actor)が持っているコンポーネント(Component)をクラスを指定して複数取得する(Get Components、TInlineComponentArray)

C++でメモリに優しい方法でアクター(Actor)が持っているコンポーネント(Component)をクラスを指定して複数取得する方法です。

こちらのツイートを参考にやってみました。

これはどういうことかというと。
こういうことだそうです。
「TArray」の代わりに「TInlineComponentArray」を使ってあげればよいみたいですね。

公式ドキュメントはこちら。

・AActor::GetComponents
https://docs.unrealengine.com/5.0/en-US/API/Runtime/Engine/GameFramework/AActor/GetComponents/2/

・TInlineComponentArray
https://docs.unrealengine.com/4.26/en-US/API/Runtime/Engine/GameFramework/TInlineComponentArray/

というわけでやってみました。

普通に「TArray」を使って記述するとこんな感じになります。

// 取得したいコンポーネントを持つアクター
AActor* aActor;

// 取得したコンポーネントを格納する配列
TArray< UActorComponent* > aActorComponents;

// アクターが持つコンポーネントを複数取得
aActor->GetComponents< UActorComponent >(aActorComponents);

// 取得したコンポーネントを処理
for(auto aComponent : aActorComponents){


// 何か処理
}


「TInlineComponentArray」を使って記述するとこんなかんじになります。

// 取得したいコンポーネントを持つアクター
AActor* aActor;

// 取得したコンポーネントを格納する配列
TInlineComponentArray< UActorComponent* > aActorComponents(aActor);

// アクターが持つコンポーネントを複数取得
aActor->GetComponents< UActorComponent >(aActorComponents);

// 取得したコンポーネントを処理
for(auto aComponent : aActorComponents){


// 何か処理
}

配列の宣言部分以外は特に処理の流れは変わらないので問題なければこちらを使ってもよさそうですね。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/714-81843919

TRACKBACK

PREV | PAGE-SELECT | NEXT