본문 바로가기

C#32

유니티 그래픽스 퍼포먼스 최적화 관련 - 드로우콜 드로우 콜이란? CPU가 GPU에게 오브젝트를 그리라는(렌더링 하라는) 명령을 내리는 것으로, 최적화에 아주 많은 관여를 하는 부분이다. 대부분의 병목의 원인이 드로우콜에서 발생하기 때문이다. 또한 게임 최적화를 위해선 CPU의 부하인지, GPU의 부하인지를 체크해야할 필요가 있다. '배칭'이라는 방법을 사용해 메시들이 동일한 텍스쳐와 재질로 구성되면 드로우콜을 줄일 수 있다. 배칭(Batching) 드로우콜을 줄이기 위해 여러 Batch를 하나로 묶는 것. 동일한 메터리얼을 공유하는 오브젝트들을 묶어서 드로우콜 처리 Batch : 렌더 상태 변경 + 그리라는 명령 정적배칭 Static batching 움직이지 않는 정적인 오브젝트의 경우 하나의 메시로 합쳐서 만들어서 처리 하나의 메시로 합쳐서 사용하기.. 2022. 12. 30.
유니티 safe Area 대응 safe area란? safe area, 즉 안전영역이란 안정적으로 콘텐츠가 보일 수 있는 영역을 의미합니다. 예를 들자면 아이폰X의 디스플레이 영역은 상/ 하단에 라운드 영역을 포함하고 있으며, 특히 상단 영역은 카메라, 스피커 등 센서가 있는 노치 때문에 콘텐츠가 제대로 노출되지 않는 영역이 있습니다. 그래서 그런 영역을 제외하고 콘텐츠가 안전하게 노출되는 영역인 Safe area의 개념이 존재합니다. 특히 게임과 같은 경우 버튼과 같은 UI를 화면의 중앙이 아닌 가장자리 부분에 위치하는 경우가 많기 때문에, 또한 핸드폰 기종에 따른 safe area의 변화에 적절히 대응하기 위해서도 safe area 설정을 해주어야 합니다. Safe Area 설정 1. 캔버스가 존재하는 게임 오브젝트 자식으로 빈 .. 2022. 12. 12.
C# SendMessage / Attributes ▶SendMessage - 유니티 Api 메세지 기반 명령어 ㄴ 다른 오브젝트에 있는 명령을 실행하거나 혹은 명령을 내릴 때 사용한다. - 또한 샌드메세지는 다른 오브젝트의 특정 명령만 실행하게 할 수 있다.(코루틴 포함) - 유니티 엔진의 특성상 사용 빈도가 높을 수 밖에 없다. ㄴ 유니티 엔진 : 컴포넌트 기반 프로그래밍 엔터를 눌렀을 때 레이가 맞으면 그 오브젝트가 "ReceiveMessageSample"을 실행하게 메세지를 보내는 것이다. "회전"은 메서드의 매개변수이다. 레이를 맞은 오브젝트는 "ReceiveMessageSample"메서드를 가지고 있고, 이를 실행시킨다. ▶Arrtibutes - 스크립트에서 클래스와 속성, 또는 함수와 변수 위에 추가하며 속성에 해당되는 동작을 한다. - 유니.. 2022. 7. 2.
C# 인덱서, 제네릭, 확장메서드 ▶인덱서란? C++의 인덱스 연산자 오버로딩과 같이 객체의 인덱스 연산을 시킬 때 특정함수를 호출해주는 메커니즘을 의미한다. 즉, 객체를 배열처럼 사용하는 것이 가능하다. - 가독성 + 중복 로직 방지 ▷ C# 인덱서의 특징 -C# 언어의 인덱서는 this 키워드와 인덱스 연산자 ( [] )를 조합해서 정의하는 것이 가능하다. -C#언어의 인덱서는 this 키워드를 통해서 정의되기 때문에 정적 클래스는 인덱서를 정의하는 것이 불가능하다. -C# 언어의 인덱서는 프로퍼티와 마찬가지로 get과 set을 통해서 로직을 정의하는 것이 가능하다. -C# 언어의 인덱서는 메서드와 마찬가지로 virtual 과 override 키워드의 조합으로 오버라이드 매커니즘을 구현하는 것이 가능하다. ▶제네릭이란? C++의 템플.. 2022. 7. 1.