Unity

    [Unity] 카메라 스테이킹 (Camera Staking)

    개념카메라 스테이킹이라는 기술은 단일 카메라가 아닌 여러 카메라를 사용해서 렌더링 이미지를 만들고 해당 렌더링 이미지를 순차적으로 겹쳐서 표현하는 방식이다. Unity 카메라 컴포넌트는 렌더링에 필요한 것보다 많이 사용하지 않도록 해야하는데. 예를 들어, 여러 카메라를 사용하여 UI 레이어를 구성하게되면 모든 카메라 컴포넌트는 실제로 유용하게 사용되지 않더라도 오버헤드를 유발한다. 고사양 타겟 플랫폼에서는 무시할 수 있는 수준이지만, 저사양 또는 모바일 플랫폼에서는 각각 최대1ms의 CPU 처리 시간이 소요될 수 있다.렌더링 순서1. 레이어 컬링 (레이어 제외02. 절두체 컬링 (카메라 외부 프로젝트 제외)3. 오클루전 컬링 (완전히 숨겨진 오브젝트 제외)카메라 개수에 따른 성능 확인 (Built in)..

    [Unity] Localization 간단 사용법

    About Localization | Localization | 1.1.1  About Localization | Localization | 1.1.1About Localization Use the Localization package to configure localization settings for your application. Add support for multiple languages and regional variants, including: String localization: Set different strings to display based on locale. Use the Smadocs.unity3d.comPackage 설치하기 [Window > Package Manager]를 선..

    [Unity] 모바일 해상도 대응

    해상도 (resolution)이미지/영상 등을 표현하는 데 몇 개의 픽셀(pixel)로 이루어졌는지를 폭넓게 나타내는 말해상도와 관련된 내용은 유니티 툴의 Game 창에서 추가하거나 설정할 수 있다.캔버스모든 UI 요소는 Canvas 안에 위치해야 한다. 캔버스는 Canvas 컴포넌트가 있는 게임 오브젝트이며 모든 UI 요소는 반드시 어떤 캔버스의 자식이여야 한다.UI 요소 생성, 예를 들어 GameObject > UI > Image 메뉴를 사용하여 이미지를 생성하면 (씬에 아직 캔버스가 없을 경우)자동으로 캔버스를 생성한다. 이 때 이 UI 요소는 이 캔버스의 자식으로서 생성된다.캔버스 영역은 씬 뷰에서 사각형으로 나타나므로 매번 게임 뷰가 보이게 하지 않고도 UI 요소를 배치하기 용이하다. Canva..

    [Unity] 스크립팅 백엔드 (Scripting Backend)

    스크립팅 백엔드란?C# 스크립트나 스크립트 언어로 작성된 코드를 실행 가능한 형태로 변환하는 컴파일러를 말한다.주로 Mono와 IL2CPP가 제공된다.MonoJIT 컴파일 방식을 채택한 유니티의 기본 스크립팅 백엔드이다. 일반적인 닷넷 호환 언어 컴파일 과정과 유사하다. 프로그램이 실행되는 시점에 필요한 코드를 동적으로 네이티브 코드로 번역하기 때문에 초기 실행 속도는 느리지만 반복적으로 실행되는 코드는 최적화되어 성능이 향상된다. 에디터에서 플레이 모드로 실행할 때 기본적으로 사용된다.IL2CPPAOT 컴파일 방식을 채택한 유니티의 스크립팅 백엔드이다. 실행 이전에 네이티브 코드로 컴파일하기 때문에 초기 실행 속도가 빠르고 메모리 사용량이 최적화되며, 또한 코드의 보안이 강화된다. (네이티브 언어이기 ..

    [Unity] DOTS: Jobs, Burst, ECS 간단 정리

    DOTS: 데이터 지향 기술 스택 DOTS는 데이터 지향 구현을 돕는 기술들을 지칭하는 용어 데이터 지향 설계(DOD)를 통해 메모리 사용성 향상 → 성능 극적 향상 Unity의 DOTS: Job System, Burst Compiler, ECS 각각의 기술들이 독립적이기 때문에 셋을 반드시 함께 사용해야 할 필요는 없다. 즉, Jobs, Burst 없이 ECS를 사용할 수 있고, ECS 없이 Jobs, Burst를 사용할 수 있다. 그저 이 세 가지가 DOD 관점에서 궁합이 아주 좋기 때문에 다같이 사용하기를 권장하는 것이다. - Job System : 멀티스레딩 여러 작업을 Job이라는 단위로 나눠 여러 스레드에 할당해주는 시스템. 데이터 지향으로 설계되어 있는 경우에 Job을 스레드에 할당하는 작업..

    [Unity] ThreadPool (스레드풀)

    스레드를 사용하기 위해선 다음과 같이 선언 해줘야한다. using System.Threading; 스레드 선언하기 Thread t = new Thread(MainTread); 스레드를 사용하기 위해 다음과 같이 스레드 생성자를 만든다. 넘겨주는 MainTread 함수 또한 생성한다. static void MainTread(object state) { Console.WriteLine("Hello Thread!"); } 기본 스레드는 foreground에서 실행되는 형태이다. 스레드의 이름을 설정하고 싶으면 Name 을 활용한다. static void Main(string[] args) { Thread t = new Thread(MainTread); t.Name = "Test Thread"; //이름을 설정..

    [Unity] MVC, MVP, MVVM 디자인 패턴

    MVC 패턴 ▶ Model - View - Controller로 각각에 대한 역할을 구분하여 독립적인 기능을 수행하도록 설계하는 디자인 패턴이다. ▣ Model : 어플리케이션에서 사용하는 데이터의 집합이라고 볼 수 있다. ▣ View : 어플리케이션에서 사용자에게 보여지는 화면, UI 이라고 볼 수 있다. ▣ Controller : Model과 View를 이어주는 징검다리의 역할로 사용자는 Controller를 사용하여 Model의 데이터를 수정하게 된다. [ MVC 패턴 ] : MVC 패턴은 Model의 업데이트에 따라 View에 적용이 되야하는 부분에서 서로 간의 의존성이 발생하게 된다. MVP 패턴 ▶ MVC 패턴에서 파생된 디자인 패턴으로 Controller를 대신해 Presenter가 추가되었..

    [Unity] 스프라이트 렌더러 속성 (Sprite Renderer)

    #3 Unity 스프라이트 렌더러 속성 (Sprite Renderer) (tistory.com)

    [Unity] 2D 게임의 기본 타일맵!

    예전에 RPG메이커를 사용했을 때는 맵이 타일(Tile) 방식으로 이루어져 있어서 타일 팔레트를 가져와서 마치 그림 그리듯이 원하는 타일을 칠해주는 방식으로 맵을 만들 수 있었다. 유니티 엔진을 처음 배웠던 5 버전에서는 이러한 기능이 없어서 2D 맵 오브젝트를 직접 배치하거나 타일맵 기능을 직접 구현해야만 했었다. 하지만 유니티 2017.2 버전에서부터 타일맵 기능이 유니티에도 추가되었다. 맵오브젝트를 배치할 필요없이 그림 그리듯이 맵을 만들 수 있다는 것은 굉장한 장점이다. 샘플용 간단한 타일맵 이미지를 다운받은 뒤, 타일맵의 사용법에 대해서 알아보자. 구글에서 적당한 리소스를 다운받아서 사용해도 좋다. 타일 팔레트(Tile Palette) 만들기 타일맵을 씬에 배치하기 이전에 먼저 타일맵을 색칠할 ..

    [Unity] 어드레서블 에셋(Addressable Asset)의 모든것

    리소스 폴더 사용장점은 사용하기에 편리하지만, 리소스폴더에 메모리는 최대한 줄이도록 한다. 시작 시 최소한의 에셋만 남겨두어야겠지만 경계해야 한다. 단점)1. apk사이즈가 커진다.2. 앱 시작 시간이 길어진다.3. 앱이나 폴더 변경 시 재 빌드를 해야 한다. (apk빌드에 묶이기 때문에 에셋 변경 시 무조건 재 빌드해야 한다.)4. 에셋 이름 변경이 힘들다. (에셋을 로드할 때 경로를 바꿔줘야 하기 때문)이런 문제점들을 보완할 수 있는 에셋 번들이 있다.에셋 번들장점은 에셋을 묶음 단위로 관리할 수 있다. 빌드 사이즈 절감과, 앱 시작 시간을 단축시킨다.단점으로는1. 번들의 종속성 문제.같은 이미지를 Asset A와 Asset B에 묶여있다면 같은 이미지 1개로 처리될 것 같지만 2개의 이미지로 인식된..