<이벤트 함수>

2023. 7. 11. 23:11·개발툴/Unity

이벤트 함수

유니티의 스크립트는 이벤트 함수 호출을 통해 컨트롤을 스크립트에 넘긴다. 그리고 함수 호출이 완료되면 컨트롤이 다시 Unity로 반환된다.

1. 정기 업데이트 이벤트

  • 게임 프로그래밍의 핵심은 각 프레임이 렌더링되기 전에 게임에서 오브젝트으 포지션, 상태 및 동작을 변경하는 것

Update

  • Update() 함수는 프레임이 렌더링 되기 전, 애니메이션이 계산되기 전 호출됨
  • 지나간 시간을 알고 싶을때 Time.deltaTime 사용

FixedUpdate

  • FixedUpdate() 함수는 물리 업데이트 직전에 호출됨
  • 물리 업데이트와 프레임 업데이트는 동일한 빈도로 실행되지 않기 때문에, Update() 대신     FixedUpdate() 함수에 물리 코드 작성을 통해 더 정확한 결과를 얻을 수 있음

LateUpdate

  • LateUpdate() 함수는 씬의 모든 오브젝트가 Update()와 LateUpdate()를 호출하고, 모든 애니메이션이 계산된 후에 변경 사항을 추가적으로 적용할때 유용하게 사용됨
  •  ex) 카메라가 타겟 오브젝트를 따라가야할때, 캐릭터의 머리가 타겟을 따라가야할때
    • 타겟 오브젝트가 모두 이동한 후에 움직어야 되므로 사용

2. 초기화 이벤트

Start

  • Start() : 첫 프레임이나 오브젝트의 물리 업데이트 전에 호출됨
  • 스크립트가 켜져있을때만 호출됨 -> 필요할 때까지 초기화 코드 실행의 연장 가능

Awake

  • Awake() : 씬이 로드될 때 씬의 각 오브젝트에 대해 호출됨
  • 다른 오브젝트에 메세지를 보내거나, GameObject.FindWithTag()를 안전하게 사용 가능
  • 모든 Awake()는 첫 Start()가 호출되기 전에 완료됨
    •  Start() 함수는 Awake() 단계에 이미 수행된 다른 초기화를 이용할 수 있다.

3. GUI 이벤트

  • 씬의 메인 액션 위에서 GUI 컨트롤을 렌더링하고 클릭에 반응하는 시스템
  • 노멀 프레임 업데이트와 다르게 처리되므로 주기적으로 호출되는 OnGUI() 함수에 넣어야 한다.
  • 게임 오브젝트가 Ignore Raycast 레이어에 속해있으면 호출되지 않음
  • 코루틴 사용가능
  • 게임 오브젝트 위에 발생하는 마우스 이벤트 탐지 가능
  •  OnMouseEnter(), OnMouseOver(), OnMouseExit(), OnMouseDown(), OnMouseUp(), OnMouseDrag()

4. 물리 이벤트

  • 물리 엔진의 오브젝트 스크립트에 있는 물리 이벤트 함수를 호출하여 오브젝트 충돌을 보고함
  •  충돌이 일어나기 위해서는 두 오브젝트 모두 Collider를 가지고 있어야 하고, 둘 중 하나는 RigidBody를가져야 한다. 그리고 Rigidbody를 가진 오브젝트가 움직여서 충돌할 경우만 이벤트 발생
  • OnCollisionEnter(), OnCollisionStay(), OnCollisionExit()
    • Collision : 접촉에 대한 반환 값
      • relativeVelocity : 두 오브젝트의 상대 속도
      • rigidbody : 자신과 접촉한 rigidbody
      • collider : 자신과 접촉한 collider
      • transform : 자신과 접촉한 오브젝트의 Transform
      • gameobject : 자신과 접촉한 오브젝트
      • contacts : 물리 엔진에서 연산한 접촉 포인트 정보, ContactPoint 배열
  • OnTriggerEnter(), OnTriggerStay(), OnTriggerExit()

'개발툴 > Unity' 카테고리의 다른 글

FixedUpdate의 고정된 시간 간격으로 인해 Update와 FixedUpdate의 호출 빈도가 달라지면 성능 문제가 일어나지 않는가?  (0) 2023.07.11
FixedUpdate는 프레임에 영향을 받지 않는가?  (0) 2023.07.11
Log Viewer - 빌드 파일에서 로그 확인  (0) 2023.06.01
[WebGL] Uncaught TypeError: Cannot read properties of null (reading 'getElementsByTagName') at _WebGLInputCreate  (0) 2023.05.31
MIPMAP - 유니티 최적화  (0) 2023.05.31
'개발툴/Unity' 카테고리의 다른 글
  • FixedUpdate의 고정된 시간 간격으로 인해 Update와 FixedUpdate의 호출 빈도가 달라지면 성능 문제가 일어나지 않는가?
  • FixedUpdate는 프레임에 영향을 받지 않는가?
  • Log Viewer - 빌드 파일에서 로그 확인
  • [WebGL] Uncaught TypeError: Cannot read properties of null (reading 'getElementsByTagName') at _WebGLInputCreate
가든_
가든_
  • 가든_
    Code Garden
    가든_
  • 전체
    오늘
    어제
    • 글 목록 (60)
      • 프로그래밍 언어 (11)
        • JAVA (0)
        • C++ (2)
        • C# (9)
      • 개발툴 (24)
        • Visual Studio (0)
        • Visual Studio Code (1)
        • Eclipse (1)
        • Unity (19)
        • Unreal (0)
        • Spring (1)
        • SpringBoot (0)
        • Vue (2)
      • 디자인 패턴 (6)
      • 백엔드 (4)
        • MySQL (1)
        • Servlet (3)
      • 프론트엔드 (4)
        • HTML (3)
        • CSS (0)
        • Javascript (1)
      • 알고리즘 (10)
        • 공식 (3)
        • 백준 (6)
        • SW Expert Academy (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Proxy 패턴
    Abstract Factory 패턴
    컴파일 상수
    UniRX
    SetTile
    swea2112
    chatGPT
    구조패턴
    ()=>
    구조적 UML 다이어그램
    런타임 상수
    RDBM
    스택
    Reflex
    HTML
    c#
    클래스 어댑터
    상태공간트리
    행동 UML 다이어그램
    FixedUpdate
    Adaptee
    Factory 패턴
    오브젝터 어댑터
    MVC
    12738
    Adapter 패턴
    Java
    DI
    다이어그램 그리기
    Unity
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
가든_
<이벤트 함수>
상단으로

티스토리툴바