cyphen156

Unity 5 책으로 공부하는 Unity 6 본문

프로젝트/유니티

Unity 5 책으로 공부하는 Unity 6

cyphen156 2024. 9. 6. 00:04

대학교 재학중 3학년 수업으로 시스템 프로그래밍 대신 게임프로그래밍이라는 과목을 배웠었다, 

 

남들 다 재미없다하던 유니티 수업 나는 재미있다고 느꼇고, 예제 뒷부분에 존재하는 정답 코드를 보는 대신에 항상 내 맘대로 구글링 해가면서 스크립트를 작성하여 이벤트가 발생되도록 구현해보았었다. 

취직하는데 도움이 될까? 는 싶은데 언리얼 엔진 본격적으로 공부하기 전에 좀 더 범용적이고 쉽게 만들 수 있는 유니티 엔진을 사용하여 게임 프로젝트를 한번 만들어 볼까 한다. 

그때는 어려웠던 UI제작, 이제는 Cinema 4D 때의 경험을 살려 좀 더 쉽게 이해할 수 있을 것 같다는 생각이 든다. 

한가지 고민이었던것은 Unity 6가 출시되었다는것이다. 근데 유니티도 언리얼 엔진이  4->5로의 버전 업처럼 프로젝트 자체의 마이그레이션이 지원되지 않을까? 싶어서 6로 진행해 보겠다. 

그리고 추가로 진행하고 싶은건 작년 하반기에 유행했던 Lethal Company라는 게임의 모딩이다. 

해당 게임도 유니티로 작성되었고, 모딩하기 위해선 BepinEx라는 모딩 툴에 대해서도 이해해야 한다. 

친구와 게임을 하면서 겪었던 input System 에러 코드나, nullCharacterException과 같은 에러 로그를 보면서 저거 분명 키입력 트리거 오타난거 아닌가?라는 생각을 하였고, HD가 지원되지 않는 게임에서 모딩을 통해 강제로 FHD, QHD등의 업스케일링을 제공받을 때 발생했던 UI Crash들을 고려하면서 프로젝트를 진행해보겠다. 

만약 마이그레이션이 진행되지 않을 경우 Unity 5 엔진 환경에서 프로젝트를 진행하겠다.

Unity5에서 6로의 변화

우선 Unity 측에서는 Unity 6를 출시 하면서 다음과 같은 변화가 있다고 메인 홈페이지에 소개하고 있다.

더욱 빨라진 렌더링, 강력한 조명 옵션, 엔드투엔드 멀티플레이어 워크플로, 동적 AI 기능, 모바일 웹 런타임에 대한 심층적 지원 등을 모두 살펴보세요. 바로 다운로드할 수 있으며, Unity Pro로 콘솔 빌드도 지원됩니다.

소개만 보면 렌더링 파이프라인에 변화가 있었던것 같고, 언리얼 엔진 5에서 제공하게 된 루멘(Lighting) 시스템과 같은 레이트 트레이싱 시스템의 발전, 단대단 네트워킹 최적화, 생성형 AI를 통한 인게임내 인공지능 향상, WebGL 심층 지원 등이 포함된 것 같다.

더욱 무거워진 언리얼 엔진과는 반대로 여러 모로 경량화된 시스템에 더욱 최적화 된 IDE라고 생각된다. 

 

유니티 허브를 깔고, 사용할 엔진 버전을 선택한 뒤, 라이센스를 취득하고 나면 프로젝트를 생성할 수 있다.

프로젝트 생성은 3D (Built in Render Pipeline) Core템플릿을 사용하여 생성한다.

생성된 프로젝트 명은 firstUnityProject이다.

프로젝트를 생성하고 나면 초기 빌드하는데 시간이 좀 걸리니 느긋하게 커피나 한잔 마시고 오면 된다.

유니티에는 여러가지 용어들이 있다. 

스테이지 또는 레벨디자인으로도 불리우는 씬(Scene) 보통 게임을 할때 로딩이 걸리지 않는가? 

맵을 이동하거나, 다른 던전에 들어갈 때 로딩이 걸리는 경우 이 씬이 변화하는 것이라고 생각하면 된다. 

보통 게임은 한번에 한개의 씬을 전체적으로 메모리에 불러오고, 해당 씬 내에서 플레이어 캐릭터가 보고있는 장면만을 잘라내어 렌더링 하여 사용자에게 보여주게 된다.

그리고 이런 씬 안에서 렌더링 될 여러가지 객체/오브젝트 들을 액터 내지는 게임오브젝트라고 부르고, 이 게임오브젝트들에 달려있는 여러 구성요소들을 컴포넌트(Component)라고 부른다. 다시말하자면 Actor - Component라는 디자인 패턴으로도 볼 수 있다. 

로딩이 끝마치게 되면 다음과 같은 화면이 구성된다.

  • hirerarchy : 씬 내에 존재하는 액터들리스트와 액터들에 대한 계층 구조를 보여주는 창
  • Scene : 로딩된 씬을 시각화 하여 개발자가 편하게 개발할 수 있도록 보여주는 씬 뷰
  • inspector : hirerarchy창 또는 Scene 창에서 선택된 액터와 연관된 컴포넌트, 여러가지 속성들을 보여주는 상세 창
  • Project Explorer : 프로젝트에 사용될 파일들을 담고있는 창, Assets과 Prefeb, C#스크립트 등을 제작하여 관리 할 수 있다.
  • Assets : 프로젝트에 설치된 개별 모듈

Scene 창 내의 요소

기즈모 : 화면을 바라보는 관점 X, Y, Z 축의 관점에서 확인하거나 자유 시점에서 화면을 탐색할 수 있다. 

유니티 Scene Gizzmo조작 예시 - YouTube

 

특정 포인트를 기준으로 카메라가 돌면서 화면 회전하기 (ALT + 좌클릭)

 

카메라의 촬영각 회전하기 (우클릭)

 

화면 확대, 축소하기(ALT + 우클릭 Or 마우스 휠)

 

조금 부연설명을 하자면 다음과 같다 일반 우클릭은 카메라가 회전한다. 카메라가 포인트가 되는것이다.

반면 alt + 좌클릭은 다음과 같이 카메라가 이동한다.

유용한 단축키들

Q : 화면을 마우스 포인터를 기준으로 잡고 이동시키는 패닝 동작을 수행, 마우스 휠 누르기, 스페이스바 버튼으로도 동작한다.

유니티 기본 조작 Q 핸들 버튼 (youtube.com)

 

다른 방법으로는 마우스 우클릭을 한 상태로 WASD키를 조작하여 화면을 네비게이션 하는 방법이 있다. 게임하듯이 부드럽게 화면이 움직인다.

 

W : 객체를 움직일 수 있는 동작을 수행

유니티 오브젝트 기본 조작 W (youtube.com)

 

E : 객체 회전 동작을 수행

유니티 오브젝트 기본조작 E (youtube.com)

 

R : 객체의 스케일을 조정하는 기능을 수행

유니티 오브젝트 기본조작 R (youtube.com)

 

T : 기즈모 상태가 2D일 때 비로소 제대로 사용할 수 있는 단축키, 2D게임 또는 GUI를 위한 조절자가  나타난다.

유니티 기본 조작 T(3D) (youtube.com)

유니티 기본조작 T(2D) (youtube.com)

 

Y : 객체를 제어하는 W, E, R 단축키가 모두 활성화 된 상태

유니티 오브젝트 기본 조작 Y (youtube.com)

 

그리고 만든 씬을 게임하듯이 재생시키고 싶다면 프로젝트 창 위쪽 가운데에 존재하는 버튼을 통해 제어하거나 ctrl + p 버튼을 통해 재생/정지 할 수 있다.  일시정지는 플레이중 ctrl + shift + p를 입력하면 된다.

더 자세한 단축키는 다음 글을 확인하면 좋을것 같다.

[ 단축키 ] 유니티 단축키 모음 : 네이버 블로그 (naver.com)

 

[ 단축키 ] 유니티 단축키 모음

  [ 단축키 ] 유니티 단축키 모음    안녕하세요, 아코입니다! ...

blog.naver.com

대강 이정도면 필요한 기초 지식은 다 갖췃다고 본다. 에셋 패키지는 나 또는 다른 사람들이 만들어 놓은 리소스 모음집이라고 보면 되며, 프리펩은 이런 리소스들을 이용하기 쉽도록 하나로 합쳐놓은 오브젝트이다.

 

오늘은 이것저것 한다고 별로 공부를 많이 안한것 같다. 내일은 더 많이 해보자

예제 코드는 한빛 아카데미 예제 소스

IT CookBook, 게임 제작으로 배우는 유니티 (hanbit.co.kr)

 

IT CookBook, 게임 제작으로 배우는 유니티

게임을 만들면서 유니티를 배우려는 모든 독자층을 대상으로 합니다. 유니티의 설치 방법과 기본 사용법을 먼저 설명한 다음 유니티에서 그래픽 리소스를 설정하고 스크립트를 코딩하는 과정

www.hanbit.co.kr

또는 다음 레포지토리에 업로드 될 예정입니다. 유니티 프로젝트는 용량이 너무 거대한 관계로 제가 짠 스크립트만을 업로드하고 나머지는 링크형식으로 제공하겠습니다.

GitHub - cyphen156/Unity: UnityProject

 

GitHub - cyphen156/Unity: UnityProject

UnityProject. Contribute to cyphen156/Unity development by creating an account on GitHub.

github.com

 

 

 

 

 

 

'프로젝트 > 유니티' 카테고리의 다른 글

Unity6 에셋 패키지 & 프리펩  (1) 2024.09.10