Publish:

태그: , , ,

카테고리:

📌C# 아쉬움 기록

✏️닷넷(.Net) 프레임워크란 무엇인가?

📋닷넷(.Net) 이란?

마이크로소프트사에서 제공하는 윈도우 프로그램 개발 및 실행환경입니다.

네트워크 작업, 인터페이스 등의 많은 작업을 캡슐화하여 코딩의 효율성을 증대시켰습니다.

📋특징

CLS(닷넷 프레임워크의 언어가 반드시 지켜야 하는 언어 스펙)을 따르는 언어라면

어떠한 언어라도 닷넷 프레임워크에서 실행 가능하며

CLR 이라는 가상기계 위에서 작동하기 때문에 플랫폼에 독립적이며 궁극적으로 프로그래머가

코딩(특히 윈도우 프로그램)을 하는데 더 편한 환경을 제공해줍니다.

✏️스크립트 언어 vs 컴파일 언어

📋스크립트 언어

소스 코드를 컴파일하지 않고 인터 프리터로 소스코드를 한줄한줄 읽어 바로 실행하는 방식으로 동작하는 언어

인터프리터(Interpreter) : 프로그래밍 언어의 소스코드를 바로 실행하는 컴퓨터 프로그램 또는 환경

컴파일을 하지 않고 바로 실행한다는 특징이 있지만, 소스코드를 읽으며 실행하기 때문에 느리다.

ex) Python

📋컴파일 언어

소스코드를 컴파일한 후 기계어를 CPU/메모리를 통해 읽어 실행하는 방식으로 동작하는 언어

컴파일을 하기 때문에 규모가 큰 프로그램이라면 컴파일 시간이 오래 걸릴 수 있지만,

컴파일 후의 기계어를 통해 프로그램을 실행하기 때문에 실행 시간은 빠르다.

ex) C++, C#

✏️C# 에서 Struct 와 Class 차이

  • Struct 객체는 상속이 불가능하지만 Class 객체는 상속이 가능하다.
  • Class 는 참조타입(Reference Type)이고 Struct 는 값타입(Value Type) 이다.
  • Class 객체는 힙 메모리에 할당되지만 Struct 객체는 스택에 할당된다.

✏️스택 메모리와 힙 메모리의 차이

스택의 경우 사용할 수 있는 메모리의 크기가 작고 한정적인 반면

힙은 많은 메모리크기를 가질 수 있다.

하지만 스택의 경우 가비지컬렉션에 의해 관리되지 않기 때문에 성능상 많은 장점이 있다.

✏️Draw Call

CPU에서 그래픽 API 호출을 통해 GPU에 랜더링을 명령하는 것

유니티가 기본적으로 3D 게임 엔진이기 때문에

Scene 에 있는 버텍스들을 그리기 위해 GPU 에 보내는 요청이다.

이런 버텍스들은 데이터를 가지고 있는데 위치, 노멀, UV 데이터, 재질 등을 가지고

변형과 이동에 대한 계산을 위해 버텍스 버퍼에 추가된다.

버텍스 버퍼가 추가되면 그 안에 데이터가 담겨있게 되고, 화면에 그려야 될 때 그 데이터들을 처리하기 위해

복사 과정을 거치는데 만약 이런 데이터의 종류가 많아질수록 Draw Call 이 많아진다고 생각하면 된다.

✏️Sprite Atlas

Atlas 를 써서 얻게되는 장점은 Draw Call 을 줄일 수 있기 때문이다.

예를 들어 자장면 100 그릇을 주문한다고 가정해보자.

100번 전화해서 주문하는 것과 한 번에 주문하는 것 중 후자가 훨씬 효율적이다.

이와 같이 GPU에게 요청하는 횟수를 줄임으로써 성능상의 장점을 얻을 수 있다.

Project Assets에서 우클릭 후 Create -> 2D -> Sprite Atlas 를 선택하여 사용할 수 있다.

✏️Unity 실행순서

간단하게 설명해도 될 것 같다.

Awake() -> OnEnable() -> Start() -> FixedUpdate() -> Physics Logic

-> OnTrigger -> OnCollision -> Update() -> Game Logic -> LateUpdate()

-> Scene Rendering -> OnDrawGizmos() -> OnGUI()

-> OnDisable() -> OnDestroy()

방문해 주셔서 감사합니다!😊

업데이트:

댓글남기기