【UE 4】C++FunctionLibrary呼び出し青写真およびよくある質問

2068 ワード

BP_Actor.h
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyMccActor.generated.h"

UCLASS()
class MYCPPPROJECT_API AMyMccActor : public AActor
{
    GENERATED_BODY()
    
public: 
    // Sets default values for this actor's properties
    AMyMccActor();

protected:
    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

public: 
    // Called every frame
    virtual void Tick(float DeltaTime) override;

    UFUNCTION(BlueprintImplementableEvent, Category = "SplineMesh")
    void PrintMessage(const FString &Message);


};

Othre.cpp
void XXX::BeginPlay()
{
  TArray _TempArryActors;
  UGameplayStatics::GetAllActorsOfClass(GetWorld(), AActor::GetClass(), _TempArryActors);
  for (int32 i = 0; i < _TempArryActors.Num(); i++)
  {
    if (_TempArryActors[i]->GetName() == FString("AMyMccActor"))
  {
   Cast(_TempArryActors[i])->PrintMessage(TEXT("  Actor&  PringMessage  "));
  }
}

ノードのパラメータをカスタマイズするときは定数を使用することに注意してください.そうしないと、青写真ではノードを呼び出すことができません.
UFUNCTION(BluePrintImplementableEvent)
	void POIRunEvent(const TArray &POIDataOut);

GetAllActorClassでインスタンスを取得すると、UE 4自身のBUGが誤って赤になります.FunctionLibraryのGetWroldでGetGameInstance()を置き換える必要があります.
void UMultiThreadFunctionLibrary::SearchPOIActor()
{
	//   UGameplayStatics::GetAllActorsOfClass   
		/*
		*    AActor::GetClass()         AActor::StaticClass()
		*GetAllActorsOfClass    UE4 BUG     
		* FunctionLibrary   GetWorld()  GWorld->GetGameInstance()
		*/
	UGameplayStatics::GetAllActorsOfClass(GWorld->GetGameInstance(), APOIExecActor::StaticClass(), _TempArryActors);
}

インスタンスの関数を取得するにはCast変換タイプを使用します.
//  APOIExecActor        POIRunEvent  
	Cast(_TempArryActors[0])->POIRunEvent(POIDataOut);