게임엔진 26

어드레서블 (Addressable) - 1. 기본

어드레서블 에셋 시스템 어드레서블 에셋 시스템은 에셋 번들을 대체하는 기술이 아니다. 그냥 에셋 관리의 편의성을 위한 유틸리티라고 보면 된다. 간단하게 말하면, 아래와 같이 에셋에 주소(address)를 부여해주는게 어드레서블의 핵심이라 할 수 있다. 그리고 어드레서블 에셋 시스템은 이러한 주소를 이용하여 에셋의 관리, 로딩, 빌드를 통합한 시스템이다. 어드레스(address) 에셋에 부여된 어드레스(address)는 다음과 같이 활용할 수 있다. 버튼을 누르면 지정된 프리팹을 생성하는 Spawner가 있다고 하자. 위와 같이 프리팹을 직접 연결하는 방식은 스포너가 생성되는 순간 연결된 프리팹도 메모리에 올라가서 좋지않다. 이를 위해 직접 에셋의 경로를 Spanwer에 전달하는 방식을 써야 한다. 보통 ..

에셋 번들 (AssetBundle)

이론 에셋번들이란? 에셋(모델, 텍스쳐, 프리팹, 씬...)들을 묶은 아카이브 파일이다. 에셋번들을 이용하면 이걸 런타임에 불러서 쓸 수 있다. 그래서 DLC를 제공하거나, 컨텐츠를 패치하거나, 모바일 게임에서 초기 인스톨 사이즈를 줄이기 위해서 사용된다. 예를 들어, 다음과 같은 구 오브젝트가 있고, 이것을 런타임에 생성하려 한다. 가장 간단한 방법은 해당 오브젝트에 대한 레퍼런스를 직접 연결해서 생성하는 것이다. public class SpawnFromRefer : MonoBehaviour { public GameObject prefab; [ContextMenu("Spanw")] public void Spawn() { if (prefab != null) Instantiate(prefab); } } 이..

DOTS - 일단 시작2

2022.03.13 - [유니티/ECS] - Unity ECS - 일단시작 1 Unity ECS - 일단시작 1 2021.09.26 - [이론/설계] - ECS (Entity Component System) ECS (Entity Component System) ECS 정의 "A different paradigm of writing code, where we model our programs in a data oriented way" 유니티 EC.. tsyang.tistory.com 이전 글에서는 일단 큐브를 만들어서 ECS시스템으로 움직이도록 했다. 또한, 이전 글에서는 [GenerateAuthoringComponent]를 이용하여 Entity에 Component를 추가하고, Entities.Foreac..

게임엔진/DOTS 2022.03.16

DOTS - 일단 시작 1

2021.09.26 - [이론/설계] - ECS (Entity Component System) ECS (Entity Component System) ECS 정의 "A different paradigm of writing code, where we model our programs in a data oriented way" 유니티 ECS 메뉴얼에서는 ECS를 위와 같이 정의했다. 데이터 지향 설계방식은 아래 글을 참고. https:/.. tsyang.tistory.com ECS는 위 내용 참고.. Unity ECS? ECS는 아직 개발 중이라서 preview 버전만 쓸 수 있다. 업데이트할 때마다 클래스가 없어지거나 하는 경우도 많아서 좀 그렇긴 한데... 기본적인 원리는 배울 수 있으니까 그냥 시작해보자..

게임엔진/DOTS 2022.03.13

Unity에서의 Null Comparison

Comparison to 'null' is expensive Rider 에디터에서 유니티 오브젝트의 Null 비교 '=='연산자를 통해 수행하려 하면 다음과 같은 안내가 나온다. 단순히 null을 비교하는데 왜 이런 안내가 뜰까?? 이유는 UnityEngine.Object가 비교 연산자를 오버라이드 했기 때문이다. UnityEngine.Object의 비교 연산자는 lhs나 rhs중 둘 중 하나만 null일 때, 나머지 하나가 '살아있는' 오브젝트인지 검사한다. 이 과정은 나름 시간이 소요되기에 라이더에서 저런 안내를 해주는 것이다. 그러면 UnityEngine.Object가 살아있음을 보장할 수 있다면 null비교를 더 빠르게 수행할 수 있지 않을까? 여러 방법이 있겠지만 대충 세 가지 방법을 생각해 볼..