전체 글 114

[TIL] 내일배움캠프_Unity 최종 프로젝트 3주차: 추가 기능 구현5, 기술 면접 대비 21일차

팀 회의 내용 - 진행 상황 공유 - 배포 전 까지 일정 정하기 오늘 한 일 - 사운드 소스 찾기 - 사운드 적용 저번에 라이센스를 공부했던 내용을 토대로 저작권 없는 CC0 위주로 Sound 에셋을 찾았고 이전 프로젝트들 보다 규모가 있다보니까 찾아야 하는 양이 많고, 저작권도 신경써야해서 마음에 드는 Sound를 찾기 어려웠다 이 작업을 하면서 내가 작성한 코드 뿐만 아니라 다른 팀원분들이 작성한 코드를 자연스럽게 보게 되어 신선하게 다가왔다 열심히 보면서 이해하고 배우는 중이다 MonoBehaviour 클래스에서 주요 메서드에 대해 공부하다가 유니티 클래스들을 한번 정리하고 가면 좋을 것 같다고 생각했다 1. GameObject : 유니티 씬에서 오브젝트를 나타낸다 2. MonoBehaviour :..

TIL 2023.11.15

[TIL] 내일배움캠프_Unity 최종 프로젝트 3주차: 추가 기능 구현4, 기술 면접 대비 20일차

팀 회의 내용 - 추가구현 진행사항 구현한 내용 - 오브젝트 풀을 이용한 효과음 재생 유니티에서 배경음악과 효과음을 재생시키려면 AudioSource가 있어야 하는데 배경음악 같은 경우는 각 씬마다 정해진 배경음악 하나만 존재해도 되지만 효과음은 여러개의 음악을 재생시켜야 하는 일들이 발생한다 이를 위해 AudioSource 컴포넌트를 가진 오브젝트를 프리팹으로 만들고 SoundManager로 효과음을 재생시킬 때 마다 미리 생성된 프리팹을 가져다 사용하고 반환하여 재사용 하는 방법을 통해 생성 비용을 줄이는 방법으로 구현하였다 그리고 어제 진행했던 중간발표 피드백으로 코드 작성에 대한 팁 들을 몇가지 알게 되었다 1. 필요없는 using 문은 지우고, 정렬을 해서 일관성 있는 코드 작성 2. Debug..

TIL 2023.11.14

[TIL] 내일배움캠프_Unity 최종 프로젝트 3주차: 추가 기능 구현3, 기술 면접 대비 19일차

팀 회의 내용 - 중간 발표 리허설 - 진행 상황 점검 - 추가 기능 분담 + 오늘 한 일 - 중간 발표 - 일시정지 패널 구현 - 게임 설정 팝업창 띄우기 - UI 디자인 제일 정신없던 하루 발표 준비하고 추가기능 구현하고 정신이 하나도 없었다 발표는 더 잘 하고싶었는데 7분이라는 시간을 재고 있다 보니까 마음이 급해져서 말이 빨라지고 대본만 읽게 되고 내가 생각해도 그냥 일반적인 발표 그 자체 다음에 발표할 기회가 또 오면 그때는 키워드를 생각하거나 대본을 외우거나 더 잘 하자 이것저것 발표 팁을 주워들었던 기억을 되살려보자면 1. 시연 영상에 시간 많이 쓰지 않기 2. 중요한 내용은 gif 활용하기 3. 대본이 아니라 각 슬라이드별로 키워드 준비해서 말 하는 연습하기 그리고 UI 디자인을 같은 팀원..

TIL 2023.11.14

[TIL] 내일배움캠프_Unity 최종 프로젝트 3주차: 추가 기능 구현2, 기술 면접 대비 18일차

팀 회의 내용 - 프로젝트 회고 - 중간 발표 내용 정리 - 진행상황 점검 구현한 내용 - 판매 결산 판매 금액, 소지금 연결 - 페기된 재료 데이터 연결 - 영업 결과에 따라 달라지는 데이터 설정 - 영업 종료 후 Scene 이동 - UI 디자인 수정 판매 결산도 그닥 어려운 내용은 없었다 사실 다른 팀원분이 하시던걸 인수인계 받아서 진행하게 되었고 추가로 더 구현해야할 내용이 그렇게 많지 않아서 금방 끝내고 다른 추가기능을 구현할 수 있을 것 같다 사실 손님쪽이랑 연계되는 부분이 있어서 그쪽에서 데이터를 끌어오면 되는거긴 한데 이게 좋은 점은 편하지만 분리를 해야할 수도 있다고 생각이 들었다 게임중 생긴 데이터를 받아와서 사용하는 건 알겠지만 가공까지 해서 보내준다는 것은 너무 많은 역할을 가지고 있..

TIL 2023.11.10

[TIL] 내일배움캠프_Unity 최종 프로젝트 3주차: 추가 기능 구현1, 기술 면접 대비 17일차

오늘 한 일 - 객체 지향 원칙 - 정렬 알고리즘의 안정성 - 기술면접 답변 & 롤플레잉 - 판매 결산 인수 인계 전 로직 확인 객체지향 원칙 SOLID 1. 단일 책임 원칙 : 하나의 객체는 하나의 책임을 가져야한다 - 객체가 담당하는 책임이 많아질 수록 해당 객체의 변경에 따라 모듈화가 약해져서 다른 객체와의 의존/연관성은 크게 늘어난다 이러한 현상은 객체 지향의 주요 특징 중 하나인 캡슐화를 부정한다 단일 책임 원칙은 특정 객체의 책임 의존성 과중을 최대한 지향하기 위한 원칙이다 2. 개방 폐쇄 원칙 : 객체의 확장은 개방적으로, 객체의 수정은 폐쇄적으로 대해야한다 - 기능이 변하거나 확장 가능하지만, 해당 기능의 코드는 수정하면 안된다는 뜻으로 객체 하나를 수정할 때 단순히 해당 객체만 수정하는 ..

TIL 2023.11.09

[TIL] 내일배움캠프_Unity 최종 프로젝트 3주차: 주요 메카닉 구현 10, 기술 면접 대비 16일차

팀 회의 내용 - GameScene 구조물 배치 - 주요 메카닉 완성도 높이기 - 추가 기능 역할 분담 - 통합 테스트 및 버그픽스 구현한 내용 - 버그픽스 오늘로 주요메카닉 구현 끝 !! 이번에 특별한 버그가 하나 발생하였다 싱글턴화 되어있는 GameManager에서 두 개 이상의 객체가 서로를 참조하는 순환 참조가 일어나서 계속해서 GameManager가 생성되어 메모리 릭 에러가 발생했었다 이를 해결하기 위해 순환 참조 하는 부분을 없애고 싱글턴화 되어있는 Manager 들은 Awake에서 초기화 하지 않고 start에서 초기화 해주도록 변경하였다 기술 면접 대비 16일차 Q: 스택, 힙 메모리란 무엇이며 어떤 차이가 있는지 비교해서 설명해주세요 A :스택은 정적 메모리를 저장하고, 정의된 스코프를..

TIL 2023.11.09

[TIL] 내일배움캠프_Unity 최종 프로젝트 3주차: 주요 메카닉 구현 9, 기술 면접 대비 15일차

팀 회의 내용 - DataManager 구조 분리 - 주요 메카닉 완성도 높이기 구현한 내용 - DataManager 구조 분리로 인한 MarketSystem 구현 현재 프로젝트의 UI는 각 패널마다 MVC 패턴을 이용한다 Model은 DataManager View는 각 패널 Controller는 각 패널마다 외부에서 통신하여 데이터를 받아 View에게 넘겨준다 이때, 각 패널들의 공통점은 모두 DataManager를 Model로 사용하고 있다 그래서 DataManager의 하는 일은 많아지고 역할이 모호해지기 시작하여 각 Model을 따로 만들어 분리하고 DataManager는 저장과 로드, 기본데이터만 가지고 있는 방식으로 변경하였다 기술 면접 대비 16일차 Q : 정렬 알고리즘이란 무엇이며, 사용 ..

TIL 2023.11.07

[TIL] 내일배움캠프_Unity 최종 프로젝트 3주차: 주요 메카닉 구현 8, 기술 면접 대비 14일차

팀 회의 내용 - DataManager 구조 - 주요 메카닉 완성도 높이기 - 테스트 및 버그 픽스 구현한 내용 - UI_HomeScene 데이터 연결 UI_HomeScene 에 있는 데이터는 Player의 데이터로 인벤토리나 재료 주문으로 인해 Scene 이동 없이 실시간으로 업데이트 해줘야 하는 특이점이 있었다 그래서 가격이 변하는 곳에서 Update를 일일히 해주는 것 보다는 이벤트를 사용하여 Player 데이터가 변경되면 구독한 메서드가 호출되는 방식으로 만들었다 DataManager는 UI_HomeScene을 알고 있지 않게 구현했다 또한, 다른 씬에서도 Player 데이터가 변경되었을 때 발생하는 예외처리를 위해 OnDestroy() 함수에서 DataManager에 구독한 메서드를 구독해제 해..

TIL 2023.11.07

[TIL] 내일배움캠프_Unity 최종 프로젝트 2주차: 주요 메카닉 구현 7, 기술 면접 대비 13일차

팀 회의 내용 - 주요 메카닉 통합 - 빌드 후 테스트 및 버그 픽스 구현한 내용 - DataManager 데이터 연결 - 레시피 해금된 목록에 따라 재료 필터링 - 기능 연결 각자 구현한 주요 메카닉 구현 통합 완료 ! 물론 중간에 버그도 있고 수정해야 할 사항들은 보이지만 전체적으로 게임 플레이가 가능해졌다 아직 완벽하진 않지만 프로토 타입이라고 불러도 괜찮지 않을까 이번에는 비교적 적은 양의 일을 맡아서 그런지 일단 내가 구현한 부분에서는 버그 발견이 없었고 UI 디자인만 조금 수정하면 완성이다 다들 버그 고치거나 더 해야할 일이 있었는데 이번에 내 파트에서 버그가 안 나와서 테스트를 더 많이 했지만 뭔가 나만 안 바쁘고 한가했다 내가 뭘 하고 있는가 ... 그래서 내가 할 수 있는 작업을 찾고 전..

TIL 2023.11.06

[TIL] 내일배움캠프_Unity 최종 프로젝트 2주차: 주요 메카닉 구현 6, 기술 면접 대비 12일차

2주차 : 주요 메카닉 구현 구현한 내용 - 주문하기 버튼 완성 - 리팩토링 아직 데이터들이 만들어지지 않아서 일단 테스트 코드를 넣어 데이터만 넣으면 실행될 수 있게 로직 완성했음 기술면접 대비 12일차 Q : 'delegate', 'event','action','func' 간의 차이를 설명해주세요 A : delegate와 event의 가장 큰 차이점은 event는 인터페이스 내부에 선언할 수 있지만, 델리게이트는 선언할 수 없습니다 그리고 event는 클래스 내부 상태를 캡슐화하고, 외부에서 무분별한 조작을 방지하여 안정성을 높이기 위해 public으로 선언되어도 다른 클래스에서는 직접 호출할 수 없습니다 Action과 Func은 사용자 지정 델리게이트로 일반 델리게이트와는 다르게 명시적으로 델리게이..

TIL 2023.11.05