前言:对Slomo的来源进行一次简单分析。
Slomo的作用就是设置把值传给SetTimeDilation:
//UE_4.26\Engine\Source\Runtime\Engine\Private\CheatManager.cpp
void UCheatManager::Slomo(float NewTimeDilation)
{
GetOuterAPlayerController()->GetWorldSettings()->SetTimeDilation(NewTimeDilation);
}
SetTimeDilation作用就是把值钳制一次,保证输入的值在默认最大最小之间,
//UE_4.26\Engine\Source\Runtime\Engine\Private\WorldSettings.cpp
float AWorldSettings::SetTimeDilation(float NewTimeDilation)
{
TimeDilation = FMath::Clamp(NewTimeDilation, MinGlobalTimeDilation, MaxGlobalTimeDilation);
return TimeDilation;
}
最大值和最小值的默认设置在UE_4.26\Engine\Config\BaseGame.ini
MinUndilatedFrameTime=0.0005 ; 2000 fps
MaxUndilatedFrameTime=0.4 ; 2.5 fps
MinGlobalTimeDilation=0.0001
MaxGlobalTimeDilation=20.0
注意其中除了GlobalTimeDilation,还有UndilatedFrameTime,在后面会使用到。
而SetTimeDilation在SetGlobalTimeDilation中有被调用,准确来说不是调用,而是又做了一次判断来确定输入的slomo是否符合MinGlobalTimeDilation~MaxGlobalTimeDilation:
//UE_4.26\Engine\Source\Runtime\Engine\Private\GameplayStatics.cpp
void UGameplayStatics::SetGlobalTimeDilation