본문 바로가기

분류 전체보기

12월 9일 월요일 본 캠프 개발 일지 📌 학습 내용 1. 기술면접 공부  1. 기술면접 공부✅ override와 overload에 대해 설명해주세요. Override (재정의): 상위 클래스(또는 인터페이스)에 정의된 메서드를 하위 클래스에서 다시 정의하는 것이다. 주로 다형성(polymorphism)을 구현하기 위해 사용된다. virtual, override 키워드를 사용하며, 메서드의 시그니처는 동일해야 다.Overload (오버로드): 같은 이름의 메서드를 다양한 매개변수(파라미터)로 정의하는 것입니다.컴파일러가 메서드 시그니처를 보고 적절한 메서드를 호출한다.✅ 확장 메서드에 대해 설명하고 어떻게 활용했는지 알려주세요. 확장 메서드 (Extension Method)는 기존 클래스나 구조체를 상속하지 않고 새로운 메서드를 추가할 수 .. 더보기
12월 6일 금요일 본 캠프 개발 일지 📌 학습 내용 1. 작업 내용 2. 기술면접 공부  1. 작업 내용✅ UI UIManager와 HUD 캔버스를 모두 동적 생성 해주고, 그 밑에 UI를 넣어주는 방식으로 바꿨다! 캔버스 초기화를 GameManager에서 해주면 되었다. 그리고 왠지... 오류만 고치다가 하루가 끝나버렸다. 2. 기술면접 공부✅ SOLID 원칙에 대해 설명해주세요. 단일 책임 원칙 (Single Responsibility Principle, SRP)클래스는 하나의 책임만 가져야 하며, 변경 이유는 하나뿐이어야 한다.개방-폐쇄 원칙 (Open/Closed Principle, OCP)소프트웨어는 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 한다는 원칙.새로운 기능은 기존 코드를 수정하지 않고 확장(상속, 인터페이스 구현.. 더보기
12월 5일 목요일 본 캠프 개발 일지 📌 학습 내용 1. 작업 내용 2. 기술면접 공부  1. 작업 내용또 X 100 갈아엎었다. 진짜 스포너랑 던전 하루종일 붙잡고 있었더니 정신이 붕괴 되...✅ 룸 콜라이더 기능 추가  던전 내 스테이지마다 콜라이더가 존재하며 이 콜라이더는 해당 스테이지를 클리어 해야 사라진다. 그래서 이 콜라이더를 어떻게 관리하냐..? 에 정말 많은 시련과 3시간의 시간을 써버렸는데 결론적으로 던전 매니저에서 관리하기로 했다. 트리거에 가지고 있으려고 생각해보니까 트리거 자식 오브젝트로 넣어줘야 되는데 이걸 또 짝 맞춰서 넣어주려고 하니까 너무 이상해질 것 같았다. 그렇다고 동적 생성 하자니까 룸 데이터를 따로 만들어야 할 판이라 .. 최적화를 포기했다. ✅ UI  메인 UI와 팝업 UI를 나눠서 관리하기로 했다. .. 더보기
12월 4일 수요일 본 캠프 개발 일지 📌 학습 내용 1. 작업 내용 2. 기술면접 공부  1. 작업 내용최적화 및 코드 개선을 위해 또 한번 스크립트를 갈아 엎었다. ✅ 스포너에서 몬스터 풀링 시스템 > 생성 및 파괴 1회 동작으로 변경 무조건 풀링이 좋다고 생각해서 풀링 시스템을 썼지만 던전식 시스템이라서 계속 스폰해줄 필요가 없기 때문에 풀링을 버렸다. 풀링 시스템을 쓸 때도 명확한 이유가 있어야 한다. ✅ 룸 트리거에서 몬스터 스폰 함수 실행 > 던전 매니저에서 스폰 함수 실행몬스터를 생성하는 스폰 함수를 룸 트리거에서 실행했지만, 룸 트리거가 모든 스포너 데이터를 가지고 있는 구조가 이상했다. 그래서 룸 트리거에서 트리거가 발동하면 던전 매니저에서 스폰 함수를 실행하는 함수를 작동하도록 했다.   ✅ 룸 클리어  던전 매니저에서 룸.. 더보기
12월 3일 화요일 본 캠프 개발 일지 📌 학습 내용 1. 몬스터 생성 규칙 확장하기 1. 몬스터 생성 규칙 확장하기 ✅ 발전 과정  처음에는 개별 몬스터마다 스폰 위치를 지정해줄 수 있도록 했다. 이 경우 스폰 위치는 배열로 저장되고, 몬스터 생성 수만큼 for문을 반복해 저장된 위치로 보내주었다. 하지만 몬스터는 동적 생성을 하면서 개별 위치 정보는 인스펙터에서 할당해줘야 하는 점이 마음에 걸렸다. 그래서 몬스터의 개별 위치 정보를 데이터 시트에 추가하려고 했지만 이 역시 생성할 몬스터가 너무 많아질 경우를 생각하니 효율이 좋지 않다고 생각했다.   결국 생성 규칙을 정해 모든 몬스터가 정해진 규칙대로 생성되도록 만들었다! 랜덤으로 하는 게 쉽지만 똑같은 위치에 겹쳐서 생성되는 문제를 피하기 위해 그리드(격자)에 순차적으로 생성되도록 했.. 더보기
12월 2일 월요일 본 캠프 개발 일지 📌 학습 내용 1. Find 메서드2. 델리게이트와 이벤트의 차이  1. Find 메서드  리스트 데이터에서 ID에 맞는 데이터 찾는다고 무한 For문 돌리던 바보 같은 날들아 안녕. List 클래스에서 제공하는 미-친 메서드를 발견했다.   ✅ Find 메서드? 리스트 내에서 특정 조건에 맞는 요소를 검색할 때 사용하는 메서드이다. 특정 조건을 만족하는 첫 번쨰 요소를 반환하고, 조건은 델리게이트 또는 람다식을 통해 정의한다. public T Find(Predicate match);T: 리스트의 요소 타입Predicate: 조건을 나타내는 델리게이트  ✅ UGS에서 활용하기  USG에서 생성된 데이터 클래스를 보면, 데이터를 리스트로 반환해주는 메서드가 존재한다. GetList() 해당 클래스를 상속.. 더보기
11월 29일 금요일 본 캠프 개발 일지 📌 학습 내용 1. 데이터 파싱 구조 2. 던전 매니저 및 스포너 리펙토링  1. 데이터 파싱 구조  데이터 특강을 들으면서 이제! 드디어! 데이터를 집어넣는 것과 전달의 차이점과 구조를 파악했다.   일단 모든 카테고리의 데이터를 관리하는 데이터 매니저를 만들고, 그곳에서 개별 데이터 매니저를 초기화 해준다. 이렇게 해야 데이터를 불러올 때 개별 매니저를 초기화 하지 않고 DataManager.Instance.Item 을 통해 Item 객체로 초기화 된 아이템 매니저의 함수에 접근할 수 있다.  이때의 아이템 매니저는 아이템 데이터를 상속 받기 때문에 아이템 데이터를 원하는대로 불러올 수 있다. UGS에서는 GetList를 통해 리스트로 모든 데이터를 가져오거나 GetDictionrary를 통해 모든.. 더보기
11월 28일 목요일 본 캠프 개발 일지 📌 어제 오늘 작업을 통해 알게 된 사실을 가볍게 정리해보고자 한다. 학습 내용 1. 오브젝트 풀링 2. 데이터 ID를 통해 데이터 인덱스 가져오기 3. 디버깅 1. 오브젝트 풀링 (Object Pooling) ✅ 오브젝트 풀링? 사람들이 너무 자주 쓰길래 유니티에서 제공하는 내장 기능인 줄 알았지만 디자인 패턴이었다.  오브젝트 풀링은 일정 수의 오브젝트를 미리 생성하여 풀(pool)에 보관하고, 필요할 때 풀에서 꺼내 사용한 후 다시 반환하는 방식이다. 이를 통해 오브젝트를 매번 생성하거나 삭제하는 데 드는 비용을 절감할 수 있다. 쉽게 말해서 최적화와 관련이 있다. 2. 데이터ID를 통해 데이터 인덱스 가져오기  11월 27일 수요일 본 캠프 개발 일지지금 던전 - 스포너를 작업하고 있는데 모든 .. 더보기