02
01

과정명 : 내일배움캠프 Unity 게임개발 3기

전체진행도 : 28일차

부분진행도 : Chapter4.1 - 1일차

작성일자 : 2024.02.01(목)

개발일지 목록 : 클릭


1. 진행중인 과정에 대해

다시 개인과제 주차가 시작되었다.

새로운 강의의 지급이 되어 해당 강의를 흡수하고, 개인 과제를 해결하여 제출하는 데에 주말 포함 7일이 주어졌다.

또한 새로운 팀 편성을 하며 팀 스페이스를 새로 작성하였다.

스크럼 로그
트러블 슈팅 탬플릿
오늘 먹은 거 자랑

  • 매일 회의를 간단하게 기록하거나, 세션에 대한 메모를 하는 스크럼 로그
  • 프로젝트 중 버그나 개선할 점 또는 추가하고 싶은 아이디어를 작성하는 데이터베이스
  • 쓸 사람만 쓰는 먹은 것 자랑 TIA

팀에 활기를 불어넣어줄 것을 기대하며 위와 같은 내용들을 작성하였다.

새롭게 주어진 강의는 3D 프로젝트에 관한 내용이었다. 오늘은 개발 환경을 구성하기 시작하는 단계까지만 진행하였다.

저녁에는 메모리 관리에 관한 특강 세션이 있었고, 유익하게 배운 내용이 많았다.

2. 오늘 학습에 대해

Git Commit Message에 대해

실제 여러 개발자들이 직접 개발에 참여하고 있는 프로젝트들을 살펴보았다.

그 안에서도 많은 개발자들이 동시에 진행중인 PR(Pull Request) 목록들을 살펴보았는데, 기능 추가에 대한 내용을 예로 들면 소문자와 축약형의 단어인 feat보다 대문자로 시작하고 단어 전체의 Feature로 작성하는 개발자가 훨씬 많았다. 비율로 보면 1:5정도거나 그 이상 차이가 나는 정도.

더 Standard한 메시지 형식을 사용하고 싶기 때문에, 이를 반영하여 앞으로 위와 같은 형식을 사용하도록 할 것이다.

Unity3D - Skybox 만들기

Material 생성

  • Project에서 Material로 생성

Material의 Inspector에서 Shader 설정 및 파라미터 세팅

  • Inspector에서 Shader를 Skybox - Procedural(...etc)로 변경

Lightning 윈도우. 에디터 우측 아래 아이콘 또는 Ctrl+9로도 열 수 있다.

  • Window - Rendering - lighting 의 Environment 탭에서 Skybox Material에 위에서 만든 Skybox를 사용

특강: C# 메모리 관리

메모리 : 프로그램/어플리케이션이 실행하는 데 필요한 데이터를 저장

메모리는 아래와 같은 영역을 가진다.

  • Code : 프로그래머가 작성한 코드를 보관
  • Data : 어플리케이션 전반에 필요한 데이터 저장(static, const, 전역변수)
  • Heap : 참조 데이터(객체) 저장
  • Stack : 어플리케이션 실행 순서에 필요한 데이터 보관(로컬 변수, 매개 변수)

일반적인 변수는 Stack에 저장된다.(int, bool, struct, enum ...)
클래스 변수도 Stack에 저장된다. 다만 클래스 변수의 값은 '주소값'을 가진다.
클래스 내부에 초기화된 데이터들은 Heap에 저장된다. 클래스 변수 내부의 주소값은, 이 데이터들이 저장된 Heap의 위치를 가리킨다.

C#은 GC(Garbage Collection)라는 메모리 관리 기법으로 Heap에서 사용되지 않는 데이터들을 할당 해제하여 메모리의 공간을 확보한다.

가비지를 가능한 적게 하는 프로그래밍이 좋은 개발이다.

문자열을 계속 +=로 잇는 것은 해당 연산을 할 때마다 매번 새로운 공간을 할당받아 효율적이지 못하며 '문자열 파편화'라고 한다.
문자열 파편화를 방지하는 방법은 아래와 같다.

  • string을 한번에 제작(보간문자열, 스트링 포맷, +연산자)
  • StringBuilder 사용
    • 처음부터 큰 메모리 공간을 할당받아 문자열을 채워나가는 방식
    • 물론 이 공간을 넘어가는 경우에는 더 큰 공간을 다시 할당받는다.

만약 면접에서 구조체와 클래스의 차이를 물어보는 문제가 나온다면

  • 메모리 동작에 대한 잉해를 갖고 있는지를 물어보는 의도이다.
  • 구조체는 Stack에 데이터를 저장하는 '값형', 클래스는 Heap에 데이터를 저장하는 '레퍼런스형'이다.
  • 코드의 구조에 따라 어느 형태를 취하느냐에 따라 데이터 관리를 더 효율적으로 할 수 있다.

static 데이터는 Data 영역에 저장

  • 프로그램 시작 시 생성
  • 프로그램 종료 시 삭제

3. 과제에 대해

  • 이전 입문강의 및 이번 숙련강의 흡수
  • 개인과제 작성 및 제출
    • 내용 자체는 어렵지 않지만 디자인패턴을 활용하고 싶기 때문에 시간이 꽤 걸릴 것 같다
반응형
COMMENT