vault backup: 2024-02-02 12:39:48
This commit is contained in:
@@ -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相关数据。
|
||||
|
Reference in New Issue
Block a user