获取GameMode,PlayController,Actor等

来源:互联网 发布:录音笔记软件 编辑:程序博客网 时间:2024/06/05 16:31

GameMode

获取GameMode方法有很多,我用过如下方法,游戏运行没问题,但是在打包的时候有时候会提示错误:

AFlatPeachGameModeBase* gamemode = Cast<AFlatPeachGameModeBase>(UGameplayStatics::GetGameMode(GetWorld()));

但是用同样的方法获取PlayController时就不会有问题,我也不太清楚,代码如下:

AMyPlayerController *gameCon = Cast<AMyPlayerController>(UGameplayStatics::GetPlayerController(GetWorld(), 0));

-这里记录的是另一种方法,使用BlueprintFunctionLibrary。

1.在蓝图中添加代码,并且在C++中重新加载

这里写图片描述

2.打开MyBlueprintFunctionLibrary.h,进行编辑,如下:

#pragma once#include "CoreMinimal.h"#include "Kismet/BlueprintFunctionLibrary.h"#include "MyBlueprintFunctionLibrary.generated.h"class AFlatPeachGameModeBase;   //提前声明,不然后面会不认识他UCLASS()class FLATPEACH_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary{    GENERATED_BODY()public:    static void SetGameModeInstance(const AFlatPeachGameModeBase* pGameMode);    static AFlatPeachGameModeBase* GetGameModeInstance();private:    static AFlatPeachGameModeBase* GameModePtr;//静态};

3.打开MyBlueprintFunctionLibrary.cpp,进行编辑,如下:

#include "MyBlueprintFunctionLibrary.h"#include "FlatPeach.h"#include "FlatPeachGameModeBase.h"  //添加头文件AFlatPeachGameModeBase* UMyBlueprintFunctionLibrary::GameModePtr = NULL;AFlatPeachGameModeBase * UMyBlueprintFunctionLibrary::GetGameModeInstance(){    return GameModePtr;}void UMyBlueprintFunctionLibrary::SetGameModeInstance(const AFlatPeachGameModeBase* pGameMode){    GameModePtr = (AFlatPeachGameModeBase*)pGameMode;

4.使用的时候,先添加头文件

#include "MyBlueprintFunctionLibrary.h"

调用时如下:

AFlatPeachGameModeBase* gamemode = UMyBlueprintFunctionLibrary::GetGameModeInstance();

Actor

首先确保地图中有actor,然后用如下代码:

TArray<AActor*> array;UGameplayStatics::GetAllActorsOfClass(GetWorld(), AActorYouNeed::StaticClass(), array);AActorYouNeed* InstanceName= Cast<AActorYouNeed>(array[0]);
原创粉丝点击