본문 바로가기
게임개발/가마수트라

Unity 게임 개발을 시작하는 완벽한 소개

by 아수랑 2025. 3. 1.
728x90

설치부터 인터페이스와 옵션에 익숙해지는 방법까지 Unity 게임 엔진을 시작하는 방법을 소개합니다.

관련 분야: 게임 기획
작성자: Mars Buttfield-Addison, Contributor, Computer Science Researcher

 

푸른 빛 속에서 Unity로 작업하는 사람의 실루엣. Unity 제공



Unity로 게임 개발의 세계에 발을 들여놓으면 마치 우주선의 조종간을 잡은 듯한 느낌을 받을 수 있습니다. 인터페이스는 각각 고유한 목적을 가진 버튼, 슬라이더, 패널로 가득 차 있습니다. 특히 게임 개발이 처음이라면 압도감을 느끼기 쉽습니다. 하지만 필수 사항을 익히고 나면 이 인터페이스는 어려운 공상 과학 소설 제어판에서 창의력을 발휘할 수 있는 강력한 캔버스로 변모할 것입니다.

반응형

Unity 설치

Unity는 직접 설치할 수도 있지만, 개발자가 Unity를 동시에 여러 개 다운로드하고 자동으로 업데이트할 수 있으며 사용자 단위의 소프트웨어 라이선스 및 환경설정을 관리하는 프로그램인 Unity Hub를 통해 하나 이상의 버전 설치를 관리하는 것이 더 일반적입니다. Unity Hub는 https://unity.com/download 에서 운영 체제(Windows, Mac 또는 Linux)에 적합한 다운로드를 선택하여 다운로드할 수 있습니다. Unity Hub가 설치되면 설치 페이지에서 “에디터 설치”를 선택하여 특정 Unity 에디터 버전을 설치할 수 있습니다. 설치할 버전에 대한 특별한 제약이 없는 경우(예: 특정 버전에서만 작동하는 프레임워크에 의존하는 경우) LTS(장기 지원, 유니티가 이 버전을 오랫동안 유지하기로 약속했음을 의미)가 있는 최신 버전을 선택하면 됩니다.

Unity를 사용해 본 적이 없는 경우 이메일 주소를 제공하고 서비스 약관에 동의하여 라이선스를 등록해야 할 수 있습니다. 이렇게 함으로써 귀하는 무료 버전의 Unity를 특정 목적(예: 매년 수십만 달러의 특정 수입을 올리는 등)으로 사용하지 않으며, 그러한 경우 유료 구독으로 전환할 것임에 동의하는 것입니다.

 

그림 1: 설치할 Unity 에디터 버전 선택.



첫 프로젝트 생성

첫 번째 프로젝트를 생성하려면 프로젝트 - “새 프로젝트”를 선택하고 시작할 템플릿을 선택하면 됩니다. 여기서 프로젝트가 열릴 때 기본적으로 설치할 프레임워크를 결정하는 템플릿을 사용할 수 있습니다. 대부분의 경우 “2D” 또는 “3D”만 선택해도 괜찮습니다. 프로젝트를 저장할 위치와 프로젝트 이름을 선택하지만 나중에 언제든지 변경할 수 있습니다.

 

그림 2: Unity에서 새 프로젝트 만들기.


사용자 인터페이스

Unity 에디터 인터페이스는 유연성이라는 개념을 중심으로 설계되었습니다. 모듈식으로 되어 있어 원하는 대로 레이아웃을 재정렬할 수 있습니다. 하지만 기본 레이아웃부터 시작하겠습니다. 이 인터페이스는 장면 보기, 계층 구조, 인스펙터, 프로젝트 및 게임 보기의 다섯 가지 주요 섹션으로 나뉩니다. 화면 중앙을 차지하는 씬 뷰는 대부분의 시간을 보내는 곳입니다. 3D 또는 2D 공간에서 게임 오브젝트를 조작하고 이동, 크기 조정 또는 회전하여 게임 월드를 만들 수 있습니다.

Unity의 게임은 여러 개의 씬(Scene)으로 구성되어 있기 때문에 '씬'이라는 개념도 매우 중요합니다. 씬은 프로젝트 폴더 내에 파일로 존재하며, 게임은 일반적으로 다양한 방식으로 여러 씬 간에 전환됩니다. 예를 들어 게임의 메뉴도 하나의 씬이 되지만 각 레벨도 씬이 될 수 있고 로딩 화면도 씬이 될 수 있습니다.

 

그림 3: Unity 에디터 인터페이스

 

그림 4: 씬 뷰


씬 뷰의 왼쪽에는 계층 구조(Hierarchy)가 있습니다. 이 패널은 현재 씬에 있는 모든 게임 오브젝트를 나타냅니다(씬 뷰에 시각적으로 표시됨). 각 오브젝트는 이 트리형 구조에서 자신의 위치를 차지하므로 수많은 오브젝트가 있는 복잡한 씬을 더 쉽게 관리할 수 있습니다. 계층 구조의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 씬에 추가할 게임 오브젝트를 선택하면 게임 씬에 게임 오브젝트를 추가할 수 있습니다.

그림 5: 계층 구조

 

그림 6: 현재 씬에 추가되는 새 게임 오브젝트 생성하기


오른쪽의 인스펙터(Inspector) 패널은 게임 오브젝트의 프로퍼티를 수정할 수 있는 곳입니다. 씬 또는 계층 구조에서 오브젝트를 선택하면 인스펙터에 편집 가능한 프로퍼티가 있는 해당 컴포넌트가 표시됩니다. 여기에서 스크립트나 피직스 어트리뷰트 같은 새 컴포넌트를 추가할 수 있습니다. 인스펙터 패널 아래의 프로젝트 뷰는 게임의 파일 탐색기 역할을 합니다. 여기에는 프로젝트에서 사용할 수 있는 스크립트, 모델, 텍스처, 오디오 파일 등 모든 에셋이 호스팅됩니다. 여기에 저장한 씬 파일도 찾을 수 있습니다.

마지막으로 게임 뷰 탭이 있습니다. 이 탭을 클릭하면 플레이를 누르면 게임이 어떻게 보일지 미리 볼 수 있습니다. 움직이는 컴포넌트와 로직이 추가되기 전까지는 씬 뷰와 비슷하게 보이지만 플레이어의 관점에서 게임을 테스트하고 개선하는 데 유용한 툴입니다.

 

그림 7: 인스펙터(메인 카메라 선택 시)

 

그림 8: 프로젝트 뷰

 


이러한 각 컴포넌트는 Unity를 사용한 게임 개발에서 중요한 역할을 합니다. 처음에는 어렵게 느껴질 수 있지만, 각 버튼의 기능을 외우는 것보다 이러한 핵심 컴포넌트의 역할과 이들이 어떻게 결합되어 게임을 제작하는 데 도움이 되는지 이해하는 것이 더 중요하다는 점을 기억하세요.

Unity에서 제작을 시작하면 인터페이스에 대한 이해가 자연스럽게 쌓이기 시작할 것입니다. 실험하고 탐구하며 실수를 두려워하지 마세요. 아무리 경험이 많은 개발자라도 Unity를 사용하는 과정에서 새로운 요령과 방법을 계속 발견하게 됩니다. 심호흡을 하고 초기의 절망감을 떨쳐내고 학습 과정을 받아들이세요. Unity 인터페이스는 게임 개발의 놀이터입니다. 이제 플레이할 시간입니다!

이제 Unity에서 게임 조각을 조립하여 게임을 만드는 방법을 살펴보겠습니다.

 

그림 9: 게임 뷰


Unity 구성

Unity에서 씬과 그 안에 있는 게임 오브젝트는 게임의 핵심 구성 요소입니다. 게임 오브젝트는 캐릭터와 아이템부터 조명, 카메라, 보이지 않는 컨테이너까지 모든 것을 나타낼 수 있습니다.

씬이 그 안에 게임 오브젝트의 계층 구조를 만들 수 있는 빈 그릇인 것처럼 게임 오브젝트 자체도 빈 그릇이며, 게임 오브젝트에 생명력과 기능을 부여하는 것은 이러한 게임 오브젝트에 연결된 컴포넌트입니다.

게임 오브젝트는 항상 계층 구조에 나타나며, 종종 씬 뷰에 “물리적으로” 존재합니다. 각 게임 오브젝트는 여러 개의 컴포넌트를 가질 수 있으며, 각 컴포넌트는 동작 또는 외관의 고유한 측면을 정의합니다. 컴포넌트는 게임 오브젝트를 선택하고 인스펙터를 보면 찾을 수 있습니다. 예를 들어 여기 씬 뷰와 계층구조에 표시된 것처럼 씬에 3D 큐브를 생성했다면 이미 많은 컴포넌트가 있을 것입니다. 이러한 컴포넌트가 큐브를 만들어냅니다.

계층 구조에서 큐브를 선택하면 인스펙터에서 해당 컴포넌트를 볼 수 있습니다.

 

그림 10: 새롭고 특별한 3D 큐브 게임 오브젝트



이 작은 큐브에는 다음과 같은 컴포넌트가 있음을 알 수 있습니다:

- 3D 공간에서 위치를 지정하는 트랜스폼;

- 게임 오브젝트가 사용할 3D 메시를 제공하는 메시 필터(이 경우 큐브);

- 렌더링 중인 메시의 렌더링 속성을 설명하는 메시 렌더러.

- 물리(물리) 시뮬레이션에서 이 게임 오브젝트와 상호작용할 수 있는 다른 오브젝트의 관계를 정의하는 박스 콜라이더.

- 머티리얼 - 게임 월드에서 메시가 어떻게 보이는지 정의합니다.

조금 더 나아가 3D 비디오 게임에서 가상의 플레이어 캐릭터를 생각해 볼 수 있습니다. 그 핵심은 게임 오브젝트가 될 것입니다. 하지만 플레이어 캐릭터를 플레이어 캐릭터로 만드는 것은 게임 오브젝트에 연결된 컴포넌트입니다.

예를 들어 3D 플레이어 캐릭터로 사용되는 게임 오브젝트에는 다음과 같은 컴포넌트가 첨부될 수 있습니다:

- 트랜스폼: 모든 게임 오브젝트가 기본적으로 가지고 있는 유일한 컴포넌트입니다. 게임 월드에서 오브젝트의 위치, 회전, 스케일을 저장합니다.

-메시 필터 및 메시 렌더러: 게임 오브젝트를 표시합니다. 3D 모델(메시라고 함)과 머티리얼을 사용하여 오브젝트의 모양을 정의합니다.

- 캐릭터 컨트롤러: 캐릭터 컨트롤러: 캐릭터 컨트롤러는 물리적 공간 내에서 캐릭터의 움직임을

캐릭터 컨트롤러는 물리적 시뮬레이션 내에서 캐릭터의 움직임을 수동으로 제어해야 할 때 사용됩니다.

- 애니메이터: 캐릭터의 애니메이션을 제어하여 캐릭터가 걷거나 점프하거나 동작을 수행할 때 애니메이션을 적용할 수 있습니다.

- 스크립트: 캐릭터의 고유 동작을 정의하는 스크립트로, 플레이어 입력에 반응하여 움직이거나 게임 월드와 상호작용하는 등 캐릭터의 고유 동작을 정의하기 위해 C#(Unity의 기본 스크립팅 언어)으로 작성합니다. 인스펙터 하단의 '컴포넌트 추가' 버튼을 사용하여 게임 오브젝트에 컴포넌트를 추가할 수 있습니다.

 

그림 11: 3D 큐브 게임 오브젝트의 컴포넌트 및 관련 속성



게임 오브젝트의 계층 구조 (Hierarchies of GameObjects)

게임 오브젝트 계층 구조는 Unity의 또 다른 중요한 개념입니다. 게임 오브젝트가 다른 게임 오브젝트의 부모 또는 자식이 되어 트리와 같은 구조를 만들 수 있는 곳입니다.

예를 들어 플레이어 캐릭터가 검을 들고 있다고 가정해 보겠습니다. 이 검은 트랜스폼과 메시 렌더러와 같은 자체 컴포넌트가 있는 별도의 게임 오브젝트가 될 것입니다. 하지만 검이 플레이어와 함께 움직이고 회전하기를 원할 것입니다. 이를 위해 검 게임 오브젝트를 플레이어 게임 오브젝트의 자손으로 만들면 됩니다. 이제 플레이어 게임 오브젝트가 움직이거나 회전할 때마다 검 게임 오브젝트도 따라 움직입니다.

 

그림 12: 인스펙터에서 게임 오브젝트에 컴포넌트 추가하기

 

그림 13: 플레이어 게임 오브젝트의 자식 오브젝트인 소드 게임 오브젝트

 


더 복잡한 캐릭터의 경우 계층 구조가 여러 개 있을 수 있습니다. 플레이어 캐릭터에는 몸통, 머리, 팔, 다리에 대한 게임 오브젝트와 손가락이나 얼굴 특징과 같은 측면에 대한 추가 게임 오브젝트가 각각 있을 수 있습니다. 이러한 각 게임 오브젝트에는 모양과 동작을 정의하는 자체 컴포넌트가 있을 수 있습니다. 따라서 Unity에서는 게임 오브젝트와 해당 컴포넌트가 함께 작동하여 게임에서 복잡한 인터랙티브 요소를 만듭니다. 이러한 구조와 계층 구조를 이해하면 풍부한 인터랙티브 게임 월드를 구축할 수 있습니다.

728x90


스크립팅의 활용 분야

이쯤 되면 스크립팅과 스크립트가 이 모든 것의 어디에 해당하는지 궁금하실 것입니다. 사실 스크립트와 스크립트는 게임 오브젝트에 컴포넌트로 첨부됩니다. 컴포넌트 추가 버튼을 사용하여 새 스크립트를 추가하는 단순한 큐브에 돌아가면 어떻게 작동하는지 알 수 있습니다.

이 스크립트에서는 큐브가 시간이 지남에 따라 천천히 회전하도록 만들겠습니다. 이를 위해 “Rotate”라는 스크립트를 만들어 보겠습니다. 스크립트가 추가되면 인스펙터에서 컴포넌트로 표시됩니다.

스크립트를 클릭하면 프로젝트 패널에서도 찾을 수 있는데, 이는 영구적인 위치의 디스크에 저장되는 에셋이기 때문입니다. 이 저장된 버전은 C# 파일이므로 시스템의 파일 탐색기에서 찾으면 파일 확장자가 “.cs”입니다. 해당 에셋을 더블클릭하면 원하는 소스 코드 에디터에서 편집할 수 있습니다. 기본적으로 Unity는 Visual Studio를 설치하여 사용하지만, 많은 사용자가 Visual Studio Code 등의 대체 프로그램을 선호합니다. 이는 Unity의 환경설정에서 쉽게 변경할 수 있습니다.

스크립트 내부에 다음 코드를 넣었습니다. 여기서는 Unity 프로그래밍의 세세한 부분을 알려드리는 것이 아니라 각 부분이 무엇을 하는지 단계별로 살펴보겠습니다.

 

그림 14: 회전 컴포넌트는 큐브를 선택했을 때 인스펙터에 표시됩니다.

 

그림 15: 프로젝트 창에 표시되는 회전 스크립트.



// UnityEngine 네임스페이스를 임포트하여 UnityEngine을 사용하여 C#의 유니티 전용 비트에 액세스합니다;

// Unity 베이스 클래스 MonoBehaviour에서 상속하는 Rotate라는 클래스를 정의합니다.

- (클래스 이름은 Unity 스크립트의 파일 이름과 일치해야 함) public class Rotate : MonoBehaviour

{

// 회전 속도를 지시할 부동 소수점(십진수) 숫자를 선언합니다 // (분수 부분이 없더라도 “f”를 추가하면 십진수입니다).

// 이것을 “public”으로 설정하면 에디터의 인스펙터에 표시됩니다.

public float rotationSpeed = 10f;

// Update() 함수는 매 프레임마다 호출되는 내장 함수입니다.

// 상태 변경을 확인하거나 진행 중인 변경을 시행하는 데 사용됩니다.

void Update()

{

// 여기서는 앞서 살펴본 트랜스폼에 접근하여 // 매 프레임마다 오브젝트를 조금씩 회전시킵니다.

// 트랜스폼에 액세스하여 매 프레임마다 조금씩 회전합니다,

// 오브젝트의 위치와 회전을 정의합니다.

transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime);

}

}

이 스크립트를 겸손한 큐브에 붙여 실행하면 큐브가 천천히 회전하며, 에디터에서 변수를 변경하여 더 빠르게 또는 더 느리게 회전하도록 만들 수 있습니다.


결론

Unity로 게임을 빌드할 때는 씬 뷰에서 게임 월드를 이동하고, 게임 오브젝트 계층구조를 정렬하고, 인스펙터에서 각 게임 오브젝트에 연결된 컴포넌트를 조작(및 새 컴포넌트 추가)하고, 프로젝트 뷰에서 파일 기반 에셋(예: 이미지 텍스처 및 사운드 에셋)을 사용하는 등 방금 설명한 모든 다양한 뷰와 영역을 넘나들게 될 것입니다. Unity의 스크립트는 또 다른 컴포넌트에 불과합니다. 게임 오브젝트에는 필요한 만큼의 스크립트를 첨부할 수 있으며, 필요에 따라 에디터에 변수를 노출할 수 있습니다. 그런 다음 게임을 실행하고 게임의 플레이어 경험을 제공하는 게임 뷰로 전환한 다음 거기서부터 진행하면 됩니다. 그리고 조금씩 멋진 게임을 만들 수 있습니다!

 

그림 16: 회전 속도에 다양한 값을 설정한 간단한 회전 큐브.



필요에 맞는 최고의 게임 개발 소프트웨어를 찾으려면 유니티의 다른 튜토리얼 리소스와 목록을 확인해 보세요.


* 원문:

 

The complete introduction to Unity game development

Here's how to get started with the Unity game engine, from installation to familiarizing yourself with the interface and options.

www.gamedeveloper.com

 

댓글