'프로그래밍/Unity' 카테고리의 글 목록 (4 Page)
본문 바로가기
반응형

프로그래밍/Unity18

반응형
[Unity] 이제 Sprite Packer 는 그만. Sprite Atlas 를 사용하자. 유니티에서 아틀라스(Atlas) 는 여러 개의 스프라이트(Sprite)를 한 장의 큰 텍스쳐에 모아놓은 것이라고 볼 수 있다. 게임에는 UI와 배경, 캐릭터, 이펙트 등등에 수많은 텍스쳐 들이 사용되는데 각 텍스쳐 별로 렌더링 할 때마다 한번의 드로우콜이 발생하게 된다. 때문에 단순 계산해서 게임 내에 UI 요소들(UI 배경 이미지, 버튼 이미지, 각 컨텐츠 별 이미지 등등) 별로 별도의 텍스쳐로 나뉘어져 있다면 총 20개의 UI 요소가 있다고 가정했을 때 20번의 드로우콜이 발생하게 된다. 그런데 이 20개의 각각의 텍스쳐들을 한장의 텍스쳐에 모아놓고 UV 좌표를 조절해 UI 요소들이 사용한다면 (알파 텍스쳐가 없다는 전제하에) 드로우콜이 1로 줄어드는 기적도 볼 수 있을 것이다. 게임의 퍼포먼스에 드.. 2019. 9. 19.
[Unity] 강력한 기능의 오브젝트풀(ObjectPool) 추천 1. 오브젝트풀(ObjectPool) 이란? 유니티 뿐만 아니라 모든 개발 플랫폼에서 인스턴스의 생성과 삭제는 매우 무거운 작업이다. 그리고 C# 기반의 유니티는 메모리 관리를 플랫폼이 담당하므로 가비지 컬렉션의 발생 타이밍을 직접 컨트롤 할 수 없기 때문에 예상치 못한 퍼포먼스 저하가 발생 할 수 있다. 이런 상황을 방지하기 위해 생성 가능한 인스턴스 갯수만큼의 메모리를 미리 할당해 풀에 넣어두고 필요할 때 꺼내고 사용이 끝나면 풀에 다시 반납해 나중에 재사용 할 수 있게 해주는 오브젝트 풀의 존재는 필수이다. 이런 오브젝트 풀을 통해 인스턴스 생성, 삭제 및 가비지 컬렉션 비용에서 매우 큰 이득을 얻을 수 있다. 또한 비슷한 뜻으로 오브젝트풀(ObjectPool) 을 메모리풀(MemoryPool) 이.. 2019. 9. 18.
[Unity] 싱글톤(Singleton) 패턴을 제너릭 클래스로 구현해서 범용적으로 사용하는 방법 싱글톤(Singleton) 디자인 패턴은 게임 개발 시 단 하나의 유일한 인스턴스만 존재해야 하는 Manager 클래스 들을 구현하기 위해 가장 많이 사용되는 디자인 패턴이다. 개발 언어, 플랫폼과 관련없이 싱글톤 패턴은 언제 어디에서 호출 하든 동일한 인스턴스의 응답을 보장하기 위해 static 키워드를 사용하여 첫 호출 시 동적 할당한 자신의 인스턴스를 담아 게임이 종료 되는 순간까지 유지하는 방식으로 구현하게 된다. (다만, 유니티는 모든 GameObject가 MonoBehaviour 클래스를 상속받기 때문에 주의할 점이 있다.) SoundManager, NetworkManager, DataManager, CharacterManager, PopupManager, StageManager, GameMa.. 2019. 9. 18.
[Unity] MonoBehaviour 총정리 및 생명주기(Lifecycle) 1. 모노 (Mono) .Net은 마이크로 소프트(MicroSoft)에서 C언어에 자바의 장점을 수용하여 개발한 MS Windows 프로그램 개발 및 실행 환경이자 언어이다. 네트워크와 UI 등의 많은 작업을 캡슐화 하여 코딩의 효율성을 극대화 한 .Net 의 강력한 기능을 사용하기 위해서는 .Net 프레임워크가 설치 된 윈도우 환경이 있어야 했다. 이에 윈도우가 아닌 다른 플랫폼에서 .Net 프레임워크를 사용하기 위해 개발된 것이 얼마 전 MS에서 인수한 자마린(Xamarin) 사의 Mono 이다. Mono 는 .Net 프레임워크(framework) 의 오픈소스 개발 플랫폼으로서 크로스플랫폼(Cross-platform) 어플리케이션의 개발을 지원하며 C#과 CLI (Common Language Infr.. 2019. 9. 17.