이번 포스팅에서는 유니티 게임 오브젝트에 대해서 알아볼 겁니다. 정확히는 유니티의 게임 오브젝트들에 스크립트를 적용시켜주기 위해 반드시 상속받아야 하는 Monobehavior의 기본적인 사용법에 대해서 알아보려고 합니다.
유니티 게임 오브젝트 기초
게임 오브젝트란?
유니티에서 추가되는 모든 객체는 기본적으로 게임 오브젝트입니다. 이 게임 오브젝트가 최상단의 부모 클래스에 위치한 상태에서 이 클래스를 상속받은 다양한 클래스에 기본적인 컴포넌트들을 담는 컨테이너의 역할을 하죠. 예를 들어 위치 정보를 저장하는 Transform 클래스 등을 가지고 있습니다. 때문에 유니티에서 추가할 수 있는 어떤 객체에서나 게임오브젝트에 포함된 컴포넌트들의 기능을 활용할 수 있죠.
게임 오브젝트에 스크립트 추가하기
이러한 게임 오브젝트들에 개발자가 원하는 코드를 실행할 수 있도록 스크립트를 추가해줄 수 있습니다. 이를 위해서는 추가할 스크립트에 Monobehavior 클래스를 상속 받아야 하죠. 유니티에서는 기본적으로 스크립트를 생성하면 Monobehavior을 상속받은 상태로 코드가 생성됩니다. 직접 만들어 보도록 합시다.
먼저 씬에 빈 게임 오브젝트를 추가해줬습니다. 이후 게임 오브젝트를 클릭하고 우측의 인스펙터에서 “Add component”를 눌러 새로운 스크립트를 추가해봅시다.
리스트 가장 아래의 “New Script”를 선택하고 원하는 이름을 적어 넣은 뒤 엔터를 눌러주면 스크립트가 생성되며 자동으로 오브젝트에 할당됩니다. 이렇게 생성된 코드는 Asset 폴더에 저장됩니다.
스크립트 작성 방법
그럼 이제 추가한 스크립트의 작성 방법에 대해 알아보도록 하겠습니다. Monobehavior에서 사용할 수 있는 함수는 상당히 많지만 오늘은 그중에서 가장 많이 사용되는 4가지 함수만 알아보려고 합니다. 바로 Awake, Start, Update, Fixed Update 입니다.
Awake() | 스크립트 컴포넌트가 생성될 때 한번 호출됩니다. (가장 먼저 호출됨) |
Start() | Update() 함수가 호출되기 직전 한번 호출됩니다. |
Update() | 한 프레임이 생성될 때 한번 호출됩니다. 즉 프레임이 많이 생성되면 많이 호출되며 적게 생성되면 적게 호출됩니다. (가변적) |
FixedUpdate() | 일정 시간 동안 정해진 만큼만 호출됩니다. 기본적으로 FixedUpdate의 호출 주기는 0.02초로 고정되어 있습니다. (고정적) |
각 함수들은 기본적으로 위 표와 같이 행동합니다. 때문에 용도에 따라 함수를 선택하여 코드를 작성해야 합니다.
이전 목차에서 생성하였던 스크립트에 아래와 같은 코드를 작성해주었습니다.
using UnityEngine;
public class Practice005Object : MonoBehaviour
{
// Update is called once per frame
private void Awake()
{
Debug.Log("Awake");
}
// Start is called before the first frame update
private void Start()
{
Debug.Log("Start");
}
// Update is called once per frame
private void Update()
{
Debug.Log("Update");
}
// Fixed Update is called once per every fixed framerate frame
private void FixedUpdate()
{
Debug.Log("Fixed Update");
}
}
이에 대한 결과는 아래와 같습니다.
콘솔의 Collapse 옵션을 활성화 시켜 같은 로그가 겹쳐서 우측에 숫자로 표시되도록 하였습니다. Awake 함수가 가장 먼저 호출되었고 그 다음 Start 함수가 호출되었죠. 이후 FixedUpdate와 Update 함수가 호출되었습니다. 주기적으로 일정량 호출하는 FixedUpdate보다 Update 함수의 호출량이 더 많은 것 또한 확인할 수 있죠.
이렇게 게임 오브젝트에 스크립트를 추가하고 기초적으로 사용하는 방법에 대해 알아보았습니다.
이외 다른 튜토리얼 들은 아래 링크에서 확인해 보실 수 있습니다.
유니티 프로그래밍 정보 총정리[유니티 튜토리얼] – PostiveGround
유니티 게임 오브젝트와 Monovihavior에 대해서는 아래 공식 문서에서 더 자세한 정보를 찾아보실 수 있습니다.