Tech/Unity(14)
-
[Unity]Asset bundle 기본 개념
서론 이 글은 유니티의 Addressable asset system의 기본 개념에 관련된 글입니다. 그중, Addressable asset system 사용하게 된 계기인 Asset bundle system에 관한 기본적인 설명과 단점들에 관한 내용입니다. 제가, The pinkfong company 재직 때 직접 작성한 사내 블로그 글을 개인 블로그로 옮긴 것입니다. 이 글은 다음과 같은 사전 지식이 있으면 훨씬 이해하기 편하며, 어느 정도 지식이 있다는 가정 하에 진행 되어 일부 간략한 설명이나 생략되는 내용들이 있을 수 있습니다. Unity의 Asset 개념 Unity의 예약 폴더인 Resources 폴더와 Resources.Load() 기능 Unity의 Asset Bundle 개요 Addressa..
2022.06.12 -
[Unity]UIWebView Deprecated 이슈 해결 법
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다. 서론 어느 날부턴가가 iOS AppStore에 앱을 제출하면 위와 같은 경고 메일이 왔었습니다. 요약하자면 "UIWebView는 앞으로 사용되지 않으니 해당 이슈 처리를 미리미리 해달라"인데… 일반 네이티브 앱이라면 이미지의 설명처럼 "WKWebView"로 바꿔주면 되지만… 유니티로 뽑은 빌드는 그게 아니니… 어떻게 해결을 해야 할까요? 이번 글에서는 해결했던 과정에 대해 다뤄보려 합니다. 첫 번째 해결책 일반적으로 Deprecate 되는 API나 라이브러리 등을 제거하거나 마이그레이션 할 때는 사용되는 곳을 찾는 게 우선이었습니니다. 그래서 해당 앱을 만들때 사용한 Third party SDK나 패키지들을 살펴보았습니다. 이 부분에서는 쉽게 찾을..
2022.04.13 -
[Unity]직렬화(Serialization)
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다. 서론 사실 직렬화는 Unity에서만 통용되는 개념이 아닙니다 다. 이번 글에서는 Unity의 C# 직렬화에 대해서 다뤄보려 합니다. Serialization(시리얼 라이제이션, 직렬화) 의미 자체는 특정 객체(데이터)를 바이트의 나열로 바꿔서 파일이나 네트워크 통신으로 Stream 가능하게 해주는 것입니다. 반대로 직렬화된 바이트의 나열을 원래 객체(데이터)로 바꿔주는 것은 Deserialize(디시 리얼라이즈, 역직렬화)라고 합니다. 결국 바이너리 데이터와 객체 데이터 사이의 인코딩과 디코딩인 것입니다. Serialization는 왜 하는가? 한단어로 이야기하자면 '영속성'이 아닐까 합니다. 영속성이란 오래도록 계속 유지되는 성질을 뜻합니다. 객..
2022.04.13 -
[Unity]로드된 리소스의 메모리 누수
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다. 서론 메모리 누수는 프로그램이 메모리 부족으로 인해 갑자기 종료되게 하는 주된 원인 중 하나입니다. 허용된 메모리 이상을 사용할 경우 시스템단에서 강제로 종료시켜 버리기 때문이죠. 누수라는 것은 불필요한 메모리가 할당된 뒤 적절하게 해제되지 못하고 떠돌기 때문에 발생합니다. Unity개발을 하면서도 메모리 누수를 보곤 합니다. 아니 분명 가비지 컬렉터 때문에 메모리 해제는 관리가 되고 있는 것 아닌가?라는 생각을 할 수 있지만, 아닙니다. 이번 글에서는 Unity의 메모리 누수, 특히 로드된 리소스로 인해 발생하는 누수에 관하여 다뤄 보려 합니다. Unity의 메모리 관리방식 이전에 가비지컬렉터(Unity, C#) 관련 글에서 Unity(C#, M..
2022.04.13 -
[Unity]Unity mobile native plugin
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다. 서론 Unity로 모바일 게임 혹은 앱을 만들다 보면, 모바일 기기가 제공하는 기능들을 사용해야 하는 경우가 있습니다. 혹은 C++로 개발된 라이브러리를 이용해야 하는 경우 또한 있습니다. mobile native 기능 중 일정 시간이 되면 오는 Push notification, 카메라 등이 예시로 들 수 있겠습니다. 일부는 Unity에서 API 등으로 제공하지만, OS별로 차이나 제공하지 않는 기능들은 어떻게 이용해야 할까요? 그냥 안 써야 하나? 아닙니다. 이것을 위해 존재하는 게 Plugin입니다. Plugin 위 그림은 Plugin을 간단하게 그림으로 표현한 것입니다. 위 그림을 요약해 보자면 다음과 같습니다. Native 기능을 bridg..
2022.04.12 -
[Unity]Scene 사이의 전환
이 글은 이전에 운영하던 깃 블로그에서 옮겨온 글입니다. 서론 Unity는 작업할 때 Scene단위로 합니다. Scene을 어떻게 구성하냐는 만드는 사람의 재량이나 설계에 따라 천차만별이지만 한 프로젝트에서는 꽤나 많은 Scene을 사용합니다. 이 말인즉슨, Scene끼리의 전환은 필수로 일어난다 생각할 수 있습니다. 그러면 이렇게 Scene끼리의 전환 시 별다른 문제가 없을까요? 오늘은 실제 작업을 할 때 발생했던 Scene 사이의 전환 문제에 대해 원인부터 해결법까지 다뤄보려 합니다. Scene전환 예전에는 Application.LodeLevel()으로 요즘에는 SceneManager.LodeScene() / SceneManager.LodeSceneAysnc() 등의 함수로 씬 전환을 할 것입니다. ..
2022.04.12