비록 간단한 내용이지만, 생각밖으로 놓치고 갈 수도 있을것 같아 정리를 하였다.

 

0.생명주기 함수(Update,Start)들을 사용하지 않으면 무조건 지워라

이 함수들은 [리플렉션]이란 것때문에 호출만 하고 있어도 동작을 하여 처리비용을 계속 잡아먹기 때문이다. 

 

p.s 리플렉션

리플렉션은 컴파일 시에 알 수 없었던 타입이나 멤버들을 찾아내고 사용할 수 있게 해주는 메커니즘이다.

리플렉션 정보는 해당 블로그 글을 참고하자.

https://tsyang.tistory.com/56

 

C# - 리플렉션 (Reflection)

리플렉션 리플렉션은 컴파일 시에 알 수 없었던 타입이나 멤버들을 찾아내고 사용할 수 있게 해주는 메커니즘이다. 그러나 다음의 주요한 단점이 존재한다. 리플렉션을 사용하면 컴파일 시에

tsyang.tistory.com

 

1. 빌드시에 Debug.Log()를 지우고 사용하기

빌드시에도 코드영역에 Debug.Log()가 남아있는경우 여전히 처리비용이 들며 , 해킹의 여지도 있게된다.

왜냐하면 개발시에 디버깅용으로 넣은 Debug.Log()로 데이터를 파악하기떄문이다.

 

2.LinQ함수 남용 금지

Linq 패키지로 구현이 가능한건 for과if문으로 구현이 가능하기 때문이며 , Linq는 생각밖으로 처리비용이 높기때문이다.

(Linq와 for문 루프 돌린 성능 비교 그래프 참조 필요함)

 

3.코루틴 사용시 yield return new WaitForSeconds(); 사용 지양하기

사실 코루틴은 반복하게 하는 메서드이지만 new라는 키워드로 인해서 결국 반복적으로 객체를 생성하고

코루틴이 사용이 완료되면 해당 데이터는 가비지가 되어 결국 최적화에 영향을 끼친다.

WaitForSeconds updateTime = new WaitForSeconds(1.0f);

이런식으로 class내에 멤버변수로 선언하고 사용하는것이 올바르다. 

 

4.오브젝트 풀링시 대량의 오브젝트 생성시 자식오브젝트로 생성하지 마라

하이어라키에 오브젝트 풀링을 정리하겠다고 부모오브젝트를 생성하고 그 밑에 만드는데

결국 하이어라키는 계층구조(tree)이기떄문에 나중에 위치가 이동되거나 할때 문제가 발생하기 때문이다. 

+ Recent posts