내일배움캠프 TIL

내일배움캠프 42일차 TIL "유니티에서 코딩할 때 안 좋은 습관"

Jooglorystar 2024. 11. 15. 21:28

 

 

오늘은 유니티 코딩에서 만약 하고 있다면 고치는 것이 좋은 습관에 대해 들었다.

몇몇은 지키고 있는 것이었지만, 처음 알게된 정보도 있었기에 이렇게 글로 정리하게 되었다.

 

 

0. 안쓰는 생명주기 함수는 지워야한다.

 

유니티 내에서 C# 스크립트를 생성했을 때 자동으로 입력되어있는 Start()와 Update() 함수는 존재만으로도 불러와지기 때문에 만약 사용하지 않는다면 지우는 것이 맞다.

 

 

1. Debug.Log()는 끝난 뒤에는 반드시 지워라

 

성능적인 면과 별개로 Debug.Log는 빌드 뒤에도 남아있기 때문에 지우는 것이 맞다.

빌드 시 표시되지 않는 Debug.Assert나 Debug.Assertion 같은 메서드들도 있다.

 

다른 방법으로는 디버그를 불러오는 클래스를 새로 만들고, 빌드시 해당 클래스를 제외하는 방법도 있다고 한다.

 

 

2. Linq함수는 안 쓰는 것이 좋다.

 

Linq함수는 사용하는데 편리하기는 하지만, 성능 면으로는 좋지 않다고 한다. 

 

 

3. 벡터 계산시, 벡터 값을 뒤로

Vector3 dir = new Vector(1f, 1f, 1f);
transform.position += dir * speed * Time.deltaTime;
transform.position += speed * Time.deltaTime * dir;

 

두번째 줄의 경우 연산이 6번 일어나지만, 세번째 줄의 경우 연산이 4번만 발생한다

큰 부분은 아니지만 아낄 수 있을 것이다.

 

 

4. Camera.main을 찾아야할 경우 캐싱해라

 

Camera.main의 경우 하이어라키에서 메인 카메라를 찾는다.

만약 필요할 경우 별도의 필드를 만들고 캐싱을 하는 것이 좋다.

 

 

5. 문자열 덧셈은 사용하지 않는다.

 

문자열 보간 방식이 상대적으로 더 좋으며, 제일 좋은 것은 StringBuilder를 사용하는 것이다.

 

 

6. 코루틴 이용시 WaitForSeconds 캐싱할 것

 

while(true)문에서 반복하는 코루틴의 경우, WaitForSeconds 부분을 캐싱해야한다.

new WaitForSeconds가 계속 불러와지면 성능에 영향을 줄 수 있다.

 

 

7. 오브젝트 풀 관련

 

생기고 사라져야하는 것들은 모두 오브젝트 풀을 써야하면 좋다.(플레이어나 몬스터가 아니더라도)

만약 생성된 내에서 해결된다면 큰 문제가 없지만, 중간에 생성을 해줘야한다면, 어떤 오브젝트의 자식으로 놓지 않는 것이 좋다.

 

 

 

해당부분에서 코루틴시 WaitforSeconds를 캐싱하는 것은 생각해봤던 문제가 아니었다.
이를 유의한다면 앞으로 더 났게 코드를 짤 수 있을 것이다.