🗓️ 오늘 하루 일정
✅ 오전
- 09:00 ~ 11:00 : GitHub 과제 업로드, 제출 및 README.md 정리
🍽️ 점심시간
- 13:00 ~ 14:00 : 점심시간
✅ 오후
- 14:00 ~ 17:00 :
- Unity 학습 내용 복습 (라이프사이클, 코루틴, Instantiate 등)
- 스파르타 메타버스 개인 과제 해설 영상 시청 및 정리
✅ 저녁 전
- 17:00 ~ 18:00 : 스파르타 코딩클럽 밍글데이 (미니게임 참여)
🍽️ 저녁시간
- 18:00 ~ 19:00 : 저녁시간
✅ 저녁
- 19:00 ~ 21:00 :
- C# 제너릭 싱글톤 패턴 학습
- 주요 알고리즘 핵심 개념 정리
- (DP, Greedy, Divide and Conquer, Backtracking, Union-Find, Disjoint Set, DFS, BFS)
- 팀원들과 회의 진행
✅ 오늘 학습 키워드
- Unity MonoBehaviour 라이프사이클
- Coroutine 동작 방식
- Invoke vs Coroutine 비교
- InvokeRepeating 개념 정리
- Instantiate 오버로드 & 부모 설정 차이
- C# 제너릭 싱글톤 패턴
- 알고리즘 핵심 개념 정리
- (DP, Greedy, Divide and Conquer, Backtracking, Union-Find, Disjoint Set, DFS, BFS)
- 메타버스 개인 과제 해설 영상 리뷰
✅ 오늘 학습 한 내용을 나만의 언어로 정리하기
Unity - Unity MonoBehaviour 생명주기 (Lifecycle) 정리
🌀 Unity MonoBehaviour 생명주기 (Lifecycle) 정리Unity는 MonoBehaviour 기반의 스크립트를 일정한 순서로 호출하며, 게임 오브젝트의 생성부터 종료까지 다양한 이벤트 함수를 실행한다. 아래는 각 단계별
dev-jen.tistory.com
Unity - Unity Coroutine(코루틴)
📌 Coroutine이란?**코루틴(Coroutine)**은 Unity에서 제공하는 특별한 함수로, 작업의 흐름을 중간에 일시정지하고, 조건이 충족되면 다시 이어서 실행할 수 있다.코루틴은 IEnumerator 반환형을 가지며, S
dev-jen.tistory.com
Unity - Invoke() vs Coroutine 비교 정리 & InvokeRepeating()
⏰ Unity Invoke() vs Coroutine 비교 정리Unity에서 일정 시간 이후에 어떤 작업을 수행하려면 보통 Invoke()나 Coroutine을 사용한다.둘 다 **시간 지연(delay)**을 다룰 수 있지만, 구조와 활용도에는 큰 차이가
dev-jen.tistory.com
Unity - Unity Instantiate() 오버로드 정리 & 자식으로 설정할 때의 차이
🧱 Unity Instantiate() 오버로드 정리 & 자식으로 설정할 때의 차이Unity에서 동적으로 오브젝트를 생성할 때 가장 많이 사용하는 함수는 Instantiate()다.하지만 부모를 지정하는 방식, 월드 좌표 유지
dev-jen.tistory.com
🔹 Unity 생명주기 & 이벤트 흐름 정리
- Unity는 MonoBehaviour 기반으로 Awake → OnEnable → Start → Update → LateUpdate → OnDisable → OnDestroy 순서로 흐름이 이어진다.
- Invoke()는 단순 딜레이용으로 적합하지만, Coroutine은 흐름을 끊고 이어갈 수 있어 더 유연하다.
- InvokeRepeating()은 간단한 반복 호출이 필요할 때 매우 유용하지만, 조건 제어나 흐름 변화에는 Coroutine이 더 적합하다.
- Instantiate() 시 부모를 지정하는 방식에 따라 로컬 좌표가 달라질 수 있다. SetParent(transform, false)처럼 두 번째 인자를 명시해야 위치/회전이 부모 기준으로 정확히 맞는다.
🔹 C# 제너릭 싱글톤 패턴
- 제너릭 싱글톤은 여러 매니저 클래스에서 중복 없이 간결하게 싱글톤 패턴을 구현하는 데 유용하다.
- where T : MonoBehaviour 제약을 통해 Unity 컴포넌트만 상속 가능하게 제한할 수 있다.
🔹 알고리즘 핵심 개념 복습
- DP (Dynamic Programming): 작은 문제를 해결한 결과를 저장하며 반복을 줄이는 방식.
- Greedy: 매 순간 최선의 선택이 전체 최적이라는 확신이 있을 때 사용.
- Divide and Conquer: 문제를 나누고 합쳐서 푸는 방식 (예: 병합정렬).
- Backtracking: 모든 경우를 탐색하되 조건을 만족하지 않으면 돌아가는 방식 (예: N-Queen).
- Union-Find / Disjoint Set: 집합 간 연결성을 추적할 때 사용. 대표적인 사용처는 크루스칼 알고리즘.
- DFS/BFS: 그래프 탐색의 기본. DFS는 스택, BFS는 큐를 활용하며 각각의 탐색 특징이 다름.
🔹 메타버스 개인 과제 해설 영상
- 과제 흐름과 포인트를 다시 보며 로직 이해도가 높아졌고, 실제 실습에 어떻게 녹여야 할지 감이 잡혔다.
- 다양한 기능 구현 방식과 코드 구조를 비교하면서 나의 코드에 개선할 점도 떠올랐다 다음 프로젝트에 적용해볼생각!
🧩 학습하며 겪었던 문제점 & 에러
❌ 1) Instantiate + SetParent() 사용 시 위치/스케일 꼬임 문제
- 문제정의예상한 위치나 스케일이 깨지고 의도한 위치에 생성되지 않음.
- 오브젝트를 Instantiate한 뒤 SetParent(transform)으로 부모를 설정했더니
- 문제 코드 예시
GameObject newObj = Instantiate(obj); // 월드 기준 생성
newObj.transform.SetParent(transform); // 부모 설정 (기본은 worldPositionStays = true)
- 해결 코드 예시
GameObject newObj = Instantiate(obj);
newObj.transform.SetParent(transform, false); // 🔧 로컬 기준으로 정확히 부모에 배치됨
- 새롭게 알게 된 점따라서 부모 설정 시 월드 좌표를 유지하려고 하기 때문에 로컬 위치가 틀어질 수 있다.
- SetParent()의 두 번째 인자인 worldPositionStays를 명시하지 않으면 기본값은 true.
- 다시 만나게 된다면아니면 Instantiate(obj, parent, false)를 사용하면 더 간결하고 명확하다.
- 자식으로 넣을 때는 항상 SetParent(..., false)를 사용하는 습관을 들이자.
❌ 2) Coroutine vs Invoke 차이 혼동
- 문제정의제어 흐름과 활용 방식이 완전히 달랐다.
- Coroutine과 Invoke() 모두 딜레이 기능이 있어서 같은 역할인 줄 알았는데
- 문제 코드 예시 (Invoke)
void Start()
{
Invoke("Attack", 3f);
}
void Attack()
{
Debug.Log("공격!");
}
- 문제 코드 예시 (Coroutine)
void Start()
{
StartCoroutine(AttackRoutine());
}
IEnumerator AttackRoutine()
{
yield return new WaitForSeconds(3f);
Debug.Log("공격!");
}
- 차이점 요약
- Invoke()는 단 한 번, 정해진 시간 후에 딱 한 함수만 실행 가능.
- Coroutine은 조건, 반복, 다단계 처리 모두 가능하며 유연함.
- 새롭게 알게 된 점
- 코루틴은 흐름 제어를 위한 도구이고, Invoke는 단발성 딜레이 호출용으로 훨씬 간단하다.
- 다시 만나게 된다면
- 간단한 타이머면 Invoke(), 여러 조건이나 단계가 있다면 무조건 Coroutine 사용.
📝 메모
오늘 복습을 하다 보니 그동안 그냥 넘겼던 부분들이 연결되면서
‘아, 이게 이런 의미였구나’ 하고 퍼즐이 맞춰지는 기분이었다.
특히 Instantiate의 부모 설정과 Coroutine vs Invoke의 차이를
눈으로 보고 직접 실험해보며 이해하니까 훨씬 머리에 잘 남는다.
그냥 문서로만 봤을 땐 “이해한 것 같았는데...” 실제론 헷갈렸던 부분들이었다.
알고리즘 핵심 개념들도 다시 정리하면서
‘내가 생각보다 깊게는 이해하지 못했구나’ 하는 반성도 들었고,
하지만 이런 시간을 통해 조금씩 더 단단해지고 있다고 느낀다.
오늘도 팀원들과 회의를 하며 서로의 프로젝트를 나눌 수 있어서 좋았고,
혼자보다 함께 같이 나아갈 기분이 들어 든든했다.
앞으로도 “잘 모르겠는 건 부끄러운 게 아니라,
그걸 놓치고 넘어가는 게 더 위험하다”는 마음으로
하나하나 꼼꼼히 쌓아가야겠다는 다짐을 다시 해본다.
내일도 화이팅!!!!💪

'스파르타 코딩클럽 > TIL작성' 카테고리의 다른 글
내일배움캠프 23일차 TIL [팀프로젝트(Archero)] (5) | 2025.07.30 |
---|---|
내일배움캠프 22일차 TIL [팀 프로젝트(Archero)] (3) | 2025.07.29 |
내일배움캠프 20일차 TIL [메타버스 게임] (6) | 2025.07.25 |
내일배움캠프 19일차 TIL [메타버스 게임] (2) | 2025.07.24 |
내일배움캠프 18일차 TIL [메타버스 게임] (5) | 2025.07.23 |