게임엔진/유니티 12

에셋 번들 (AssetBundle)

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

Unity에서의 Null Comparison

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