直奔主题。
我没有新建GameMode,直接用已经有的,发现他在构造函数里做了一些默认设置,我也做了一些默认设置,也就是说我CPP的GameMode设置了一些默认变量。
像下面这样的。。。
static ConstructorHelpers::FClassFinder<AIncinerationPlayerController> BPPlayerControllerClassFinder(TEXT("/Game/Blueprints/Core/BP_PlayerController"));
if (BPPlayerControllerClassFinder.Class)
{
PlayerControllerClass = BPPlayerControllerClassFinder.Class;
}
PlayerControllerClass = AIncinerationPlayerController::StaticClass();
static ConstructorHelpers::FClassFinder<AIncinerationPlayerState> BPPlayerStateClassFinder(TEXT("/Game/Blueprints/Core/BP_PlayerState"));
if (BPPlayerStateClassFinder.Class)
{
PlayerStateClass = BPPlayerStateClassFinder.Class;
}
PlayerStateClass = AIncinerationPlayerState::StaticClass();
static ConstructorHelpers::FClassFinder<AGS_Incineration> BPGameStateClassFinder(TEXT("/Game/Blueprints/Core/BP_GameState"));
if (BPGameStateClassFinder.Class)
{
GameStateClass = BPGameStateClassFinder.Class;
}
GameStateClass = AGS_Incineration::StaticClass();
紧接着,我创建了继承自CPP 的GameMode的蓝图类,然后在项目设置里,设置了一些咋的吧的。
我想干啥呢:在任意一个UMG蓝图里的Event Construct事件处,调用Get Game Mode,Cast to 蓝图类GameMode,运行,OK,卡住了,也不报错。
也就是说这两个东西是有冲突的,不能这样设置,这样设置了只能Cast to CPP的GameMode。同理,对于其它的类也是一样的道理。
我好死不活的还对PlayerController下手了。