240415-TIL

2024. 4. 15. 21:10내일배움캠프

4월 15일

 

오늘은 서로 다른 성능을 가진 기기에서 Update의 사용 시 주의할 점에 대해서 생각해보자

 

Update의 주의점

더보기

우선 유니티의 Update는 언제 실행될까?

 

유니티의 Update는 매 프레임 마다 실행된다고 한다.

 

그렇다 이 부분에서 우리는 머리에 물음표를 띠용 하고 띄우게 된다.

 

어떤 컴퓨터는 성능이 좋아서 프레임이 잘 나오게되면 Update가 실행되는 빈도가 높을것이고

 

성능이 좋지 못한 컴퓨터는 Update를 성능이 좋은 컴퓨터보다 덜 실행하게 될것이다.

 

게임을 만드는 입장에서는 이 부분에 대한 대처를 해야한다. 물론 아무리 대처를 해도 성능 좋은 컴퓨터를 

 

사용하는게 더 좋겠지만 적어도 성능 자체에서 차이는 없도록 만들어주어야한다.

 

일단 우리는 두가지 방법을 생각해볼수있다.

 

1.Time.deltaTime 사용

2.targetFramerate 사용

 

첫번째 방법부터 생각해보자

 

일단 Time.deltaTime이 뭔지 알아보자

 

우리의 컴퓨터는 매우매우 좋아서 1초에 144프레임을 뽑아낼수 있다고 가정해보자

 

그렇다면 Update는 1초에 144번 실행된다. Update에서 플레이어의 이동로직을 구현하게되면 플레이어는 

 

이동속도 * 144 만큼의 속도로 이동하게 될것이다. 이때 필요한것이 Time.DeltaTime인데

 

deltaTime은 다음 프레임까지 걸린 시간이다 즉

 

1초에 144프레임이 나오는 컴퓨터에서의 deltaTime은 1/144

 

플레이어 이동로직에 이동속도 * deltaTime을 해주게되면 플레이어는 어느 컴퓨터에서든 일정한 속도로 움직이게 될것이다.

 

이제 두번째 방법 targetFrameRate를 알아보자

 

 

targetFrameRate는 프레임 속도를 지정해주고 그 이상 나오지 않게하는 방법이다.

 

즉 아무리 성능이 좋은 컴퓨터라도 일정 프레임 이상 넘어가지 않도록 제한하는 방법이기 때문에

 

성능 좋은 컴퓨터와 그렇지 못한 컴퓨터의 갭을 줄여주는 방법이라 볼 수 있다.

 

 

유니티에서 제공하는 예제 코드이다.

 

 

-1은 기본값이라는걸 잘 알아두자

 

두번째 코드를 보면 Application.targetFrameRate = 60; 60프레임으로 제한해서 아무리 성능 좋은 컴퓨터라도

 

60프레임까지 낼수있게 제한한다.

 

물론 두번째 방법인 targetFrameRate는 성능 좋은 컴퓨터와 안좋은 컴퓨터의 갭차이를 줄여주기는 하나

 

완벽하게 모든 컴퓨터들의 조건을 맞출수는 없기 때문에 첫번째 방법과 같이 사용하도록 하자.

오늘은 Update를 사용할때 주의할 점에 대해서 알아보았다.

 

4월 15일 TIL은 여기서 마치도록 하겠다.

'내일배움캠프' 카테고리의 다른 글

240417-TIL  (0) 2024.04.17
240416-TIL  (0) 2024.04.16
240412-TIL  (0) 2024.04.12
240411-TIL  (0) 2024.04.11
240409-TIL  (0) 2024.04.09