Bootstrap

UE4对Slomo的来源进行一次简单分析

前言:对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
;