Skill System

Jihyun·2023년 12월 28일
0

Unity 2D

목록 보기
6/10

Skill System

시각적 효과(애니메이션을 통한 처리)와 기능적 측면(스크립트를 통한 처리)을 분리

Singleton

프로젝트 어디에서든 Skill Manager에 쉽게 접근할 수 있도록 Singleton으로 만든다

  • 싱글톤패턴으로 만든 클래스는 정적 변수를 통해 어디서든 접근이 가능한 인스턴스를 제공한다

Skill Manager

  • 플레이어의 스킬은 Skill Manager 오브젝트에서 관리한다
  • SkillManager 클래스의 인스턴스를 통해 프로젝트 어디서든 스킬에 접근할 수 있다
public class SkillManager : MonoBehaviour
{
    public static SkillManager instance;

    public Dash_Skill dash { get; private set; }
    public Clone_Skill clone { get; private set; }

    private void Awake()
    {
        if (instance != null)
            Destroy(gameObject);
        else
            instance = this;
    }

    private void Start()
    {
        dash = GetComponent<Dash_Skill>();   
        clone = GetComponent<Clone_Skill>();
    }

}

Skill

  • 모든 스킬을 구현하기 위한 기본적인 템플릿을 제공
  • 모든 스킬이 공통적으로 Cooldown 타임을 갖도록 설계
public class Skill : MonoBehaviour
{    
    [SerializeField] protected float cooldown;
    protected float cooldownTimer;

	//cooldownTimer를 업데이트
    protected virtual void Update()
    {
        cooldownTimer -= Time.deltaTime;
    }

	//스킬 사용 여부 확인
    public virtual bool CanUseSkill()
    {
        if(cooldownTimer < 0)
        {           
            UseSkill();
            cooldownTimer = cooldown;
            return true;
        }
        
        return false;
    }

	//스킬 사용 동작 정의
    public virtual void UseSkill()
    {
        //하위 클래스에서 필요한 스킬 동작을 구체적으로 정의
    }
}
profile
잊어버려도 다시 리마인드 할 수 있도록 공부한 것을 기록합니다

0개의 댓글