[Unity] 7. Static이 뭘까요. 정적변수 아닙니다. Bake입니다.

Using Unity;
Using C#;
Using Programming;


Static 이란? 정적변수란?

기억 장소가 콜 스택에서 할당 및 할당 해제되는,
수명이 더 짧은 자동 변수(지역 변수가 일반적으로 자동임)와는 반대되는 개념이다. 
즉, 기억 장소가 힙 메모리에 동적 할당되는 객체와 반의어이다.

라고 합니다... 위키백과에서 말이죠




유니티를 다룸에 있어서 Static은 그 이상의 의미가 있습니다.



오브젝트 우측에 Static 을 체크하면 어떻게 될까요?

말 그대로 Cake라는 오브젝트를 Bake해서 Take해옵니다.





클래스에서 Static을 선언함으로써 기억장소(메모리)의 위치를 힙이 아닌 스택에 할당하는 이유와 같은 이유입니다.

오브젝트를 Static함으로써 오브젝트의 Ligtmap, Occlueder, Batching... 을 다른 메모리에 올릴 수 있다는 말이죠!




라이트빌드도 다음에 더 자세히 다루겠지만, 라이트빌드를 하게되면

라이트(빛)의 효과를 실시간으로 계산하는 방식과

정적객체에 한해 미리 계산을 하는 라이트베이크 방식으로 나뉩니다.



정적오브젝트... 평생 가만히 있을 물체를 실시간으로 계속 계산할 필요가 있을까요?

이 작업으로,

메모리는 영역은 늘어나지만, 계산량의 엄청난 감소로 FPS의 급증을 체감하게 됩니다.

유니티를 다루는 사람이라면 반드시 알아야할 필수적인 요소입니다.
(FPS란? 개발자의 피나는 최적화 <<<< 디자이너의 폴리곤 실수)


다음장에서는 클래스에서 Static을 했을 때의 효과에 대해 알아보겠습니다 :)