| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- ag 내일배움캠프
- 붕괴 스타레일
- c#
- 프로그래밍
- 유니티
- 붕괴스타레일
- 까먹기전에메모
- 원신
- til
- 코딩
- 스파르타내일배움캠프
- spritemask2d
- spritelibrary
- 취미
- LookAt
- 게임분석
- materialpropertyblock
- 게임 회사
- 컴포넌트
- 취업
- 뭐드라
- 게임용어
- 점프
- 블렌더
- 공부
- 연습
- 나만의 견해
- 후기
- 내일배움캠프
- 스파르타내일배움캠프TIL
- Today
- Total
덴바의 노트
내일배움캠프 0일차 TIL [게임 상태에 따른 안정적인 동작] 본문

오늘의 학습 키워드
- enum 함수
- switch문
- 코루틴 WaitUntil
공부한 내용 본인의 언어로 정리하기
enum 함수란?
enum 함수란 C#에서 사용되는 열거형(Enumeration) 형식이다.
enum 키워드를 사용하며 내부에 다양한 상수들을 나란히 열겨할 수 있는 하나의 목록과 같다.
public enum GameState
{
Ready,
Play,
Clear,
GameOver
}
위와 비슷한 형식으로 사용되며 주로 switch문을 활용하여 상태별 처리를 나눌 때 자주 사용합니다.
switch(state)
{
case Define.GameState.Ready:
// TODO 준비 상태일 때 동작
break;
case Define.GameState.Play:
// TODO 게임 플레이 상태일 때 동작
break;
case Define.GameState.Clear:
// TODO 게임 클리어 상태일 때 동작
break;
case Define.GameState.GameOver:
// TODO 게임 오버(실패) 상태일 때 동작
break;
}
위와 같이 사용하며 반드시 'case' 마다 'break'를 사용해줘야 한다.
그렇지 않으면 진입한 Case에서 부터 마지막 까지 멈추지 않고 모든 코드를 실행해버리는 문제가 있다.
enum과 switch 활용의 장점
- 가독성이 좋다.
- 이해하기 쉽다.
enum과 switch 활용의 단점
- 하나의 스크립트 내에서 코드가 길어지거나 복잡해질 수 있다.
- 대규모 프로젝트에서 빈번히 사용 시, 유지보수가 어려워진다.
코루틴 yield return new WaitUntil()
코루틴은 유니티에서 제공하는 기능 중 하나로, 해당 스크립트는 반드시 MonoBehaviour를 상속해야 한다.
코루틴을 이해하기 앞서 유니티에서는 Event함수의 실행 순서라는 것이 존재한다.
ex) Start(), Awake(), OnEnable, OnDisable() 등...
참고) 이벤트 함수의 실행 순서 - Unity 매뉴얼 (unity3d.com)
그 중에 우리가 가장 많이 사용하는 것이 바로 Update()함수 일 것이다.
문제는 Update() 함수에서는 매프레임 마다 실행을 한다.
코딩을 하다보면 특정 상황, 특정 타이밍에 Update문을 일시적으로 멈추고 특정 함수를 처리하게 하고 싶을 때가 있다.
그 기능을 코루틴이 하게 해준다.
public IEnumerator CreateCard()
{
yield return new WaitUntil(() => Vector3.Distance(dest, cd.transform.position) <= 0f);
}
코루틴을 사용하기 위해서는 기존의 함수 형식인 void 또는 자료형이 아닌 IEnumerator를 이용하여 선언해야 한다.
또한 코루틴에는 반드시 yield 문이 존재해야 한다.
yield 문이란 코루틴이 실행됨으로써 Update문을 일시 중단하고 코루틴을 처리한 후 다시 Update문으로 돌아가 처리를 하게 처리 권한을 양보하는 행위이다.
여기서 이번에 사용한 코드 WaitUntil()의 특징은 특정 조건이 달성할 때 까지 코루틴의 처리 작업을 양보하는 코드이다.
사용해본 결과 WaitUntil()에 람다함수를 이용하여 true를 return하면 조건을 달성할 수 있다는 것을 알 수 있었다.
오늘의 회고
오늘은 enum, switch, coroutine을 활용하여 게임 상태 별 GameManager 내부의 작동 원리를 구현했다.
메커니즘은 직관적이고 가독성이 좋아서 나쁘지 않게 작성했다고 생각하지만, 아직도 부족한 부분이 많았다.
관련 자료를 조사하다보니 12시간이라는 시간은 금방간 것 같다.
앞으로는 좀 더 체계적으로 디자인 패턴을 참고해가며 유지보수성과 가독성 등등 객체지향성을 최대한 살려서 공부한 것이다.
'프로그래밍 노트 > TIL' 카테고리의 다른 글
| 내일배움캠프 5일차 TIL (0) | 2024.04.22 |
|---|---|
| 내일배움캠프 4일차 WIL (0) | 2024.04.19 |
| 내일배움캠프 3일차 TIL (1) | 2024.04.18 |
| 내일배움캠프 2일차 TIL (0) | 2024.04.17 |
| 내일배움캠프 1일차 TIL (0) | 2024.04.16 |