본문 바로가기

카테고리 없음

UNITY 게임개발트랙 - 내일배움캠프 70일차 TIL

내일배움캠프 70일차 TIL

오늘도 오전에 기술면접 예상질문을 풀어보고 팀 프로젝트 개발을 진행했다.

Unity 오브젝트가 다양하게 씬에 올라와 있다면 동시에 시작되고 무엇이 먼저 초기화 되는지 알 수 없을 수 있는데, 프로젝트에서 코드를 만들 때 이에 대해 고민하고 해결해본 경험이 있다면 설명해주세요.

  • 플레이어의 스탯을 관리하는 부분과 움직임을 관리하는 부분을 따로 만들어두었는데, 움직임을 관리하는 부분에서 플레이어 스탯의 값 중 일부를 사용해야 했습니다. 그래서 플레이어 스탯 중 움직임에 필요한 값들은 Awake 함수 안에서 빠르게 초기화해주고 나머지는 Start에서 초기화를 진행해주었고, 움직임을 관리하는 부분에서는 Start 함수 안에서 플레이어 스탯의 값을 가져와서 캐싱해둘 수 있도록 했습니다.

Update의 종류와 특징

  • FixedUpdate() : 업데이트 메서드 중 가장 먼저 호출되며, 고정된 주기로 호출된다. 보통 물리연산이 필요할 때 많이 사용된다.
  • Update() : 가장 일반적으로 사용되는 메서드로, 매 프레임마다 호출된다. 주로 게임 오브젝트의 위치, 애니메이션, 입력 처리 등 실시간으로 업데이트해야 하는 작업에 사용된다. 고정된 시간 간격으로 실행되지 않으며, 프레임 속도에 따라 호출된다.
  • LateUpdate() : 모든 Update 메서드 실행 후에 호출된다. 주로 카메라 이동, 타겟 따라가기, 오브젝트 위치 보정 등에 사용된다. 다른 오브젝트들의 업데이트가 완료된 후에 호출되므로, 오브젝트의 위치 조정이나 카메라 따라가기와 같은 작업에 유용하다.

서로 다른 성능을 가진 기기에서 Update 사용 시 주의할 점에 대해 설명해주세요.

Update는 프레임 단위로 호출이 됩니다. 그렇기 때문에 성능이 좋은 기기는 1초당 프레임이 많아 지면, Update 호출이 많아지고, 성능이 낮은 기기는 1초당 프레임 적어 Updtae 호출이 적어집니다. 때문에 어떤 값을 고정된 상수값만큼 Update 호출마다 변경해주게 된다면, Update 호출 횟수에 따라서 다른 속도로 변경될 수 있습니다. 하지만 변경하고자 하는 값에 프레임과 프레임 사이의 시간인 Time.deltaTime을 곱해준다면, 기기 성능과 상관없이 의도한 속도로 Update를 통해 값을 변경할 수 있습니다.