디자인 패턴 특강
1. 싱글톤 패턴 Singleton Pattern
특정 클래스의 인스턴스가 하나만 존재하도록 보장
클래스의 인스턴스 전역적으로 접근 가능
프로그램
2. 상태 패턴 State Pattern
상태가 많은 경우 사용
객체의 상태에 따라 객체의 행동을 결정
3. 관찰자 패턴 Observer Pattern
구독 서비스라 생각하면 쉬움
한 객체(주인공)의 상태 변화를 관찰하는 다수의 객체(관찰자)
주인공이 변하면 관찰자들에게 자동으로 알려줌
4. 커맨드 패턴 Command Pattern
게임유저의 입력이 많을 때 사용
TV와 리모컨의 관계 - 리모컨의 버튼 하나하나가 클래스
MoveCommand, JumpCommand 등을 클래스로
5. 컴포넌트 패턴 Componenet Pattern
객체의 행동을 작은 부품(컴포넌트)으로 분리
객체(게임 캐릭터 등)를 부품으로 조립하듯이 구성
- Unity에서도 컴포넌트를 사용
6. 빌더 패턴 Builder Pattern
샌드위치 제조 과정을 생각하면 쉬움
빌더라는 커다란 제조기, 빌더가 어떻게 찍어내느냐에 따라 샌드위치가 달라짐
맵을 찍어낼 때, 몬스터 생성할 때
찍어 낼 때마다 살짝씩 달라질 때 유용
7. 플라이웨이트 패턴 Flyweight Pattern
MMORPG를 구현할 때 많이 사용
메모리 사용을 최적화하기 위한 패턴
도서관에서 책(공유 객체)을 빌림 (한정된 수량)
-> 독후감을 씀 - 따로 정보를 관리하는 것
반복되는 아이템(퀘스트 아이템 등) 같은 것을 관리할 때 유용함
Coroutine
Coroutine은 C# 문법이 아닌 Unity 문법이다.
Coroutine 도 객체로 관리 가능
Coroutine co;
// 만약 co가 실행되고 있지 않다면
StartCoroutine(co);
StopCoroutine(co);
StopCoroutine을 적절히 해줘야한다.
map
C++ 에는 Dictionary대신 map이 있다.
map을 이용해 푼 문제
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<int> solution(string s) {
vector<int> answer;
map<char, int> m;
for (int i = 0; i < s.length(); ++i)
{
if (m.find(s[i]) == m.end()) {
m.insert({ s[i], i });
answer.push_back(-1);
}
else {
answer.push_back(i - m.find(s[i])->second);
m.find(s[i])->second = i;
}
}
return answer;
}
https://school.programmers.co.kr/learn/courses/30/lessons/142086
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
오늘 하루 회고
오늘은 팀 프로젝트 첫 번째 날~
나는 리소스 관리를 맡았다.
'내일배움캠프(Unity)' 카테고리의 다른 글
TIL - Unity 팀 프로젝트 (1) | 2023.12.04 |
---|---|
TIL - 푸드 파이트 대회(알고리즘 코드카타) (0) | 2023.12.01 |
객체지향 프로그래밍 특강 정리, 몇가지 문법 - 내일배움캠프 게임개발(Unity) 23일차 231129 TIL (1) | 2023.11.29 |
내일배움캠프 게임개발(Unity) 22일차 231128 TIL (2) | 2023.11.28 |
내일배움캠프 게임개발(Unity) 21일차 231127 TIL (3) | 2023.11.27 |