[unity] 유니티 게임오브젝트의 흐름(라이프 사이클)

서희찬·2021년 4월 23일

Unity

목록 보기
2/14

초기화 영역

Awake() : 게임 오브젝트 생성할 때, 최초 실행

Start() : 업데이트 시작 직전, 최초 실행

초기화가 끝나면
이제 물리 연산 영역이 시작되어야한다.

물리

FixedUpdate() : 물리 연산 업데이트

고정된 실행 주기로 CPU를 많이 잡아먹어서 물리연산과 관련된 로직만 넣는다.
1초에 약 50회 진행된다.
그래서 이 함수에 디버그 로그를해주면...

짱많이 실행된다!
이렇게 물리연산을 마치면 게임로직에 들어가게된다.

게임로직

Update() : 게임 로직 업데이트

이 연산은 물리적인 연산을 제외하고 나머지 주기적으로 변화는 로직을 넣을때 사용하는 함수
다만 이 함수는 환경에 따라 실행주기가 떨어질수도있다(FixedUpdate와 차이점)

짱마니 실행된당

LateUpdate() : 모든 업데이트 끝난 후

이렇듯 게임로직이 장면안에서 열심히~~ 돌아간다

해체

OnDestroy() : 게임 오브젝트가 삭제될 때

삭제되기직전 무언가 남기고 삭제된다.
오브젝트가 열심히~
실행되다 삭제될때 이 함수를 실행시키고 멈춘다 ~

활성/비활성

OnEnable : 게임 오브젝트가 활성화 되었을 때

Awake() 와 Start() 함수 사이

OnDisable : 게임 오브젝트가 비활성화 되었을 때

이르케 된다!!

정리하면
이런 방식의 프레임을 갖는다.

모든 코드들을 보여주겠다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class p1 : MonoBehaviour
{
    void Awake() // 
    {
        Debug.Log("플레이어 데이터가 준비되었습니다.");
    }
    void OnEnable()
    {
        Debug.Log("플레이어가 로그인했습니다.");
    }
    void Start()
    {
        Debug.Log("사냥 장비를 챙겼습니다.");
    }
    void FixedUpdate() // 물리 연산 업데이트(고정된 실행 주기로 시피유를 많이 사용) -> 시퓨유 부화!! ->물리연산관련된 로직만 넣음
    {
        Debug.Log("이동 ~ ");
    }
    void Update()
    {
        Debug.Log("몬스터 사냥 !");
    }
    void LateUpdate()
    {
        Debug.Log("경험치 획득"); // Update와 같은 횟수로 올라간다. 
    }
    void OnDisable()
    {
        Debug.Log("플레이어가 로그아웃했습니다.");

    }
    void OnDestroy()
    {
        Debug.Log("플레이어 데이터가 해체되었습니다.");

    }
}

골드메탈님의 유튜브 강의를 보고 학습하였습니다

profile
Carnegie Mellon University Robotics Institute | Research Associate | Developing For Our Lives, 세상에 기여하는 삶을 살고자 개발하고 있습니다

0개의 댓글