말감로그

24.07.11 코드 트리 반복문 학습 & 유니티 이벤트 함수의 실행 순서 본문

TIL

24.07.11 코드 트리 반복문 학습 & 유니티 이벤트 함수의 실행 순서

habbn 2024. 7. 11. 22:00
728x90

 

오늘은 04 반복분 ~ 05 단순 반복문 while문까지 학습하였다. 기초를 탄탄히 잡기 위해 가자고 했지만 생각보다 단순 기초 문제들이 많아서 시간이 좀 걸리고 지루해진다.. 쩝.. 그래도 끝까지 해내기..!!

 

삼항연산자

a = v1 if 조건 else v2

난 아직도 삼항연산자로 표현하는 법이 익숙치 않다...

 

pass  특정 조건시 아무일도 일어나지 않는다는 의미 

a = int(input())

if a > 15:
    print("A")
elif a >= 10:
    pass
else:
    print("B")

print("Done")

 


유니티 이벤트 함수의 실행 순서

Awake

  • 모든 이벤트 함수를 통틀어 가장 처음에 호출되는 함수이다.
  • 씬의 모든 게임 오브젝트가 초기화된 후 스크립트 컴포넌트의 인스턴스가 생성(인스턴스화)되면 Awake 함수가 호출된다.
  • 컴포넌트가 비활성화 상태이어도 호출된다. 

OnEnable

  • 씬이 로드된 후 게임 오브젝트 + 스크립트 컴포넌트가 활성화 될 때마다 호출되는 함수이다.

Start

  • 오브젝트 + 스크립트 인스턴스가 활성화된 경우에만 첫 번째 프레임 업데이트 전에 딱 한 번 호출된다.

Awake와 Start의 차이

  • Awake : 오브젝트가 생성될 때 가장 먼저 호출된다. ( 인스턴스화된 직후, Start - 첫 번째 프레임 업데이트 전), 오브젝트가 비활성화된 상태에서도 호출된다.
  • Start : 모든 Awake 함수가 완료된 후, 오브젝트 + 스크립트가 활성화된 상태에서만 호출된다.

FixedUpdate

  • 매번 일정한 주기로 똑같은 연산을 처리해야 하는 물리 계산 및 업데이트, 또는 Ray 처리에 주로 사용되는 함수이다. Rigidbody 컴포넌트를 활용하는 코드의 실행도 FixedUpdate에서 이루어지는 것이 더 정확한 물리 계산이 가능하다.
  • 물리 계산에 유리하다는 특성은 FixedUpdate의 호출 간격이 일정하다는 것, 이는 Update가 매 프레임 실행되던 것에 비해 FixedUpdate는 프레임 속도(FPS)에 관계없이 Fixed Timestep이라는 정해진 시간 간격에 따라 호출되기 때문이다.
  • FPS가 낮은 경우 프레임 당 여러 번 호출될 수 있으며, FPS가 높은 경우 프레임 사이에 호출되지 않을 수도 있다.

OnTriggerXXX

  • OnTriggerEnter, Stay, Exit 함수가 FixedUpdate 이후에 실행된다.

OnCollisionXXX

  • OnCollisionEnter, Stay, Exit 함수가 FixedUpdate 이후에 실행된다.

yieldWaitForFixedUpdate

  • 일반적으로 코루틴은 Update 함수 반환 후에 실행되지만, yieldWairForFixedUpdate 함수는 FixedUpate 이후 Update 호출 전에 호출된다.
  • 코루틴을 FixedUpdate 루프가 완료될 때까지 일시정지시키는 명령어로, 물리 연산 후에 실행되어야 하는 작업을 처리할 때 유용하다.

Update

  • 매 프레임 호출되는 기본적인 Update 함수로, 프레임마다 전체 시스템에서 수행되는 작업의 양이 매번 다르므로 Update가 호출되는 주기가 일정하지 않다. 
  • Time.deltatTime : 직전 프레임이 완료되는데까지 걸린 시간

코루틴 yield 함수들

  • Update 함수 반환 후에 실행

LateUpdate

  • Update가 끝난 후 프레임 당 한 번 호출되는 함수로, Update에서 수행된 계산은 LateUpdate가 시작할 때 완료된다.
  • 기본적으로 3인칭 카메라에 사용, 플레이어를 움직이고 LateUpdate에서 카메라 움직임을 계산할 때 주로 사용된다.

렌더링 관련 함수들

LateUpdate 이후에 렌더링된다.

 

yieldWairForEndOfFrame

모든 업데이트 관련 함수들이 끝난 뒤 호출된다.

현재 프레임의 렌더링 작업이 모두 완료된 후에 코루틴을 재개시켜야 할 때 사용된다. 이를 통해 프레임의 마지막 시점에 작업을 수행하거나, 렌더링 완료 후의 특정 작업을 처리할 수 있다.

 

OnApplicationPause

모든 프레임 계산이 끝난 뒤에 프로그램이 일시정지된다. 재실행하면 FixedUpdate부터 실행된다.

 

OnDisable

오브젝트가 비활성화될 때 호출된다.

 

OnApplicationQuit

프로그램이 종료될 때 호출된다.

 

OnDestroy

오브젝트가 파괴될 때 실행된다. Awake와 마찬가지로 스크립트가 비활성화되어 있어도 호출된다.

 

 

728x90