Translate/Unity

[Unity/유니티] 게임 개발 엔진 유니티의 스크립트 개요

ChoiSenn 2022. 2. 11. 14:56

 

 

 

 

 

 

스크립트

 

 스크립트는 모든 게임에서 필수적인 요소이다.

 가장 간단하게는, 스크립트를 통해 플레이어로부터 입력을 받아 게임 이벤트를 발생시킨다. 더 나아가서는, 그래픽 효과를 만드는 데에 사용하거나 물리적은 오브젝트의 동작을 제어하거나 게임 내 캐릭터의 AI 시스템을 구축하는 데 사용할 수 있다.

 

 

 

스크립트 작성 및 사용

 

 게임 오브젝트의 동작은 해당 오브젝트에 연결된 Components에 의해 제어된다. Unity의 기본 컴포넌트는 다양하게 이용할 수 있지만, 사용자가 원하는 게임 기능을 구현하기에는 충분하지 않은 경우가 많다.

 Unity를 통해 스크립트(Script)를 작성하여 사용자 정의 컴포넌트를 생성하거나, 게임의 이벤트를 시작하거나, 시간 흐름에 따라 컴포넌트 속성을 수정하거나, 사용자 입력 작업에 대해 반응할 수 있다.

 

 Unity에서는 두 가지 프로그래밍 언어를 지원한다.

    - C#, Java, C++과 유사한 산업 표준 언언

    - __UnityScript__, JavaScript를 바탕으로 모델링 된 Unity의 독자적인 설계 언어

 

 또한 Compatible DLL 컴파일이 가능하며, .NET 등 다양한 다른 언어를 사용할 수 있다.

 

 

 

스크립트 생성

 

 다른 Asset들과는 달리, 스크립트 파일은 대개 Unity에서 바로 생성하여 사용한다.(이미지 소스나 오디오 등 에셋들은 외부에서 import하여 이용합니다.) 새로운 스크립트를 만들기 위해서는 메뉴에서 Assets > Create > C# Script(또는 JavaScript)를 클릭한다.

 새 스크립트는 프로젝트 패널에서 선택한 임의의 폴더에 생성된다. 새로운 스크립트는 생성하면 파일 이름이 선택 상태가 되고, 스크립트 이름을 지정할 수 있다.

 스크립트를 생성하자마자 이 단계에서 바로 이름을 붙여주는 것이 좋다. 이 단계에서 지정한 이름은 초기 스크립트 텍스트 생성 시 반영된다. (스크립트 생성 단계에서 바로 이름을 붙여주면 해당 이름에 따라 스크립트의 class명이 변경되어 편리합니다.)

 

 

 

스크립트 파일의 구조

 

 Unity에서는 스크립트 에셋을 더블클릭하면 텍스트 에디터에서 해당 파일이 열린다. 기본적으로 Unity는 Visual Studio를 사용하지만, Unity의 Preferences의 External Tools 패널에서 변경할 수 있다. (2018.1 이후부터는 유니티 설치메뉴에 MonoDevelop 설치가 포함되지 않으며 지원 또한 중단되었습니다! 현재는 Visual Studio가 설치되며 자동으로 지원됩니다.)

 처음 생성된 스크립트 파일은 다음과 같다.

using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour {

    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}

 스크립트는 Unity 내부 처리와 연동되기 위해 MonoBehaviour라는 기본 클래스의 파생 클래스가 입력되어 있다.

 클래스란 게임 오브젝트에 연결할 수 있는 새로운 유형의 컴포넌트를 만들기 위한 청사진이라고 할 수 있다. 청사진에 기초하여 오브젝트의 새 인스턴스를 만든다. 만들 파일 이름과 일치하여 클래스 이름이 붙여져 있다. 해당 파일 이름과 클래스 이름이 일지하지 않으면 게임 오브젝트에 연결된 스크립트 컴포넌트는 비활성화된다. (따라서 생성 초기가 아닌 나중에 이름 변경을 하게 될 경우에는 클래스 명 또한 확인해주어야 합니다.)

 

 클래스 안에는 두 함수가 정의되어있다.

 Update 함수 안에는 게임 오브젝트의 프레임 업데이트를 처리하는 코드를 작성할 수 있다. 어떤 동작을 시키거나, 무언가를 실행시키거나, 사용자 입력 조작에 반응하는 등 시간의 경과에 따라(주로 프레임 단위) 처리되는 게임 내의 모든 것을 포함한다.

 Start 함수는 게임 플레이 직전에(즉, Update 함수가 처음 호출되기 전에) Unity에 의해 호출되며, 모든 초기화를 수행하기에 이상적인 곳이다.

 

 

 

게임 오브젝트 제어

 

 상술하였듯, 스크립트는 컴포넌트의 청사진만 정의하므로 스크립트의 인스턴스가 게임 오브젝트에 첨부되기 전까지는 해당 코드가 활성화되지 않는다.

 스크립트 에셋을 계층 구조 패널의 게임 오브젝트의 속성에 드래그하여 스크립트 첨부가 가능하다.

 컴포넌트 메뉴에는 프로젝트에서 사용할 수 있는 모든 스크립트들을 포함한 스크립트 서브 메뉴가 있다. 스크립트 인스턴스는 인스펙터 뷰의 다른 컴포넌트들과 유사하다.

 일단 연결되면, 플레이를 누르고 게임을 실행하였을 때 스크립트가 작동하기 시작한다.

 Start 함수에 다음과 같은 간단한 코드를 추가하여 확인할 수 있다.

// Use this for initialization
void Start () 
{
    Debug.Log("I am alive!");
}

 Debug.Log는 Unity의 콘솔 출력 창에 메시지를 출력하는 커맨드이다.

 Play now를 누르면 메인 Unity 에디터 창의 하단과 Console 창(메뉴 > Windows > General > Console)에 메시지가 표시되는 것을 볼 수 있다.