vault backup: 2024-02-02 12:39:48

This commit is contained in:
2024-02-02 12:39:48 +08:00
parent 1688bb912d
commit b8e7b4bd38
2 changed files with 53 additions and 2 deletions

View File

@@ -129,7 +129,57 @@ uint8 InputPressed:1;
- UAbilityTask_WaitInputPress
- UAbilityTask_WaitInputRelease
理论上是可以将其修改成增强输入的版本只需要将枚举循环改成InputActionContext循环即可
理论上是可以将其修改成增强输入的版本只需要将枚举循环改成InputActionContext循环即可,具体逻辑在角色类中
```c++
void AGSHeroCharacter::BindASCInput()
{
if (!bASCInputBound && IsValid(AbilitySystemComponent) && IsValid(InputComponent))
{
AbilitySystemComponent->BindAbilityActivationToInputComponent(InputComponent, FGameplayAbilityInputBinds(FString("ConfirmTarget"),
FString("CancelTarget"), FString("EGSAbilityInputID"), static_cast<int32>(EGSAbilityInputID::Confirm), static_cast<int32>(EGSAbilityInputID::Cancel)));
bASCInputBound = true;
}
}
FGameplayAbilityInputBinds(FString InConfirmTargetCommand, FString InCancelTargetCommand, FTopLevelAssetPath InEnumPathName, int32 InConfirmTargetInputID = INDEX_NONE, int32 InCancelTargetInputID = INDEX_NONE)
: ConfirmTargetCommand(InConfirmTargetCommand)
, CancelTargetCommand(InCancelTargetCommand)
, EnumPathName(InEnumPathName)
, ConfirmTargetInputID(InConfirmTargetInputID)
, CancelTargetInputID(InCancelTargetInputID)
{
}
```
**ConfirmTarget**、**CancelTarget**需要在DefaultInput.ini中添加对应的配置名字需要对应
**EGSAbilityInputID**为枚举类名称,**EGSAbilityInputID::Confirm**与**EGSAbilityInputID::Cancel**为枚举的index需要与GameplayAbilitySpec中的AbilityInputID对应。具体是在GiveAbility中进行参考[[#GASShooter中给Ability注册按键ID]]。
之后还需要在URPGGameplayAbility中将枚举**ERPGAbilityInputID**修改成
```c++
UPROPERTY(BlueprintReadOnly, EditAnywhere, Category = "RPGGameplayAbility|Input")
ERPGAbilityInputID AbilityInputID = ERPGAbilityInputID::None;
```
## GASShooter中给Ability注册按键ID
```c++
void AGSCharacterBase::AddCharacterAbilities()
{
// Grant abilities, but only on the server
if (GetLocalRole() != ROLE_Authority || !IsValid(AbilitySystemComponent) || AbilitySystemComponent->bCharacterAbilitiesGiven)
{
return;
}
for (TSubclassOf<UGSGameplayAbility>& StartupAbility : CharacterAbilities)
{
AbilitySystemComponent->GiveAbility(
FGameplayAbilitySpec(StartupAbility, GetAbilityLevel(StartupAbility.GetDefaultObject()->AbilityID), static_cast<int32>(StartupAbility.GetDefaultObject()->AbilityInputID), this));
}
AbilitySystemComponent->bCharacterAbilitiesGiven = true;
}
```
# SDHGame
李兄是在状态机每个节点的StateBegin()中调用CreateDynamicSkillInputActionMappingContext()进行动态绑定的。FSDHSkillInputActionBinding里包含FEnhancedActionKeyMapping相关数据。