1
This commit is contained in:
@@ -216,7 +216,9 @@ void ULyraHeroComponent::InitializePlayerInput(UInputComponent* PlayerInputCompo
|
|||||||
2. AddMappingContext()的选项OptionsNotifyUserSettings设置为true,会调用UEnhancedInputUserSettings::RegisterInputMappingContext()
|
2. AddMappingContext()的选项OptionsNotifyUserSettings设置为true,会调用UEnhancedInputUserSettings::RegisterInputMappingContext()
|
||||||
2. ProjectSettings - Engine - EnhancedInput - UserSettings中的Enable User Settings
|
2. ProjectSettings - Engine - EnhancedInput - UserSettings中的Enable User Settings
|
||||||
3. 配置IA与IMC中的UserSetting选项。
|
3. 配置IA与IMC中的UserSetting选项。
|
||||||
1. 部分输入比如Axis2D类
|
1. 部分输入比如Axis2D这种,需要在IMC中进行设置。
|
||||||
|
4. 默认Profile GameplayTag
|
||||||
|
1.
|
||||||
|
|
||||||
## 加载按键设置逻辑
|
## 加载按键设置逻辑
|
||||||
默认自动加载,载入逻辑位于UEnhancedInputUserSettings::LoadOrCreateSettings(),调用顺序是:
|
默认自动加载,载入逻辑位于UEnhancedInputUserSettings::LoadOrCreateSettings(),调用顺序是:
|
||||||
@@ -276,4 +278,61 @@ UEnhancedInputUserSettings* UEnhancedInputUserSettings::LoadOrCreateSettings(ULo
|
|||||||
|
|
||||||
return Settings;
|
return Settings;
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 鼠标灵敏度与反转设置实现
|
||||||
|
参考Lyra的实现方法:
|
||||||
|
1. 通过实现2个UInputModifier。
|
||||||
|
2. 在ULyraSettingsShared(ULocalPlayerSaveGame)存储对应的灵敏度float数据。
|
||||||
|
1. 可以考虑直接在UEnhancedInputUserSettings中来存储。
|
||||||
|
|
||||||
|
```c++
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
// ULyraInputModifierGamepadSensitivity
|
||||||
|
FInputActionValue ULyraInputModifierGamepadSensitivity::ModifyRaw_Implementation(const UEnhancedPlayerInput* PlayerInput, FInputActionValue CurrentValue, float DeltaTime)
|
||||||
|
{
|
||||||
|
// You can't scale a boolean action type
|
||||||
|
ULyraLocalPlayer* LocalPlayer = LyraInputModifiersHelpers::GetLocalPlayer(PlayerInput);
|
||||||
|
if (CurrentValue.GetValueType() == EInputActionValueType::Boolean || !LocalPlayer || !SensitivityLevelTable)
|
||||||
|
{
|
||||||
|
return CurrentValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ULyraSettingsShared* Settings = LocalPlayer->GetSharedSettings();
|
||||||
|
ensure(Settings);
|
||||||
|
|
||||||
|
const ELyraGamepadSensitivity Sensitivity = (TargetingType == ELyraTargetingType::Normal) ? Settings->GetGamepadLookSensitivityPreset() : Settings->GetGamepadTargetingSensitivityPreset();
|
||||||
|
|
||||||
|
const float Scalar = SensitivityLevelTable->SensitivtyEnumToFloat(Sensitivity);
|
||||||
|
|
||||||
|
return CurrentValue.Get<FVector>() * Scalar;
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
// ULyraInputModifierAimInversion
|
||||||
|
FInputActionValue ULyraInputModifierAimInversion::ModifyRaw_Implementation(const UEnhancedPlayerInput* PlayerInput, FInputActionValue CurrentValue, float DeltaTime)
|
||||||
|
{
|
||||||
|
ULyraLocalPlayer* LocalPlayer = LyraInputModifiersHelpers::GetLocalPlayer(PlayerInput);
|
||||||
|
if (!LocalPlayer)
|
||||||
|
{
|
||||||
|
return CurrentValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ULyraSettingsShared* Settings = LocalPlayer->GetSharedSettings();
|
||||||
|
ensure(Settings);
|
||||||
|
|
||||||
|
FVector NewValue = CurrentValue.Get<FVector>();
|
||||||
|
|
||||||
|
if (Settings->GetInvertVerticalAxis())
|
||||||
|
{
|
||||||
|
NewValue.Y *= -1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Settings->GetInvertHorizontalAxis())
|
||||||
|
{
|
||||||
|
NewValue.X *= -1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NewValue;
|
||||||
|
}
|
||||||
```
|
```
|
Reference in New Issue
Block a user