Hyun's Wonderwall

유니티 공부 - (1) 유니티 준비, 인터페이스 둘러보기 본문

Study/Unity, C#

유니티 공부 - (1) 유니티 준비, 인터페이스 둘러보기

Hyun_! 2023. 12. 28. 17:43

레트로의 유니티 게임 프로그래밍 에센스 - 1장, 2장 공부 내용 정리

동아리 프로젝트에 프로그래머로 참여하게 되었다. 유니티 공부 시작!


1장. 유니티 준비하기

유니티 엔진 : 2D와 3D 그래픽을 지원하는 다목적 게임 엔진. 멀티플랫폼을 지원.

유니티는 코드를 작성하기 전에 미리 만들어진 부품을 조립해 게임 오브젝트를 만들고,

코드는 미리 만들어진 부품을 제어하기 위해 작성한다.

책에서 사용한 유니티 버전은 2021.2, 내가 사용한 버전은 2021.3.15이다.(동아리에서 사용하는 버전)

유니티 허브와 유니티 에디터 설치를 완료하고 프로젝트를 생성했다.

 

# 프로젝트 생성, 유니티 기본 용어 설명

Scene : 하나의 게임 월드. (2D의 경우 캔버스)

Hierarchy 창 : 현재 씬에 존재하는 모든 게임 오브젝트가 표시된다.

 - 기본 프로젝트를 열면 Main Camera 게임 오브젝트와 Directional Light 게임 오브젝트를 확인할 수 있다.

    Main Camera : 플레이어가 보게 될 게임 화면을 그린다.

    Directional Light : 씬에 빛을 만든다.

 - Hierarchy 창 좌측 상단의 + 버튼을 누르면 새로운 게임 오브젝트를 생성할 수 있다.

  + > 3D object > Cube를 선택해 큐브를 생성했다.

 

Scene 창 : 현재 씬의 게임 오브젝트를 시각적으로 편집하는 창이다. 좌측 메뉴에서 옮기기, 회전, 확대 축소 등이 가능.

 - 유니티 에디터 상단 중앙에는 '씬 컨트롤 버튼'이 있다.
   플레이 버튼을 클릭하면 씬이 시작되고, 씬 창에서 게임 창으로 전환된다.(플레이 모드가 된다)

Main Camera의 시점에서 Cube를 보고 있다.

플레이 버튼을 다시 클릭하면 플레이 모드가 해제된다.

 

# 프로젝트에 '바닥'을 만들자

 - Hierarchy에서 + > 3D Object > Plane 으로 흰 평면을 추가했다.

Hierarchy에서 Cube를 클릭하니 오른쪽에 Inspector 창이 보인다. Inspector 창에는 Cube의 정보가 표시된다.

Inspector 창 : 선택한 게임 오브젝트의 정보와 컴포넌트가 나열되는 곳.

컴포넌트: 게임 오브젝트에 조립될 수 있는 다양한 부품들. 오브젝트에 컴포넌트를 조립하면 컴포넌트가 제공하는 능력을 가지게 된다.

 - Transform 컴포넌트 : 3D 공간에서의 위치를 결정한다. Position 값을 수정하면 오브젝트 위치를 옮길 수 있다.

 - Rigidbody 컴포넌트 : 오브젝트가 물리와 중력의 영향을 받게 한다.


# Cube를 자유낙하 시켜보자

Transform 컴포넌트에서 Position Y를 3으로 변경하고,

Inspector 창 하단에서 Add Component를 클릭해 Rigidbody 컴포넌트를 추가했다.

컴포넌트 순서 변경은 점 세 개 누르고 Move Up/Down을 클릭

플레이하니 Cube가 낙하했다.

 

# 씬 저장 방법, Project 창

씬에 *표가 있다는 것은 변경사항이 있다는 의미이다. (윈도우) Ctrl+S로 저장하자. (플레이 모드에서는 저장 불가)

Project : 프로젝트에서 사용할 에셋(파일)의 목록을 확인할 수 있다.


2장. 유니티 인터페이스 둘러보기

*책에서 제공하는 예제 파일을 다운받지 않고 진행함.

레이아웃 : 유니티 창들이 배치되어 있는 모습. 기본은 Default.

이 책에서는 변형된 2 by 3 레이아웃을 사용 - 2 by 3을 바탕으로 Project 창과 Console 창을 드래그&드롭함.

[ 각 창 기능 다시 정리 ]

  • Scene 창 : 게임 월드인 Scene을 시각적으로 편집하는 창. 씬 창에서 오브젝트를 편집할 때는 씬 편집 툴을 사용한다.

  • Game 창 : 플레이어가 실제로 보게 될 화면을 띄우는 창. (참고: Camera)
    - Free Aspect 버튼을 누르면 화면 비율이나 해상도를 선택할 수 있다.
    - 게임 창은 완성될 게임의 미리보기, 실제 실행 화면에는 영향 x

  • Hierarchy 창 : 현재 씬에 존재하는 모든 게임 오브젝트가 나열되는 창.
    - 여러 게임 오브젝트를 자식으로 가지고 있는 오브젝트는 이름 옆에 ▶(토글 버튼)이 있다.
    - 프리팹에서 생성된 오브젝트는 파란색 큐브 아이콘이 할당되어 있다.  (7장 내용)
    - 씬의 게임 오브젝트 목록은 닫거나 펼칠 수 있다. (▼ <-> ▶)
    - 오브젝트 검색하기 :
    (1) 검색 바(서치 바)에서 현재 로드된 씬의 게임 오브젝트와 컴포넌트 검색
    (2) 검색 창 열기 버튼을 눌러 개별 검색 창에서 검색하면 프로젝트 에셋과 씬 오브젝트 상세히 검색 가능

  • Inspector 창 : 현재 선택한 게임 오브젝트의 정보가 표시되는 창. 현재 선택한 게임 오브젝트의 태그, 이름, 추가된 컴포넌트가 모두 표시된다. 이곳에서 게임 오브젝트와 컴포넌트의 여러 필드를 직접 편집할 수 있다.
    + Cube 오브젝트에 추가되어 있는 컴포넌트 보기 :
    - Transform : 오브젝트의 3차원 좌표와 크기, 회전을 지정한다.
    - Mesh Filter : 3D mesh 파일을 받아 오브젝트의 외곽선을 지정한다.
    - Mesh Renderer : mesh를 따라 색을 채워 그래픽 외형을 그린다.
    - Box Collider : 다른 물체가 부딪칠 수 있는 물리적인 표면을 만든다.

  • Project 창 : 프로젝트에 사용할 모든 에셋들이 표시되는 창.
    - Asset(에셋) : 개발에 사용할 모든 형태의 파일을 의미한다. 이미지, 음악, 비디오, 3D모델, 애니메이션 파일, 스크립트 등의 파일로 존재한다. 씬 파일도 에셋이다. 프로젝트 상에 표시되는 모두가 에셋이며 Assets 폴더 안에 저장하게 된다.
    - 외부 파일을 파일 탐색기 등에서 드래그&드롭해 프로젝트에 추가할 수 있다.
    - 에셋들을 아이콘 뷰 또는 리스트 뷰로 볼 수 있다.
    - Packages 폴더는 패키지 매니저에 의해 자동으로 관리되는 폴더로, 직접 수정할 일은 없다.

리스트 뷰로 보는 법: 프로젝트 창의 우측 하단 줌 슬라이드를 왼쪽으로 끝까지 밀기

 

  • Console 창 : 유니티가 기록(로그)를 남겨 개발자에게 정보를 전달하는 곳이다. 
    - 콘솔 창에서 볼 수 있는 세 종류의 로그:
    (1) 일반 로그💬 - 단순 기록 텍스트
    (2) 경고 로그⚠️ - 권장할 만한 수정 사항이 존재할 때 표시됨 (개선, 주의 등)
    (3) 에러 로그🛑 - 잘못된 문법이나 접근 등으로 명령을 실행할 수 없는 문제 발생
    - 로그 출력 설정 제어 버튼 '▼' : Clear, Clear on Play, Clear on Build, Clear on Recompile 설정 변경 가능
    - Collapse : 같은 내용의 로그끼리 보기 쉽게 묵음
    - Error Pause : 플레이 도중 에러 발생 시 씬을 일시 정지함
    - Editor : 유니티 에디터 외부 기기로부터 원격 로그를 받을 수 있음
    - 맨 오른쪽 필터 아이콘 : 원하는 종류의 로그만 보이게

# 씬 편집 툴

- Scene 창의 툴 박스(씬 창 안에 배치되는 세로로 긴 것), 툴바(상단 메뉴)

 

#2.4 씬 탐색하기

씬 카메라 : 씬 창에 화면을 띄우는 가상 카메라

카메라로 포커스 주기, 줌인/줌아웃, 씬 카메라 이동 등 실습

 

#2.5 게임 오브젝트 편집하기

씬 편집 툴을 사용

# 2.6 씬 기즈모

현재 씬을 바라보는 방향을 알기 쉽게 표시라고 씬 카메라를 지정한 방향으로 빠르게 전환시키는 나침반

# 2.7 씬 플레이 버튼

  • 플레이 버튼 : 현재 씬을 시작(플레이)하거나 종료한다.
  • 일시정지 버튼 : 현재 플레이중인 씬을 일시정지시킨다.
  • 스텝 버튼 : 게임 시간을 한 프레임만큼 진행한다.

#2.8 유니티 클라우드 버튼

유니티 서비스