aiWXHN
(aiWXHN)
1
1.这是我的代码,就是使用GameMode的延迟开始,10s后执行StartMatch()开始比赛
ABlasterGameMode::ABlasterGameMode()
{
bDelayedStart = true;
}
void ABlasterGameMode::BeginPlay()
{
Super::BeginPlay();
StartingLevelTime = GetWorld()->TimeSeconds;
}
void ABlasterGameMode::Tick(float DeltaSeconds)
{
Super::Tick(DeltaSeconds);
TimeDelta += DeltaSeconds;
TimeToStart = TimeToStart - TimeDelta / 60 + StartingLevelTime;
UE_LOG(LogTemp,Warning,TEXT("TimeToStart:%f"),TimeToStart)
if (TimeToStart <= 0)
{
StartMatch();
}
}
2. 编辑器中的GameMode都设置好了,创建了BP_GameMode,用的是默认第三人称项目
3.开始游戏,有两个玩家,一个是监听服务器一个是客户端
4.问题?但是监听服务器,没法控制自己了,任何输入都不管用。客户端是可以控制自己的。我觉得奇怪是因为,只要不使用bDelayed = true,开始就直接进入比赛,不管是监听服务器还是Client都能够控制自己。我该如何解决?或者从哪里可以学习?
你好,我也存在相同的问题,当 GameMode 的 bDelayed = true 时,我发现 character 类 Begin 函数中增强输入进行判断 Controller 的代码中 Controller 为空所导致的
而我的解决方法就是将这些代码复制到 SetupPlayerInputComponent 函数中进行再次判断
具体到底时什么问题我也不清楚,只感觉是代码时序的问题,以上希望能帮到你。
发一下你的StartMatch(),执行了什么东西。