목록전체 글 (213)
Deff_Dev
어드레서블에서 로드한 Texture2D를 Sprite로 변경해야하는 경우가 생겼다. Texture에서 Sprite로 변경할 때는 Sprite.Create 함수를 사용한다. 코드// 어드레서블 로드Texture2D loadThumbnail = await AddressableManager.Instance.LoadAsset(EAddressableType.Thumbnail, idx++);// 텍스처의 전체 영역 설정Rect rect = new Rect(0, 0, loadThumbnail.width, loadThumbnail.height);// Sprite 생성 (텍스쳐, 영역, 피봇, PixelPerUnit = 100)Sprite sprite = Sprite.Create(loadThumbnail, rect, ..
📌 문제 상황 프로젝트에 맵을 적용시켰더니 Batch가 기본 1000이 넘었고 가장 높은 맵은 1900까지 나왔다. 인스펙터 창에서 Static 배칭을 적용하려 했지만, 런타임에 어드레서블을 사용해 맵을 로드하는 과정에서 Static 배칭이 적용되지 않는 문제가 발생했다 Static 배칭이란 ?정적인 오브젝트 중에 같은 Material을 가진 오브젝트를 미리 배칭하여 드로우 콜을 줄이는 최적화 기법 배칭 과정에서 모든 정적인 오브젝트를 하나로 묶게 되므로, 메모리 사용량이 증가할 수 있습니다. 모든 최적화 방법이 그렇듯 Static 배칭 역시 적절한 상황에서만 사용해야 한다.🔑 CombineMeshes를 이용한 Static Batching 런타임 중 Static 배칭이 자동으로 적용되지 않자,..
1. C# 구조체와 클래스의 차이는 ?구조체는 값 형식의 데이터 구조이고 클래스는 참조 형식의 데이터 구조이다.2. 클래스를 사용할 때, 주의 할 점클래스 객체의 할당을 자주하다 보면 GC에 부하를 줄 수 있기 때문에 꼭 필요한 객체만 생성해야한다.클래스를 이용해 새로운 인스턴스를 만들 때, 깊은 복사를 이용해야 새로운 인스턴스가 생성된다.3. GC 내부 동작힙 메모리에 할당할 수 있는 공간이 없을 때, GC가 자체적으로 실행되는데, 힙 메모리를 탐색하면서 사용하지 않는 객체를 찾고 메모리를 해제하는 방식으로 동작한다.4. GC 제네레이션GC는 0, 1, 2 세대로 나눠서 0, 1 ,2 세대 순으로 메모리를 탐색하고 쓰레기 메모리를 할당 해제한다.GC에서 살아남은 메모리들은 다음 세대로 넘어가는 형식이다..
sharedMaterial은 실제로 인스펙터에 저장된 원본 Material을 말하고 모든 오브젝트가 동일한 Material을 사용할 때 사용된다 Material을 공유하기 때문에 Batching 가능하지만 Material 값을 변경하면 해당 Material을 사용하는 모든 오브젝트에 반영된다. material은 sharedMaterial의 사본을 만들어 사용하는 인스턴스로 다른 값을 가져야할 때 사용한다. 고유한 Material 인스턴스가 생성되므로 Batching 불가능하지만 material 값을 수정해도 해당 오브젝트만 수정된다. 그렇기 때문에 각각 다른 값을 부여해야하는 경우에는 material에 접근해야되고 같은 값을 가질 때는 sharedMaterial로 접근하면된다.
1. 네트워크 프로토콜 (IP, TCP, UDP)에 대해 설명해주세요. 네트워크 프로토콜은 데이터를 주고받는 데이터 통신을 원활하게 하기 위해 미리 정해놓은 통신 규약이다. 더보기 Application 계층사용자와 바로 연결되어 있다.사용자로부터 정보를 입력받아 하위 계층으로 전달 or 하위 계층에서 전송한 데이터를 사용자에게 전달한다.Presentation 계층받은 데이터를 인코딩 or 디코딩하여 데이터의 형식을 정해주는 계층이다.Session 계층네트워크 상 양쪽 연결을 관리하고 연결을 지속시켜주는 계층TCP/IP 세션을 만들고 없애는 역할Transport 계층데이터가 실제로 전송될 때 신뢰성을 보장하기 위한 계층이다.데이터 패킷이 정상적으로 전달되었는지 확인하고, 정상적으로 전달되지 못했다면 재전송..