본문 바로가기

유니티 ML Agents/유니티 기초

1. 유니티 설치 및 기본개념

 유니티 다운로드


유니티는 https://unity3d.com/kr/get-unity/download 에서 쉽게 다운로드 받을 수 있다. Unity 선택 및 다운로드와 Unity 허브 다운로드가 있는데 Unity 허브란 다양한 버전의 Unity를 데스크탑에서 관리하기 쉽게 지원해주는 툴이다. 전문적인 유니티 개발자라면 유니티 허브를 사용하는 것이 좋겠지만 이 책에서는 유니티를 이용한 머신러닝에 관심이 있기 때문에 상대적으로 단순한 오프라인 설치 모델을 사용하기로 한다.


유니티 다운로드


다음 화면에서 Plus, Pro, Personal 버전 세 개 중 하나를 선택할 수 있는데 테스트를 위해 무료로 제공되는 Personal 버전을 선택한다.  그리고 Windows용 설치 프로그램 다운로드를 클릭하면 설치 파일 다운로드가 시작된다. 다운로드가 완료되면 UnityDownloadAssistant-2018.x.xxxx.exe 파일을 확인할 수 있는데 더블 클릭하면 프로그램을 쉽게 설치할 수 있다.

 


 유니티 설치 및 실행


유니티 설치


다운로드 받은 유니티 설치 파일을 클릭하면 안내 화면이 나온다. 이후 대부분 화면에서 다음을 클릭하면 된다. 컴포넌트(Component) 선택화면에서는 내가 필요한 컴포넌트를 고를 수 있다. 유니티는 PC 뿐만 아니라 안드로이드, iOS, Linux, MAC 등 다양한 운영체제를 지원한다. 멀티 플랫폼에서 동작하는 게임을 만들고 싶다면 관련 컴포넌트를 설치해야 하겠지만 유니티 ML 에이전트 학습을 위해 2개의 컴포넌트만 설치하도록 하자.


유니티 실행


유니티를 처음 실행하면 로그인 화면이 나온다. (1) 계정이 없는 경우 create one 링크를 클릭해서 새로운 계정을 만들 수 있다. (2) 계정을 미리 생성한 경우라면 자신의 이메일로 로그인 할 수 있다. (3) 별도의 계정을 만들지 않고 구글이나 페이스북 계정을 활용할 수 있는 방법도 제공하고 있다.


유니티 프로젝트 만들기


유니티 아이디로 로그인하면 프로젝트 생성 화면이 나온다. 기존에 생성한 프로젝트가 있다면 화면 중간에 프로젝트 목록을 볼 수 있다. (1) 본인 PC에 프로젝트를 만들고자 한다면 On Disk를 선택하고 (2) New Project 버튼을 클릭하면 프로젝트 생성이 시작된다.


유니티 프로젝트 정보 입력


프로젝트 생성화면에서 (1) 프로젝트를 식별할 수 있는 프로젝트 이름을 입력한다. (2) 프로젝트 관련 파일이 저장될 위치를 지정하고 (3) 생성하고자하는 프로젝트가 2D인지 아니면 3D인지 선택한다.


유니티 인터페이스 설명


유니티 인터페이스 설명


유니티를 처음 실행하면 다소 낯선 화면과 마주하게 된다. 하지만 몇 가지 기초적인 정보만 알려 사용이 아주 간편한 UI로 구성되어있다.

(1) 조작 도구는 씬 뷰에 만든 오브젝트를 이동하거나 회전하고 크기를 변경할 수 있다.

(2) 실행 도구는 게임을 실행하고 잠깐 멈추거나 정지할 수 있다.

(3) 계층 뷰는 씬 뷰에 만들어 놓은 오브젝트 목록을 볼 수 있다. 계층 뷰에서는 오브젝트를 선택할 수 있고. 오브젝트를 이동해서 다른 오브젝트의 자식(Child)으로 만들 수 있다. 자식의 부모의 자산을 상속 받을 수 있는데 유니티에서는 자식에게 이동과 회전 속성을 물려 준다.

(4) 게임을 만들 때 프로그래머는 게임에 필요한 모든 요소를 씬 뷰에 배치한다. 씬 뷰에는 프로그래머가 만든 오브젝트 외에 카메라, 조명과 같은 게임에 필요한 디폴트 오브젝트가 들어있다. 씬 뷰에 있는 오브젝트를 조작하고 조정하는 것은 유니티 프로그램의 핵심 요소이다. 게임 뷰에는 만들어진 프로그램이 카메라에 의해 표현되는 최종적인 모습이 보여진다. 유니티에서는 사용자에게 보여지는 화면을 제어하기 위해 카메라를 사용하는데 카메라가 바라보는 게임의 최종 모습이 바로 게임 뷰에 나타나게 된다. 실행 도구에서 실행 버튼을 누르면 씬 뷰에서 게임 뷰로 이동하고 게임일 실행되는 모습을 볼 수 있다. 계층 뷰나

(5) 씬 뷰에서 선택된 오브젝트의 속성은 인스펙터 뷰에 표시된다. 오브젝트에 따라 다른 종류의 속성을 가지고 있기 때문에 인스펙터 뷰에 보여지는 레이아웃 또한 다양하다.  인스펙터 뷰에서는 오브젝트의 위치, 외형, 중력, 사용자 정의 스크립트 등 오브젝트의 특성을 나타내는 다양한 속성을 설정하고 변경할 수 있다.

(6) 프로젝트 뷰는 프로젝트에 속해있는 모든 에셋들을 계층 구조로 보여준다. 좌측 계층구조에는 폴더 목록이 나오고 폴더를 클릭하면 우측 화면에 에셋 목록이 표시된다. 에셋을 클릭하면 인스펙터 뷰에 관련 정보가 표시된다. 좌측 상단에 있는 Favorites에는 자주 사용되는 에셋을 모아 놓을 수 있는데 아래 Assets 항목에서 드래그 앤 드랍으로 쉽게 설정할 수 있다. 콘솔 뷰는 유니티에서 생성되는 오류, 경고 등 다양한 메시지를 출력해 준다. 프로그래머는 Debug.Log, Debug.LogWarning Debug.LogError 함수를 사용하여 원하는 메시지를 콘솔에 표시할 수 있다. 콘솔 뷰에 스크립트 관련 오류 메시지가 나온다면 링크를 클릭해서 스크립트를 에디터 창에서 바로 열어볼 수 도 있다.


유니티 기본 개념


유니티 기본 개념


유니티에서 우리가 게임에서 보는 캐릭터를 지칭하는 용어는 게임 오브젝트이다. 줄여서 객체라고 한다. 게임 오브젝트의 모양, 재질, 물리적 특성, 동작을 정의하는 것이 바로 컴포넌트이다. 즉 게임 오브젝트는 컴포넌트로 이루어져 있다. 컴포넌트 중에서 게임 오브젝트의 동작을 정의하는 것이 스크립트이다. 유니티에서는 자바스크립트와 C# 두 가지 형태의 개발언어를 지원하지만 대부분의 게임이 C# 기반으로 개발된다. 유니티에서 프로그래머가 원하는 방식으로 게임 오브젝트를 동작하게 만들려면 스크립트에 원하는 코드를 정의하면 된다. 게임 오브젝트의 크기, 모양, 물리적 특성(중력, 무게, 마찰력 등)을 바꾸고자 한다면 인스펙터 뷰에서 나오는 게임 오브젝트를 구성하는 컴포넌트를 변경하면 된다.

게임에서 가장 많이 이루어지는 것은 게임 오브젝트 간의 상호작용이다. 플레이어가 몹을 사냥하거나 다른 플레어어와 전투를 하거나 이 모든 것이 게임 오브젝트 간의 상호작용의 일종이다. 유니티에서는 이러한 상호작용을 이벤트 기반으로 처리하고 있다. 플레이어가 몹을 치면 충돌 이벤트가 발생해서 몹 객체 안에 코딩된 스크립트에서 다음 동작을 결정한다.