일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 뭐드라
- spritemask2d
- 블렌더
- spritelibrary
- 나만의 견해
- LookAt
- 후기
- 연습
- 게임분석
- 취미
- 스파르타내일배움캠프TIL
- 붕괴스타레일
- 게임 회사
- 스파르타내일배움캠프
- 프로그래밍
- 컴포넌트
- materialpropertyblock
- 점프
- ag 내일배움캠프
- 코딩
- 취업
- 내일배움캠프
- 유니티
- 게임용어
- 게임
- 원신
- 일상
- 붕괴 스타레일
- 공부
- 까먹기전에메모
- Today
- Total
덴바의 노트
내일배움캠프 10일차 TIL 본문
오늘의 학습 키워드
- 싱글톤 패턴 디자인
오늘부로 내일배움캠프 10일차가 되었습니다.
이번에는 저번과 다르게 팀 프로젝트로, 지난 주에 만든 Text RPG를 콘솔로 구현하는 것입니다.
추가된 내용은 바로 Dungeon.
즉, 몬스터와 전투 시스템이 모두 추가되었습니다.
이번 프로젝트는 처음부터 새로 다시 만드는 것이 아닌,
제 프로젝트를 총원 4명이서 협업하는 형식으로 시작되었습니다.
여기서 싱글톤 패턴 디자인을 왜 언급하냐면
제 코드는 여러모로 하드 코딩된 상태로 static으로 구현된 것들이 매우 많습니다.
그렇기에 먼저 옵션 및 핵심 기능을 잡아줄 중추 스크립트가 필요했습니다.
그래서 GameManager를 중심으르 잡아서 싱글톤 패턴으로 구현을 했습니다.
그 후 DataManager, UIManager, EventManager, Player를 GameManager에 연계하여
언제든지 쉽게 접근할 수 있도록 구현했습니다.
private static GameManager instance = null;
private static readonly object padLock = new object();
GameManager()
{
}
public static GameManager Instance
{
get
{
lock (padLock)
{
if(instance == null)
{
instance = new GameManager();
}
}
return instance;
}
}
private DataManager data = new DataManager();
private UIManager ui = new UIManager();
private EventManager _event = new EventManager();
private Player player = new Player();
public DataManager Data { get => Instance.data; }
public UIManager UI { get => Instance.ui; }
public EventManager Event { get => Instance._event; }
public Player Player { get => Instance.player; }
또한 Main 함수가 있던 Program.cs의 코드를 최소화하기 위해서
GameManager.cs에 GameStart()라는 함수를 만들고,
내부에 있던 while문을 제거한 후 재귀함수로 만들었습니다.
static void Main(string[] args)
{
// 거슬리는 커서의 움직임을 없애기 위해서 Visible을 False로
Console.CursorVisible = false;
GameManager.Instance.GameStart();
}
이렇게 해서 600 Line이 넘던 Program.cs을 20줄 미만으로 줄일 수 있습니다.
또한 GameManager.Instance... 형식으로 객체 생성자를 만들지 않고도 참조할 수 있어서
매우 편리합니다.
단, 단점이 있습니다.
위와 같은 싱글톤의 단점
하나의 인스턴스 내에서 모든 기능을 다루고 있기 때문에,
만약 해당 인스턴스가 에러가 나거나 망가질 경우,
시스템이 고장날 수 있기 때문에,
싱글톤 내부 자체에서 예외 처리를 통해서 회복성, 유지성을 만들어줘야합니다.
오늘의 회고
오늘은 팀 활동으로 인해서 많은 소통을 나눴고,
이로 인해, 코드 컨벤션, 깃 커밋 컨벤션, 깃 플로우 컨벤션 등을
피그마를 통해서 도형을 그려가면서 만들어갔습니다.
완벽하지는 않지만 협업의 중요성, 소통, 그리고 팀과의 약속을 정하는 것 또한,
작업의 효율성 등을 높이는 데에 큰 도움이 되는 것 같습니다.
다음 포스팅은 깃 커밋 컨벤션, 깃 플로우 컨벤션에 대해서 포스트 해볼까합니다.
'프로그래밍 노트 > TIL' 카테고리의 다른 글
내일배움캠프 12일차 TIL (1) | 2024.05.01 |
---|---|
내일배움캠프 11일차 TIL (0) | 2024.04.30 |
내일배움캠프 9일차 WIL (1) | 2024.04.26 |
내일배움캠프 8일차 TIL (1) | 2024.04.25 |
내일배움캠프 7일차 TIL (0) | 2024.04.24 |