我们在使用Ability的时候 有些情况下希望有子Ability的概念 但不想为多个子Ability创建文件实例 或 以TSubclassOf并Give的方式使用Ability (因为不能以变量的形式修改Ability内的参数)
所以我按照如下方式扩展的Ability的创建方式, 但触发了系统断言 不过如果跳过断言则可以正常运行 请问在以上情况下 正确的做法是什么? (可否以扩展虚函数的方式跳过断言或者说UE是严格禁止以上使用方式的)
<br/>
1:
[Image Removed]
2:
[Image Removed]
3:
[Image Removed]
4:
[Image Removed]
你好,看描述您没有使用TArray<TSubclassOf<UGGameplayAbility>> AbilityClassArray的方式主要原因是每个子GA的参数不同,不想创建多个GameplayAbility蓝图是吗,所以想用instanced的TArray<TObjectPtr<UGGameplayAbility>> AbilityClassArray去配置不同参数,然后去GiveAbility?但这样的话CreateNewInstanceOfAbility又会创建一次instance。
所以要么您可以将不同的子GA创建成不同的蓝图类,参数配置在蓝图类中,并通过TSubclassOf的方式去GiveAbility再CreateNewInstanceOfAbility,要么可以TArray<>里面自定义一个结构体,结构体里面包含TSubclassOf的GA和需要配置的参数,在后面的CreateNewInstanceOfAbility中newObject出instance后把配置的参数设置到这个instance里