게임 개발 일지/유니티 엔진 공부

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

인텔리킴 2024. 4. 19. 16:07
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : 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("경험치 획득");
    }

    void OnDisable()
    {
        Debug.Log("플레이어가 로그아웃하였습니다.");    
    }
    void OnDestroy()
    {
        Debug.Log("플레이어의 데이터를 해제했습니다.");    
    }
}

Awake() 코드는 게임 오브젝트 생성이 될때 최초로 실행된다.

OnEnable() 코드는 플레이어가 오브젝트를 활성화할 떄 실행된다. 활성화될 때마다 실행되기 떄문에 여러번 실행될 수 있다.

Start() 코드는 Update()가 시작되기 직전에 최초로 실행된다.

FixedUpdate()는 고정된 실행주기로 코드가 실행되고 CPU를 상대적으로 많이 사용하는 코드이다.

Update()는 게임의 로직을 업데이트하는 코드로 하드웨어의 성능에 따라 주기가 달라질수 있다.

LateUpdate()는 모든 업데이트가 끝난 후 실행되는 코드로 주로 경험치 휙득과 같은 요소 처리에 사용된다.

OnDisable()은 오브젝트가 비활성화되었을 때 실행된다. 

OnDestroy()는 오브젝트가 삭제되었을때 실행된다. 

 

오브젝트 프레임의 주 흐름은 다음과 같다.

초기화 -> 활성화 -> 물리 -> 게임 로직 -> 비활성화 -> 해제