2020. 5. 31. 23:53ㆍStudy/Unreal
Unity 로만 개발을 하다가 Unreal5 영상을 보고 관심이 생겼고, 취업준비를 하다보니 생각보다 언리얼의 비중이 높아져서 자연스럽게 공부를 하게 되었다.
자세한 비교문서는 docs.unrealengine.com/ko/GettingStarted/FromUnity/index.html 이곳에 나와있고, 개인적인 관점으로 보았을 때 큰 차이점이 느껴지는 부분만 작성하려고 한다.
1. 파일 구조
Unity : Asset
Unreal : Content / Source
비교 문서에 의하면 유니티에서는 에셋 폴더 안에 게임의 에셋들과 C# 스크립트 모두가 저장되어 있는데,
언리얼의 경우 Content(Asset) 와 스크립트를 저장하는 Source 폴더로 나누어져 저장하는 방식이다.(블루프린트 전용 프로젝트일 경우 Sourece 폴더는 존재하지 않는다.)
2. GameObject / Actor
유니티에서 월드에 배치할 수 있는 사물을 'GameObject' 라고 하는데, 이것을 언리얼에서는 Actor 로 칭한다.
가장 큰 차이점은 GameObject 는 C# 클래스로 직접 확장할 수 없지만, Actor 는 C++ 클래스로 상속을 통해 확장 및 수정이 가능하다.
3. Component
유니티와 마찬가지로 언리얼에서도 GameObject에 컴포넌트를 사용하여 여러가지 기능을 추가할 수 있는데,
유니티와 언리얼의 차이점은 유니티는 컴포넌트가 오브젝트의 일반 목록으로서 저장되는 구조이지만, 언리얼에서는 컴포넌트끼리 서로 붙는 계층구조가 저장이 된다. - 예를 들자면 Mesh Component에 Light와 Particle System 이 붙는 식.
4. 작업방식 (Prefab / Blueprint Class)
이 부분에 대해서는 사람마다 다를 수 있지만, 문서에 의하면 유니티의 작업방식은 컴포넌트로 오브젝트 세트를 만든 후 이를 프리펩(Prefab)화 하여, Prefab instance를 월드에 배치하거나, 실행시간에 인스턴스를 생성하는(Instantiate) 작업방식이라고 되어있다.
그에 비해 언리얼은 Blueprint Class를 기반으로 한다. 컴포넌트로 엑터를 만든 후, 이 엑터를 선택한 후 블루프린트 / 스크립트 추가 버튼을
클릭합니다. 그럼 다음 Blueprint Class 를 저장할 위치를 선택하고 생성하여 클래스를 저장합니다.
-Blueprint Class 의 확장성
유니티는 한 프리팹을 다른 프리팹 안에 중첩시키는 경우 복잡해져서, 확장형 구성 요소로서의 역할이 제한됩니다.
언리얼에서는 블루프린트 클래스를 새로 만들고, 기존 블루프린트 클래스를 확장하여 새로운 프로퍼티, 컴포넌트, 비주얼 스크립트 함수성으로 살을 붙이는 것이 가능합니다.
예를 들어, UE4 에서 사람들을 쫓는다던가 하는 기본적인 괴물의 함수성을 구현하는 Monster 라는 이름의 블루프린트 클래스를 만듭니다. 그런 다음 이 블루프린트 클래스를 확장시킬 수 있는데, Dragon 으로 하여 불을 내뿜는 기능을 추가하고, Grue 라고 하여 밤이 되면 사람을 잡아먹는 기능을 추가하고, 이런 식으로 8 개 더 만들었다 칩시다. 이러한 Monster 의 서브클래스는 모두 Monster 의 기본적인 함수성을 상속하고, 그 위에 새로운 기능이 추가됩니다.
유니티에서는 이러한 구현을 하려면, Dragon 하나, Grue 하나 식으로 각기 다른 게임오브젝트 프리팹을 만들어야 할 것입니다. 여기서 모든 몬스터에 새로 만든 대화 컴포넌트를 사용하여 새로운 능력을 추가해야겠다 칩시다. 유니티에서는 새로운 함수성을 복사하여 10 개의 프리팹 모두 일일이 찾아 붙여넣어 줘야 합니다.
UE4 에서는 그냥 Monster 블루프린트 클래스를 편집하여 대화 능력을 추가해 주기만 하면 됩니다. 끝! Dragon, Grue, 나머지 8 종의 Monster 서브클래스 모두 자동으로 새로운 대화 함수성을 상속하므로, 일일이 건드릴 필요 없습니다.
하나 더! 지금까지 블루프린트 클래스에 대해 말씀드린 모든 것은 C++ 클래스에도 적용되며, 액터와 컴포넌트에도 마찬가지입니다.
5. C# Script(Monobehaviour) / Component Class(C++ / Blueprint Script)
유니티에서는 스크립트를 오브젝트에 추가할 때 C# 스크립트를 추가하는 것이 전부이지만, 언리얼은 C++ , Blueprint Script 등
본인이 원하는? 방식으로 스크립트를 추가하여 작성할 수 있다(또는 작성된 것을 추가할 수 있다).
Blueprint Script VS C++ Script
Blueprint script는 간단한 로직이나 액션 시퀀스에 대하여 사용할 때 이상적이다. - 쉽게 접근할 수 있지만 복잡한 일을 구성하기에는 부족함.
C++ Script는 게임플레이 시스템, 복잡한 AI, 새로운 엔진 기능 제작같은 대규모 작업용이다.
대부분의 프로젝트는 둘을 혼합해 사용한다. 보통 블루프린트로 프로토타입을 제작하고 퍼포먼스를 중요시하는 시기가 오면 블루프린트의
일부 또는 전부를 c++로 옮기기도 한다.
Blueprint 와 C++ 의 혼합 사용 예제 - 픽업 시스템 구현
다음 내용은 2편에 이어 정리하도록 하겠다.
'Study > Unreal' 카테고리의 다른 글
언리얼 적응하기 #1 (0) | 2021.06.29 |
---|---|
유니티에서 언리얼 - 용어 (0) | 2020.10.14 |