Skip to content

Indigorilla/AbilitySystemForUnity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gameplay Ability System For Unity

Image

Unreal Engine의 Gameplay Ability System을 Unity에 맞게 적용한 시스템 입니다.

Gameplay Ability System은 게임 내 캐릭터가 사용할 액션이나 스킬 등과 사용 결과로 HP 등의 어트리뷰트를 변경하는 게임 이펙트를 만들고 쿨다운 및 MP 같은 자원 소모를 구현하는 등의 작업이 손쉽게 가능합니다.

Unity6 이상 필요

예제 실행 방법 및 요약

실행 방법

  1. 해당 저장소 main branch 전체를 zip 파일로 다운 받거나 clone
  2. 유니티로 해당 프로젝트를 열어 Sample 폴더의 SampleScene.unity 씬 활성화 > 플레이 모드 실행
  3. 마우스 좌 클릭으로 Explosion 어빌리티 사용

요약

PlayerController.cs: 플레이어의 어트리뷰트 초기화 및 사용 가능한 어빌리티를 등록하고 플레이어 인풋과 어빌리티를 바인딩

EnemyController.cs: 적의 어티르뷰트 초기화 및 HP 변경이 있을 때 대미지 UI 처리

InitialiseStatsAbility: Player, Enemy의 스텟을 초기화 하는 어빌리티. 게임 시작 시 최초 적용 됨(A_InitStats.asset 참조)

RangeDamageAbility.cs: 예제에 쓰인 범위 공격 어빌리티로 AbilityBase를 확장 하여 구현 됨(A_Explosion.asset 참조) Physics.SphereCast를 통해 정의 된 범위 내의 Enemy에게 대미지 이팩트(GE_Explosion_Damage.asset 참조)를 적용 함

Sample/Data: 예제에 쓰인 어빌리티 및 게임이펙트와 어트리뷰트의 ScriptableObject 기반 데이터가 있는 폴더

시스템 설치 방법

  1. 해당 저장소 main branch 전체를 zip 파일로 다운 받거나 clone
  2. Assets/AbilitySystemForUnity 폴더를 설치를 원하는 프로젝트의 Assets 폴더에 복사

시스템 요약

UML

Image (이미지 클릭 시 확대)

컴포넌트

AbilitySystemComponent.cs: 어빌리티 시스템을 적용 및 관리하는 컴포넌트로 어빌리티, 어트리뷰트, 게임플레이 이펙트, 이벤트 등의 관리 역할. 어빌리티 시스템을 적용 받을 게임 오브젝트는 해당 컴포넌트를 포함 하여야 함.

어빌리티

AbilityBase.cs: 어빌리티의 베이스로 코스트, 쿨다운, 게임플레이 태그 등의 처리와 확장 가능한 메서드가 있음

AbilityDefinition.cs: 어빌리티의 데이터를 관리하는 ScriptableObject 클래스로 코스트, 쿨다운 데이터에 대한 관리를 함

어트리뷰트

AttributeSet.cs: 어트리뷰트에 대한 데이터 및 상태 변경 계산을 가지고 있는 ScriptableObject 클래스

이펙트

GameplayEffect.cs: 게임플레이 이펙트가 AbilitySystemComponent에 적용 될 때 Target, Duration, Level 등의 데이터를 제공 함

GameplayEffectDefinition.cs: 게임플레이 이펙트의 DurationPolicy, Tag 등의 데이터를 관리하는 ScriptableObject 클래스

태그

GameplayTagSO.cs: 게임플레이 이펙트 및 어빌리티에 사용되는 태그의 ScriptableObject 클래스

의존성

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •