본문 바로가기
UNITY

유니티 게임오브젝트의 흐름 LifeCyle

by J데빌 2022. 6. 29.

골드메탈 유니티 강좌 보고 정리한 내용입니다.

게임오브젝트 생명주기에 대한 코드내용입니다.

 

LifeCycle.cs

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

public class LifeCycle : MonoBehaviour {

    //#라이프 사이클
    //          활성화     <--      비활성화
    //            ↓                  ↑
    //초기화 영역 => 물리 => 게임로직 => 해체
    //               [프    레    임]

    //유니티 초기화(Awake(), Start())
    // 게임 오브젝트 생성 할 때, 최초 실행 함수(딱 한번만 실행)
    void Awake() {
        Debug.Log("플레이어 데이터가 준비되었습니다.");
    }

    //활성화 영역.
    //초기화랑 물리 영역 사이에 위치함.
    //게임 오브젝트가 활성화 되었을 때 실행 되는 함수
    //특징 Awake, Start와 달리 최초 한번만 실행이 아니라 오브젝트가 켜질때 마다 실행이 된다.
    void OnEnable() {
        Debug.Log("플레이어가 로그인했습니다.");
    }

    // 업데이트 영역으로 들어가기전에 최초 실행 함수 (딱 한번만 실행)
    void Start() {
        Debug.Log("사냥 장비를 챙겼습니다.");
    }

    //유니티 물리 연산 영역(FixedUpdate())
    //유니티 엔진이 물리연산을 하기전에 실행되는 업데이트 함수(초당 여러번 실행되는 함수) 1초에 약 50회 호출
    //고유 특징은 컴퓨터 사양은 영향 받지 않고 고정된 실행주기로 cpu를 많이 사용. 고정적으로 프레임을 유지하고 있기 때문에 그만큼 cpu를 많이 사용한다.
    //그래서 FixedUpdate()는 보통 물리 연산에 관련된 로직만 넣는다.
    void FixedUpdate() {
        Debug.Log("이동~");
    }

    //게임 로직 영역(Update(), LateUpdate())
    //게임 로직 업데이트, 물리연산에 관련된 로직을 제외한 나머지 주기적으로 변하는 그러한 로직을 넣을때 사용하는 함수
    //특징 환경에 따라 실행주기가 떨어질수 있음(컴퓨터 사양의 영향을 받음)
    //초당 60회 호출
    void Update() {
        Debug.Log("몬스터 사냥!!");
    }

    //모든 업데이트(FixedUpdate(), Update()) 가 끝난후 실행 되는 함수
    //보통 케릭터를 따라가는 카메라나 로직의 후처리 이런부분을 구현 한다.
    void LateUpdate() {
        Debug.Log("경험치 획득");   
    }

    //비활성화 영역
    //게임로직영역과 해체 영역 사이에 존재한다.
    //업데이트가 끝난후에 오브젝트가 비활성화 되거나 삭제될때 실행되는 함수
    void OnDisable() {
        Debug.Log("플레이어가 로그아웃 했습니다.");
    }

    //해체 영역
    //게임 오브젝트가 삭제되기 직전에 무언가 남기고 삭제되는 의미로 쓰일때 쓰는 함수(게임 오브젝트가 삭제될 때)
    //Awake()함수랑 반대되는 함수가 될 수 있다.
    private void OnDestroy() {
        Debug.Log("플레이어 데이터가 해제되었습니다.");
    }
}

'UNITY' 카테고리의 다른 글

유니티 키보드와 마우스 입력  (0) 2022.06.30
유니티 C# 프로그래밍 기초  (0) 2022.06.29

댓글