加載資源,然后實(shí)例化對(duì)象
構(gòu)造中加載藍(lán)圖或c++類(lèi)
加載并實(shí)例化一個(gè)藍(lán)圖類(lèi)
static ConstructorHelpers::FObjectFinder<UMaterial> DecalMaterialAsset(TEXT("Material'/Game/TopDownCPP/Blue實(shí)例化一個(gè)c++類(lèi) CursorToWorld = CreateDefaultSubobject<UDecalComponent>("CursorToWorld"); //必須提供一個(gè) name(CursorToWorld) CursorToWorld->SetupAttachment(RootComponent); //這是一個(gè) USceneComponent 的子類(lèi),才能顯示到編輯器的 Components窗口 中,因?yàn)?USceneComponent 組件帶有 transform 信息,而 UActorComponent 沒(méi)有。加載一個(gè)藍(lán)圖類(lèi),并實(shí)例化成藍(lán)圖對(duì)象
static ConstructorHelpers::FClassFinder<UCoolDownComp> CDComplAsset(TEXT("/Game/TopDownCPP/MyBp/CDCompBp")); // 這個(gè)就不能右鍵該資源 Copy Reference,只能是不帶name的一個(gè)路徑 if (CDComplAsset.Succeeded()) { UE_LOG(LogMyTest, Warning, TEXT("--- CDComplAsset.Succeeded()")); mCDComp = NewObject<UCoolDownComp>(this, CDComplAsset.Class, "UCoolDownComp"); //必須提供一個(gè) name(UCoolDownComp) mCDComp->SetupAttachment(RootComponent); }不在構(gòu)造中實(shí)例化藍(lán)圖c++類(lèi)
實(shí)例化藍(lán)圖類(lèi)
起個(gè)成員,可以讓編輯器中指定 AMyBullet 派生的藍(lán)圖類(lèi)
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyChar") TSubclassOf<AMyBullet> BulletClass;實(shí)例化這個(gè)藍(lán)圖類(lèi)
FActorSpawnParameters SpawnInfo; SpawnInfo.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; AMyBullet* mBullet = GWorld->SpawnActor<AMyBullet>(BulletClass, SpawnInfo); mBullet->SetPkMsg(pkMsg);實(shí)例化c++類(lèi),直接用 xxx::StaticClass()實(shí)例化
FActorSpawnParameters SpawnInfo; SpawnInfo.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn; AMyBullet* mBullet = GWorld->SpawnActor<AMyBullet>(AMyBullet::StaticClass(), SpawnInfo); mBullet->SetPkMsg(pkMsg);同步加載
bool UMyBpFuncLib::TestChangeCharAnimInstance(AMyChar* _myChar, FString _pathMesh, FString _pathAnim){ FStreamableManager* stream = new FStreamableManager(); FStringAssetReference ref1(*_pathMesh); USkeletalMesh* TmpMesh = Cast<USkeletalMesh>(stream->SynchronousLoad(ref1)); _myChar->GetMesh()->SetSkeletalMesh(TmpMesh); FStringAssetReference ref2(*_pathAnim); UAnimBlueprint* TmpMeshAnim = Cast<UAnimBlueprint>(stream->SynchronousLoad(ref2)); _myChar->GetMesh()->SetAnimInstanceClass((UClass*)TmpMeshAnim->GetAnimBlueprintGeneratedClass()); delete stream; return true;}異步加載參照這篇:ue4-異步加載資源
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注