게임심화 - 2. Monobehaviour

LSDrug·2024년 6월 30일

1. 정의

유니티의 스크립트 컴포넌트를 적용하기 위한 것.

  • 게임 오브젝트는 빈 오브젝트다.
  • 거기서 컴포넌트가 추가되어 특성이 추가되는 것이다.

이에 스크립트도 하나의 컴포넌트라고 할 수 있다.

Monobehaviour는 닷넷 프레임워크를 사용할 수 있게 하는 클래스로써, 이것을 상속받는 순간 유니티에서는 해당 스크립트를 하나의 컴포넌트로 인식한다.

따라서 다음과 같이 생각할 수 있다.

Monobehaviour이 적용된 스크립트를 게임 오브젝트에 붙여야 비로소 스크립트 컴포넌트로 인식하게 된다.

2. 코드에서의 Monobehaviour

유니티에서 기본적인 스크립트를 만든 후, 열어보았을 때의 기본 모습.

public class FirstSample : MonoBehaviour

해당 코드는 MonoBehaviour의 있는 것을 해당 스크립트(FirstSample)에 상속하도록 한다는 뜻을 내포하고 있는 C# 스크립트이다.

기본적인 함수를 살펴보면, **Start()와 Update()이다.

  • Start는 먼저 시작하였을 때 적용되는 것
  • Update()는 한 프레임 당 적용되는 것

해당 함수 말고도 많은 함수가 있다. 순서가 제각각이기 때문에 잘 아는 것이 필요하다.

스크립트 작성을 다 하고나면 반드시 해당 게임 오브젝트에 적용을 시켜야한다.

반드시 MonoBehaviour를 상속받아야 하고, 스크립트의 이름과 상속받는 이름이 같아야 한다.

Awake() 함수를 제작하고 콘솔창에 해당 함수를 띄우도록 한 뒤, 유니티를 작동시키면 다음과 같이 콘솔창에 나타나게 된다.

Awake가 가장 먼저 일어나고 Start가 그 뒤를 있고 난 뒤, 매 프레임마다 Update가 출력되는 것을 알 수 있다.

필요한 것을 상속 받아서 필요한 로직만 사용하게 하면 된다.

3. 변수의 추가 및 조절

스크립트를 이용해서 변수를 추가할 수 있다. GameObject를 이용하면 된다.

그림처럼 GameObject 변수를 추가해준 뒤 유니티 창에서 보면

해당 변수가 추가된 것을 알 수 있다. 여기서 prefab과 다른 오브젝트를 넣을 수 있다. 이것을 '링크를 걸다', 'add 하다'라고 말한다.

또한 다음 방법으로 해당 변수를 가져와서 새로 만들거나 태그, 레이어를 변경할 수 있다.

void Start()
{
	Debug.Log(message:"Start Called");
    GameObject newGameObject = Instantiate(prefab); // 새로운 게임 오브젝트를 받는 것
    newGameObject.tag = "Player"; // 태그 변경
}

보기와 같이 생성, 삭제, 변경이 스크립트 내에서 자유롭게 가능하다.

또한 다음을 통해 상태를 조절하는 것도 가능하다.

ObjectName.SetActive(true or false);

profile
마약같은 코딩, 마약같은 코딩러

0개의 댓글