본문 바로가기
게임 개발(Unity)

[Unity] Start, Awake, Update 함수에 대하여

by taetae99 2023. 8. 3.
반응형

 


 

유니티로 게임 개발을 하다 보면 C# 스크립트를 사용하게 된다.

그때 마주치게 되는 C#스크립트의 내용은 아래 코드와 같다. 

Start, Update와 같은 이벤트 함수가 보이는데 학습하다 보니 내가 이를 완전하게 이해하지 못하고 있다고 생각하여

Start, Update 그리고 Awake와 같은 이벤트 함수에 대하여 정리해 보려고 한다. 

 

 

 

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

public class d : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 

 

 

 

 

● Awake()

이 함수는 스크립트가 초기화되는 시점에 가장 먼저 호출되는 함수이다. 

초기 설정이나 게임 내 변수를 초기화 하는데 사용한다.

(객체 지향 언어에서 배운 생성자와 유사한 역할을 한다.)

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

● Start()

컴포넌트가 활성화 될때 Awake와 Update함수 호출 사이에 한 번만 호출된다. 

Awake()와 비슷해 보이지만  Awake 함수와의 차이점은 스크립트가 비활성화된 상태에서 개체가 생성되면

Awake는 호출되고 Start는 호출되지 않는다.  

 

 

    이해를 돕기 위하여 직접 로그를 사용하여 확인해 보았다. 

 

 

 

학습하던 프로젝트의 창이다. 아래 프로젝트 창을 보자.

여기에 두가지 스크립트가 존재한다. d 스크립트와 PlayerContoller 스크립트이다. 

 

 

반응형

 

 

 

이 두 스크립트 중 PlayerController 스크립트는 활성화하였고 d스크립트를 비활성화된 모습이다. 

 

 

 

 

활성화된 PlayerController 스크립트의 Awake 함수에는 "On Awake" Start 함수에는 "On Start"가 보이도록 하고

비활성화된 d 스크립트의 Awake 함수에는 "Off Awake" Start 함수에는 "Off Start"가 찍히도록 하고 나서 게임을 플레이한 모습이다.

 

 

 

 

 

 

콘솔창을 통해 확인해보면 활성화, 비활성화 된 두 스크립트 모두 Awake 함수가 호출되었고 

Start 함수는 활성화 된 PlayerController 스크립트에서만 실행 되었다. 

 

 


● Update()

 

가장 많이 다루게 되는 함수로 프레임당 1회 호출된다. 

이는 디스플레이 장치, 컴퓨터와 같은 하드웨어의 성능에 영향을 받아 이미지로 표시하기 때문에 Update함수가 호출되는(프레임이 표시되는) 주기는 다를 수 있다. 

이 와 같은 이유로 게임의 최적화에 영향을 미칠 수 있다. 

 

Update 함수를 사용하는 예시로는 플레이어의 입력을 받아 처리하거나 게임 오브젝트의 위치를 변경하거나 상태 변화를 처리하는 작업 등이 있다. 

 

 

 

 

 

 

 

 

반응형