→ API

Summary

IAbilitySpec을 관리하는 Component.

Remarks

AbilityIAbilitySpec을 생성하여 관리함.

IAbilitySpec은 List<T> 형태로 저정함. Ability를 사용할 때는 IAbilitySpec에서 일치하는 Ability를 Foreach를 통해 확인하여 사용됨.

Ability가 추가되거나 제거될 때, 어떤 어빌리티든 발동하거나 발동이 끝났을때 이벤트가 발생함.

Update, Fixed Update 마다 Abilities 를 foreach로 Update를 실행시킴. 이부분은 사용하기에 따라서 제거하고 코루틴 등으로 대체할 수 있음. 그 경우 Abilities의 형태를 Dictionary<Ability, IAbilitySpec> 으로 바꾸는 것도 괜찮을 수 있음.

Public Properties

Name Value Summary
Abilities IReadOnlyList<IAbilitySpec> 현재 부여되어 있는 IAbilitySpec List.

Public Methods

Name Value Summary
Setup() void AbilitySystem의 초기 설정을 실시함. 이미 설정되어 있으면 무시함.
ResetAbilitySystem ( ) void AbilitySystem 을 리셋시킴.
TryGetAbilitySpec ( Ability, out IAbilitySpec) bool AbilityIAbilitySpec을 가져옴. 없으면 return false;
TryGetAbilitySpec ( Type, out IAbilitySpec) bool Type으로 IAbilitySpec을 가져옴. 없으면 return false;
GetAbilitySpec ( Ability) IAbilitySpec AbilityIAbilitySpec을 가져옴.
GetAbilitySpec ( Type ) IAbilitySpec Type으로 IAbilitySpec을 가져옴
HasAbility ( Ability) bool AbilityIAbilitySpec 보유 여부를 확인함.
HasAbility ( Type ) bool Type으로 IAbilitySpec 보유 여부를 확인함.
CanActivateAbility ( Ability) bool AbilityIAbilitySpec 활성화 가능 여부를 확인함.
CanActivateAbility ( Type ) bool Type으로 IAbilitySpec 활성화 가능 여부를 확인함.
IsPlayingAbility ( Ability) bool AbilityIAbilitySpec 활성화 상태를 확인함.
IsPlayingAbility ( Type ) bool Type으로 IAbilitySpec 활성화 상태를 확인함.
TryActivateAbility ( Ability) bool AbilityIAbilitySpec 활성화를 시도함. 활성화 성공 여부를 return.
TryActivateAbilityAsInputBuffer ( Ability) void AbilityIAbilitySpec 찾아서 AbilityInputBuffer로 활성화를 시도함.
ForceActivateAbility ( Ability) void AbilityIAbilitySpec을 강제로 활성화함.
OnReleasedAbility ( Ability) void AbilityIAbilitySpec를 Release함.
CancelAllAbility ( ) void 모든 활성화된 IAbilitySpec를 취소함.
TryGrantAbility ( Ability, int ) bool AbilityIAbilitySpec을 int Level로 부여를 시도함. 성공여부를 return.
CanGrantAbility ( Ability, int ) bool AbilityIAbilitySpec를 부여할 수 있는지 확인함. 가능 여부를 return.
ForceGrantAbility ( Ability, int ) void Ability를 강제로 부여함. 만약 Ability가 같은 IAbilitySpec이 이미 있으면 Override 시키고 return.
TryRemoveAbility ( Ability) bool AbilityIAbilitySpec의 제거를 시도함. 성공 여부 return.
CanRemoveAbility ( Ability) bool AbilityIAbilitySpec을 제거할 수 있는지 확인함. 가능 여부 return.
ForceRemoveAbility ( Ability) void AbilityIAbilitySpec이 있다면 제거함.
RemoveAllAbility ( ) void 보유하고 있는 모든 IAbilitySpec 을 제거함.

Delegate

Name Value Summary
OnGrantedAbility AbilitySystem, IAbilitySpec Ability가 새로 부여된 후 호출함.
OnRemovedAbility AbilitySystem, IAbilitySpec Ability를 제거했을 때 호출함.
OnActivateAbility AbilitySystem, IAbilitySpec Ability가 활성화되면 호출함.
OnFinishedAbility AbilitySystem, IAbilitySpec Ability가 종료되면 호출함.

Protected Properties

Name Value Summary
_InitAbilities FInitAbility[] 초기화시 부여될 Ability.
_Abilities List<IAbilitySpec> 보유하고 있는 IAbilitySpec의 List.
_AbilityInputBuffer AbilityInputBuffer 어빌리티를 일정 시간동안 활성화를 시도함.
_BufferDuration float AbilityInputBuffet 의 유지 시간.

Protected Methods

Name Value Summary
RemoveAbility (IAbilitySpec) void IAbilitySpec을 제거함.
Spec_OnActivatedAbility (IAbilitySpec) void IAbilitySpec을 부여한 뒤 활성화 이벤트에 할당됨.
Callback_OnActivatedAbility() 를 호출함.
Spec_OnFinishedAbility (IAbilitySpec) void IAbilitySpec을 부여한 뒤 종료 이벤트에 할당도
Callback_OnFinishedAbility() 를 호출함.
Callback_OnGrantedAbility (IAbilitySpec) void 새로운 IAbilitySpec가 부여되면 호출함.
Callback_OnRemovedAbility (IAbilitySpec) void IAbilitySpec이 제거되면 호출함.
Callback_OnActivatedAbility (IAbilitySpec) void 부여된 IAbilitySpec가 실행되면 호출함
Callback_OnFinishedAbility (IAbilitySpec) void 부여된 IAbilitySpec가 실행되면 호출함