[내일배움캠프] 기술면접 연습 -람다식(Lambda Expression)
람다식(Lambda Expression)이 무엇인지 설명해 주세요. 람다식이란 메서드의 이름과 매개변수의 자료형 그리고 반환값을 명시하지 않아도 되는 간결한 식입니다. 메서드의 이름을 명시하지 않는다는 것을 그만큼 성능향상의 요인이 되고 한번 사용하고 버리는 간단한 데이터들을 선언조차 하지 않고 참고만 하기에 데이터 관리나 처리 등에서 이점이 있다고 보입니다. 하지만 앞서 말한 점이 아니더라도 람다식은 간결한 식에서 오는 가독성향상과 유지보수가 쉬워진다는 점에서 람다식을 사용하는 것이 좋다고 느껴집니다.
2024.01.29
[내일배움캠프] 실전 프로젝트 - 코드리뷰
오늘 팀원들과 3주차 마무리 그리고 4주기의 마무리를 하며 코드리뷰를 진행했다. 그간 작업해왔던것들을 코드를 기반으로 보여주며 설명들을 이어 갔다. 내가 작업했던 것들을 말을 통해 한번 더 복기 할 수 있는 시간이기도 했지만 작업을 하다보면 다른사람의 코드를 봐야하는 경우가 종종 있었는데 이렇게 코드 리뷰를 진행하며 모르는 부분, 이해하지 못한 부분들을 물어보고 설명해주며 진행 하는게 앞으로 작업 함에 있어서도 정말 좋은 시간이였던거 같다.
2024.01.26
no image
[내일배움캠프] 실전 프로젝트 - Terrain으로 맵 만들어보기
유니티 하이어라키창에서 우클릭 -> 3D Object -> Terrain을 누르면 Terrain(지형 또는 지역)이 하나 생성된다. 생성된 Terrain을 눌러보면 인스펙터 창에 Terrain, Terrain Collider 컴퍼넌트가 추가 되어있는걸 볼 수 있다. Terrain 컴퍼넌트에 5개의 버튼 중 두번째에 Paint Terrain 라고 나오는 버튼을 누른다. 누르고 보면 바로 아래 드롭다운 버튼 하나 있는데 눌러보면 아래 사진과 같이 선택지가 주어진다. 이 중 내가 사용해본 기능들을 소개하자면 Set Height : 선택한 영역의 높이를 변경하는 브러쉬 Paint Holes : 선택한 영역의 터레인을 지우는 브러쉬 Paint Texture : 등록해둔 레이어들로 선택 영역의 메테리얼을 입히는 브..
2024.01.25
[내일배움캠프] 실전 프로젝트 - 인벤토리 만들기
Inventory.cs using System.Collections; using System.Collections.Generic; using TMPro; using Unity.VisualScripting.Antlr3.Runtime.Misc; using UnityEngine; public class ItemSlot { public ItemSO Item; public int Quantity; } public class Inventory : MonoBehaviour { public ItemSlotUI[] UISlots; public ItemSlot[] Slots; public GameObject InventoryUI; [Header("Selected Item")] private ItemSlot selected..
2024.01.24
no image
[내일배움캠프] 실전 프로젝트 - 게임 공통시간 만들기
이전에 낮과 밤을 구현한적 있는데 그곳에서 필요한 코드들을 공용시간으로 돌리기 위해 GlobalTimeManager 스크립트를 하나 만들었다. Start부분 부터 살펴 보면 _timeRate = 1.0f / FullDayLength; 라고 적혀있다. FullDayLength에 입력한 값을 나중에 퍼센트로 바꿔서 사용하기 위해 1f로 나눠주는 모습이다. 다음은 Update부분에 DayTime = (DayTime + _timeRate * Time.deltaTime) % 1.0f; 위에서 만든 _timeRate를 Time.deltaTime에 곱하고 현재시간을 더해준다. 그 값의 1f로 나눠서 나오는 나머지 값으로만 DayTime를 측정하기 때문에 값은 0~0.999.. 까지 밖에 나올 수 가 없다. 여기까지는..
2024.01.23
[내일배움캠프] 실전 프로젝트 - 다시보는 딜레이
딜레이를 줄 수 있는 방법에는 대표적으로 3가지가 있다. 1. Time.deltaTime 2. Invoke 3. Coroutine Time.deltaTime 사용 예제 public float Delay; // 시간을 담아줄 딜레이 변수 선언 void Update() { Delay += Time.deltaTime; // Delay 변수에 시간을 더해준다. if(Delay > 5f) // 5초가 지나면 조건이 true가 된다. { //Attack!! Delay = 0f; // Delay를 다시 0초로 되돌린다. } } Invoke 사용 예제 void Update() { if (Input.GetKeyDown(KeyCode.Z)) // 'Z'키 입력시 조건이 true가 된다. { Invoke("Attack",5..
2024.01.22
[내일배움캠프] 실전 프로젝트 - 기술면접 연습 3
가비지 컬렉터에 대해 설명해주세요. 가비지 컬렉터란 힙 영역에서 더이상 사용되지 않는 즉 주소를 잃은 값들의 메모리블럭을 찾아 메모리 회수를 하는 역할을 수행합니다. 하지만 가비지 컬렉터의 과정이 무겁기 때문에 가비지 컬렉터의 발생을 줄이기 위해 노력해야 합니다. 가비지 컬렉터를 회피하기 위한 전략은 무엇이 있나요? 재사용가능 한 객체를 생성하는 방향으로 진행하는게 도움이 됩니다. 그리고 가능하다면 참조를 줄일 수 있는 만큼 줄이고 class 말고 struct 를 사용하는게 스택영역에 메모리를 사용하기 때문에 가비지 컬렉터의 영향을 받지 않는 방법이 될 수 있습니다. 가비지 컬렉션이란 무엇인지 설명해주세요. 메모리 관리 기법중 하나로 더이상 사용되지 않는 영역을 해제하지 않았을 때 그영역을탐지하여 자동으..
2024.01.19
[내일배움캠프] 실전 프로젝트 - 기술면접 연습 2
'ref'와 'out'의 사용 시 차이는 무엇인가요? ref 와 out 키워드는 변수를 참조 형태로 전달하는데 사용되는데 ref 키워드는 반드시 변수의 초기화가 되어서 전달이 되어야하지만 out 키워드는 변수의 초기화가 메서드 안에서 반드시 할당 되어야 합니다. 그 이유는 이전의 값을 모두 무시 하기 때문입니다. 접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명해주세요. 접근제한자란 말 그대로 외부로 부터 접근을 제한 시키는 용도로 쓰입니다. 기본적으로 설정이 되어있는 private은 외부로 부터 접근을 제한시키고 해당 클래스 내에서만 사용할 수 있습니다. 그리고 어디서든 불러올 수 있는 public, 상속을 받은곳에서만 불러올 수 있는 protected등이 있습니다. struct와 clas..
2024.01.18
no image
[내일배움캠프] 실전 프로젝트 - AI Navigation
AI Navigation은 설정해둔 지점과 지점으로 이동하게 길을 알려주는 역할을 한다. 이것을 사용하는 이유는 만약 지점과 지점을 최단거리를 통해 가는데 장애물이 있다면 가로막혀서 잘 동작하지 못할 것이다. 그래서 장애물을 인식하고 장애물을 피해서 최단 경로를 찾게 하기 위해 사용하는 것이다. 유니티에서 PackgeManager를 들어가 보면 AI Navigation 이라는 패키지가 있다. 다운 받지 않았다면 오른쪽 상단에 있는 Install 버튼을 눌러주고 다시 유니티로 돌아와서 Window를 보면 AI라는 Menu가 생겨있다. 그 중 Navigation(Obsolete)라는 것을 선택하면 관련된 창이 하나뜨고 다음 Plane이나 terrain을 하나 만들고 클릭하면 다음과 같이 뜬다. 위의 사진에 ..
2024.01.17