유니티로 앱을 개발할때 앱 성능저하가 프로젝트의 성패를 좌우할텐데요, 이럴때 아래 사항들을 명심해서 코딩하면 성능향상을 얻을 수 있다고 하니, 코딩할때 꼭 참고해 보세요.



1. Foreach문을 될수있으면 피하고 그냥 일반 For 루프를 사용한다. 


왜냐하면 Foreach문은 매번 루프를 돌때마다, 24bytes의 Garbage memory를 생성시킨다고 하네요.


For문 사용시 팁.


for(int i = 0; i < list.Count; i++) 

{

   // 개발은 재미있어요

}


이렇게 사용하면 안되요. 왜냐하면 루프를 돌때마다 매번 list.Count라는 클래스 맴버변수에 접근하게 되니까요. for 루프의 올바른 사용방법은


int max = list.Count();

for(int i = 0; i < max; i++)

{

   // 요렇게 사용하면 됩니다.

}


이렇게 하면 매번 list 클래스에 접근하지 않고 바로 루프를 돌릴 수 있어서 효율적이에요.



2. Tag를 직접비교하지마세요. 


일반적으로 player.tag == "Player"  이런식으로 비교를 많이 할텐데요, 이건 성능저하의 원인이에요. 왜냐하면 tag를 가져오기위해서 추가적인 메모리 할당이 이루어지기 때문이죠.  올바른 방법은 아래처럼 CompareTag 함수를 사용하면되겠지요.


player.CompareTag("Player")


3. Mesh colliders 자주 사용하지마세요.


4. Collision Detection 코드 될 수 있으면 줄여주세요.

Raycast 같은 걸로 체크하세요. 


5. Tag 대신에 Layers를 사용하세요.

특정 오브젝트를 지칭할때 tag 만큼 편리한게 없지만, 물리 충돌 관련해서는 tag 보다는 layer를 사용하는게 성능향상에 엄청도움이 된다고 해요.


6. Lighting map은 엄청 비싼 거 아시죠?



이상 유니티로 코딩할때 필요한 몇가지 주의사항이었습니다. 제가 필요한 몇가지만 뽑아서 적은거라서 자세한 내용은 아래 링크를 참고하세요.


http://www.gamasutra.com/blogs/AmirHFassihi/20130828/199134/0__60_fps_in_14_days_What_we_learned_trying_to_optimize_our_game_using_Unity3D.php