[내배캠] 유니티 숙련 개인과제#1

Sungchan Ahn(안성찬)·2024년 10월 25일

내일배움캠프

목록 보기
51/104

과제를 시작하기 전 생각할 것들

과제를 하다보면 필요한 기능만 구현한 나머지 코드의 구조적인 부분이 많이 부족하다고 느꼈다. 그래서 이번 과제에서는 아래의 요소를 많이 생각하면서 리팩토링을 하려고 노력하고자 한다.

SOLID 원칙

  • 단일 책임(Single responsibility)
  • 개방-폐쇄(Open-closed)
  • 리스코프 치환(Liskov substitution)
  • 인터페이스 분리(Interface segregation)
  • 의존관계 역전(Dependency inversion)
  1. 단일 책임 원칙: Player에게 필요한 여러 기능을 각각 한 가지 역할만 수행하는 클래스로 분리하여 Player에서 관리하여 가독성, 확장성, 재사용성을 높인다.
public class Player : MonoBehavior
{
	private PlayerController controller;
    private PlayerCondition condition;
    private Equipment equip;
    
    private void Awake()
    {
    	controller = GetComponent<PlayerController>();
        condition = GetComponent<PlayerCondition>();
        equip = GetComponent<Equipment>();
    }
}

public class PlayerController : MonoBehavior

public class PlayerCondition : MonoBehavior

public class Equipment : MonoBehavior
  1. 개방 폐쇄 원칙 : 원본 코드를 수정하지 않고도 새로운 동작을 생성할 수 있도록 구조화한다.
    추상클래스, 인터페이스를 활용해보자.

  2. 리스코프 치환 원칙 : 부모 클래스에 들어가는 로직을 불필요하게 늘리지 않는다. 추상화를 단순하게 유지한다. 자식 클래스를 설정할 때 기능을 제거하지 않는다.
    비슷한 기능을 하지만 세부적인 내용이 다를 때는 인터페이스를 활용해보자.

  3. 인터페이스 분리 원칙 : 인터페이스를 작은 단위로 분할하여 클래스에서 필요한 요소만 선택해 사용하도록 한다.

  4. 의존관계 역전 원칙 : 추상화에 의존한다. 다른 클래스와 관계가 있는 클래스는 종속 또는 결합 관계가 있다고 하는데, 이러한 관계는 하나를 수정하면 다른 하나에도 영향을 줄 수 있기 때문에 결합도를 낮춰야 한다.

결합도를 낮추고 응집도를 높이려고 노력해보자.

추상클래스와 인터페이스

추상클래스인터페이스
메서드 전체 또는 일부를 구현메서드를 선언하지만 구현 X
변수와 필드를 선언하고 사용메서드와 프로퍼티만 선언(필드는 제외)
정적 멤버 보유정적 멤버 선언/사용 불가
생성자 사용생성자 사용 불가
모든 접근제한자 사용모든 멤버는 암묵적으로 public

클래스는 하나의 클래스만 상속, 여러 인터페이스 구현

Awake, OnEnable, Start, Update, FixedUpdate, LateUpdate 등

유니티의 MonoBehavior 메서드를 적절히 사용해보자.

Input System 잘 활용해보기

싱글톤 패턴 적절히 활용 and 제너릭 사용해보기

관찰자 패턴 - 이벤트


Unity 게임 프로그래밍 패턴으로 코딩 스킬 업그레이드
https://unity.com/kr/resources/level-up-your-code-with-game-programming-patterns

profile
게임 개발 기록

0개의 댓글