플레이어의 공격이 턴제 RPG에서 원거리/근거리에 따라 다르게 구현되어야 한다.
예를들어, 근거리 캐릭터는 상대의 캐릭터에 근접하여 공격을 하여야 하고 원거리 캐릭터는 투사체를 상대에게 맞추었을 때 데미지가 들어가야 한다.
어떤 식으로 구현하여야 할까??
PlayerUnitController를 상속받은 각각의 직업들의 내부에 있는 Attack()메서드 내부를 동작에 맞게 따로 구현해준다.
장점 : 클래스에 맞는 동작들을 상세하게 기술가능
단점 : 중복되는 코드가 반복해서 나타나서 코드의 재사용성이 떨어짐
ScriptableObject를 통해서 근접공격과 원거리 공격 혹은 다른 특수한 공격들에 대한 공격을 정의해준다.
장점 : 똑같은 동작에 대해서 재사용가능
단점 : ScriptableObject라는 클래스를 따로 구현하여 만들어 주어야함.
스크립터블 오브젝트를 사용하는 방법을 선택했다.
코드의 재사용성적인 측면이나, Attack이라는 동작을 Skill의 형태로 정의하여 사용하면 유지보수 측면에서도 이로울 것 같기 때문이다.