Unity 1주차 미니프로젝트(3)

Sungchan Ahn(안성찬)·2024년 9월 12일

내일배움캠프

목록 보기
25/104

유니티 이벤트 함수

  1. 첫 번째 씬 로드
  • Awake
    • Scene이 시작할 때 항상 Start 함수 전에 호출
    • 프리팹이 인스턴스화 된 직후에 호출
    • 게임 오브젝트가 시작하는 동안 비활성 상태인 경우 Awake 함수는 활성화될 때까지 호출되지 않는다.
    • Scene에 추가된 모든 오브젝트에 대해 Start, Update 이전에 호출된 모든 스크립트를 위한 Awake 함수가 호출된다.
    • 게임플레이 도중 오브젝트를 인스턴스화될 때는 실행되지 않는다.
    • 코루틴 사용 X
  1. 첫 번째 프레임 업데이트 전
  • Start
    • 스크립트 인스턴스가 활성화된 경우에만 첫 번째 프레임 업데이트 전에 호출
    • Awake 호출이 끝난 직후 호출
    • Scene Asset에 포함된 모든 오브젝트에 대해 Update 이전에 호출된 모든 스크립트를 위한 Start 함수가 호출된다.
    • 게임플레이 도중 오브젝트를 인스턴스화될 때는 실행되지 않는다.
  1. 업데이트 순서
  • FixedUpdate

    • 일정 시간마다 호출
    • 모든 물리 계산 및 업데이트는 FixedUpdate 후 즉시 발생
    • 종종 Update 보다 더 자주 호출
      프레임 속도가 낮은 경우 프레임당 여러 번 호출될 수 있으며 프레임 속도가 높은 경우 프레임 사이에 호출되지 않을 수 있다.
    • FixedUpdate 의 움직임 계산을 적용할 때, 프레임 속도와 상관없이 신뢰할 수 있는 타이머에서 호출되기 때문에 Time.deltaTime 만큼 값을 곱할 필요가 없다.
  • Update

    • 프레임당 한 번 호출
    • 프레임 업데이트를 위한 주요 작업 함수
  • LateUpdate

    • Update 함수가 끝난 직후 프레임당 한 번 호출
    • Update 에서 수행된 모든 계산은 LateUpdate 가 시작할 때 완료
    • 보통 캐릭터를 추적하는 3인칭 카메라에 사용
      Update에서 캐릭터를 움직이고 방향을 바꾸는 경우, LateUpdate에서 카메라 움직임, 회전을 계산한다.

코루틴 Coroutine

보통 Update 함수가 끝난 후 실행되고, 주어진 YieldInstruction이 완료될 때까지 실행을 멈추고 다른 작업에 양보할 수 있다. 흐름을 관리하거나 여러 프레임에 걸쳐 실행되어야 하는 작업에서 코루틴을 사용한다. Update는 매 프레임마다 호출되기 때문에 1초에 수십번의 호출이 발생하기 때문에 많은 호출이 필요없는 경우에는 코루틴을 사용하여 처리할 수 있다.

  • 코루틴 함수 실행
StartCoroutine(IEnumerator routine);
StartCoroutine(string methodName, object value = null);

코루틴 함수는 필수적으로 yield return을 해야한다.

  • yield - 코루틴은 모든 Update 함수가 끝나고 다음 프레임으로 넘어가기 전에 이어서 실행된다.

    • yield return null
      Update 함수가 끝난 후 다음 프레임으로 넘어가기 전에 이어서 실행된다.

    • yield WaitForSeconds
      지정한 시간만큼 대기한 후, 그 프레임의 모든 Update 함수 끝난 후 이어서 실행된다.

    • yield WaitForFixedUpdate
      FixedUpdate 전에 코루틴이 양보하면 현재 프레임의 FixedUpdate 이후에 이어서 실행된다.

    • yield WWW
      WWW 다운로드가 완료된 후 이어서 실행된다.

    • yield StartCoroutine 코루틴을 연결하고 StartCoroutine으로 호출된 코루틴이 먼저 완료되기를 기다린 후 실행된다.

코루틴 흐름 : Update 내에서 코루틴 호출 시 yield return 이전의 코드를 실행 후 다시 Update로 넘어가 남은 작업을 끝낸다. Update가 종료되면 yield return 이후 코드를 실행하고 다음 프레임으로 넘어간다.


참고
Unity 사용자 매뉴얼 2022.3(LTS) / 스크립팅 / 스크립팅 개념
이벤트 함수의 실행 순서
https://docs.unity3d.com/kr/2022.3/Manual/ExecutionOrder.html

Unity: 비동기와 코루틴을 혼동하지 않기. calci. 2021. 10. 10. 08:51. https://tistory.jeon.sh/59

[유니티] 코루틴 (Coroutine). 엔츄핀. 2023. 11. 13. 05:27. https://enchupin.tistory.com/30

코루틴의 작동방식. 지영7130. 2023. 1. 6. 00:00. https://jygame7130.tistory.com/5

[Unity] 유니티 이벤트 함수 (Awake, Start, Update, FixedUpdate, LateUpdate 차이점).
예나월드. 2024. 5. 21. 19:02. https://yen-world.tistory.com/32

코루틴 관련 함수, YieldInstruction. 공부하는 식빵맘. 2021.01.17. https://ansohxxn.github.io/unitydocs/coroutine/

profile
게임 개발 기록

0개의 댓글