[Cinemachine] 2.5D 구현 (3D 환경에서 2D 구현)
·
유니티(Unity)/패키지: Cinemachine 정리
✍️ 개요  위 이미지는 3D 환경에서 카메라를 사이드에 배치하여 2.5D 뷰를 구현한 게임의 인게임 이미지 입니다. 2.5D를 구현하기 위해서 여러분이 직접 카메라 스크립트를 작성하셔도 됩니다. 하지만 시네머신(Cinemachine)을 활용한다면 코드 없이 구현할 수 있습니다. 심지어 충돌 및 범위 설정 등 조건을 추가할 수도 있습니다!  [ 오늘의 작업물 미리보기 ]     📌 구현 방법   먼저 씬에 빈 오브젝트를 생성하세요. [ 씬 하이러키 우클릭 ] - [ Create Empty ] 클릭 빈 오브젝트 이름은 CameraBundles 라고 명명하겠습니다. 앞으로 여기에 다양한 가상 카메라를 배치하여 기능을 구현하도록 하겠습니다.    이제 CameraBundles 오브젝트를 우클릭하여 가상 카메..
[Cinemachine] 3인칭 시점 구현
·
유니티(Unity)/패키지: Cinemachine 정리
✍️ 개요 3인칭 시점은 Unity 3D 게임을 제작할 때 많이 사용합니다. 그래서 유니티는 Cinemachine 카메라에 3인칭 시점에 대한 제어를 제공하고 있어요. 오늘은 Cinemachine을 활용하여 3인칭 시점을 구현해보겠습니다.  [ 오늘의 작업물 미리보기 ]    📌 구현 방법  먼저 연습을 위해 [ PlayerFollowCamera ] 가상 카메라 오브젝트를 제거합니다.    씬을 보시면 MainCamera 오브젝트가 보입니다. MainCamera에 [ Cinemachine Brain ] 컴포넌트를 추가하여 가상 카메라를 제어할 준비를 합니다. ※ 이미 추가되어 있다면 넘어가시면 됩니다. 이제 가상 카메라만 준비하면 됩니다!   씬 하이러키 배경을 우클릭하여 [ Cinemachine ] ..
[Cinemachine] 시네머신 동작 원리
·
유니티(Unity)/패키지: Cinemachine 정리
✍️ 개요시네머신을 본격적으로 사용하기 전에 동작 원리부터 알아야겠죠? 오늘은 시네머신이 어떤 원리로 인해 카메라가 스크립트 없이 동작할 수 있는지 살펴보겠습니다.※ 시네머신 패키지가 준비가 되지 않으신 분들은 아래 링크를 참고하세요!https://gus6615.tistory.com/110 [Cinemachine] 패키지 설치 및 준비 (Unity 6)✍️ 개요 유니티를 개발할 때 카메라와 관련된 기능을 다루는 경우가 많습니다. 그래서 유니티는 시네머신(Cinemachine) 패키지를 추가하여 카메라와 관련한 수많은 기능을 제공하고 있는데요. gus6615.tistory.com   📌 시네머신 등장 배경 만약 여러분이 3D 게임을 개발한다고 가정해봅시다. 다양한 연출을 위해 N개의 카메라를 씬에 배치하..
[Cinemachine] 패키지 설치 및 준비 (Unity 6)
·
유니티(Unity)/패키지: Cinemachine 정리
✍️ 개요 유니티를 개발할 때 카메라와 관련된 기능을 다루는 경우가 많습니다. 그래서 유니티는 시네머신(Cinemachine) 패키지를 추가하여 카메라와 관련한 수많은 기능을 제공하고 있는데요. 오늘은 시네머신 패키지를 설치하고 어떤 원리로 동작하는지 살펴보겠습니다. 💡 Unity 6000.0.24f1 버전에서 진행됩니다.     📌 패키지 설치 및 준비 [ Asset Store : Starter Assets - ThirdPerson ] Starter Assets - ThirdPerson | Updates in new CharacterController package | Unity 필수에셋 | Unity Asset StoreGet the Starter Assets - ThirdPerson | Upda..
[C#] Object (Boxing & Unboxing)
·
C#
✍️ 개요 모든 .NET 클래스의 루트 상속 클래스는 항상 object입니다. 즉, 모든 클래스는 object에서 비롯되었다고 볼 수 있습니다. 오늘은 C# object 클래스가 무엇인지, 그리고 object가 제공하는 메서드가 무엇인지 Unity 예제를 통해 알아보도록 하겠습니다.  📌 Object란? Object:  .NET의 System.Object을 의미하며, C#의 모든 데이터 타입이 상속받는 클래스입니다. 간단한 예시를 통해 object에 대해 알아보도록 하겠습니다.  using System;// The Point class is derived from System.Object.class Point{ public int x, y; public Point(int x, int y) ..
[Unity] Model이 렌더링(Rendering)되는 과정 (1편)
·
유니티(Unity)/이론 정리
✍️ 개요 Unity에서 특정 Model을 이동시키는 로직을 구현해보셨나요? 언뜻 보기에는 모델 자체가 이동되는 것처럼 보입니다. 하지만 실제로는 Model을 구성하는 여러 정점(Vertices)들이 이동한 뒤 그래픽스 파이프라인 과정을 거쳐 화면에 출력되게 됩니다. 이 과정을 반복하여 Model이 이동되는 것처럼 보이는 것이죠. 오늘은 Model이 렌더링되는 과정이 어떻게 이루어지는지 살펴보도록 하겠습니다.  📌 3D Model이 렌더링 되는 과정 Unity에서는 어떻게 모델들을 화면에 출력시키는 걸까요? 만약 비행기가 날아다닌다면 3D Model을 구성하는 Mesh들이 실시간으로 이동하는 것처럼 보이겠죠? 지금부터 3D Model이 어떤 원리로 화면에 실시간으로 출력되는 지 알아보도록 하겠습니다. ..
[Unity] URP란 무엇인가?
·
유니티(Unity)/이론 정리
✍️ 개요 UPR(Universal Renderer Pipeline)은 현재 Unity에서 기본적으로 사용하는 렌더 파이프라인입니다. 최근에는 뛰어난 성능과 최적화로 모바일과 VR 플랫폼에서도 많이 사용하고 있습니다. 오늘은 URP의 개념과 동작 원리, 성능과 관련하여 내용을 정리하도록 하겠습니다.  📌 Unity Render Pipeline 의 역사 렌더 파이프라인(RP): 모델(데이터)를 화면에 출력하는 일련의 과정 과거 Unity는 Built-in이라는 RP를 사용했습니다. 하지만 Built-in RP는 한계가 명확했습니다.    첫번째 한계는 ① 최적화 기술 및 설계 부족 입니다.  위 사진처럼 광원(L)과 광원에 영향을 받는 오브젝트(N)이 있다면, 드로우콜(Draw Call)이 L * M이 ..
[Unity] Mono & IL2CPP 컴파일 방식의 차이
·
유니티(Unity)/이론 정리
Unity Engine은 두 가지 스크립팅 백엔드, Mono와 IL2CPP를 사용합니다.(스크립팅 백엔드: 스크립트를 컴파일 하는 방식 및 기술) 오늘은 Unity 컴파일 기술인 Mono와 IL2CPP가 어떻게 동작하는지, 그리고 어떤 원리와 특징이 있는지 살펴보겠습니다. Mono란? Mono: 런타임 시점에 요청 시 코드를 컴파일하는 JIT(Just-In-Time) 컴파일 방식 C#은 .NET 런타임 환경에서만 작동하기 때문에 IOS, Android에서는 작동하지 않습니다. 그래서 Unity는 Mono를 사용하여 여러 플랫폼에서 작동할 수 있도록 설계합니다.  💡 Mono가 작동하는 방식1. .NET에서 C#을 중간 언어인 IL(Intermediate Language)로 변환2. Mono에서 런타임으..
[Unity] .NET이란?
·
유니티(Unity)/이론 정리
Unity로 게임을 개발하다 보면.NET이라는 키워드를 종종 볼 수 있습니다. 오늘은 Unity에서 .NET이 어떤 기능을 제공하는지 살펴보도록 하겠습니다. .NET 의 개념과 역사 .NET: Microsoft에서 제작하였으며, 애플리케이션 개발에 필요한 라이브러리와 런타임 환경을 제공하는 무료 오픈소스 프레임워크 Unity에선 다중 플랫폼을 제공하기 위해 Mono를 사용하기 시작했습니다. Mono는 .NET 기반으로, 이때부터 Unity는 .NET 프로젝트를 진행하였습니다.    과거 .NET은 Standard, Core, XAMARIN으로 나뉘어져 있었습니다. 하지만 위 플랫폼들은 서로 다른 API를 지원했고, Microsoft는 모든 API를 하나로 통합하기 위해 .NET Standard를 출시하였..
Unitask의 개념과 사용법
·
유니티(Unity)/이론 정리
최근에 게임을 협업하면서 Unitask를 통해 비동기 로직을 구현하는 상황을 보았다. 평소에 .NET 기반 Task을 통해 비동기 작업을 처리했는데, 협업을 통해 Unitask를 사용해보니 매력적인 라이브러리라고 생각했습니다. 그래서 오늘은 비동기 프로그래밍을 쉽게 처리해주는 Unitask에 대해 알아보도록 하겠습니다. Unitask 등장 ① Unity 코루틴(Coroutine)의 한계 코루틴은 IEnumerator를 사용해 중단과 실행을 반복하는 구조입니다. 하지만 이러한 구조는 복잡한 비동기 시스템에서 코드가 난잡해지고 가독성이 떨어집니다. 또한, 대량의 코루틴을 사용하면 많은 메모리 할당과 GC 문제로 성능 문제가 있습니다. GC가 자주 발생하는 이유: new WaitForSeconds 처럼 new..