본문으로 바로가기

(1) 스크립트(Script) 란?

유니티에서 스크립트는 게임에서 오브젝트의 동작들을 기술해놓은 대본의 역할을 하게 됩니다. 게임은 기본적으로 유저와 상호작용 하게 되는데, 이러한 동작들도 스크립트를 이용하여 구현할 수 있습니다.

유니티에서는 스크립트를 C# 과 자바스크립트 중 하나로 작성할 수 있습니다. 4강에서는 본격적으로 게임을 만들어 볼것인데, C# 스크립트를 사용할 계획이므로 이번 강의에선 C# 스크립트 기초를 배워보도록 하겠습니다.

(2) 스크립트 작성하기!

이제 실제로 스크립트를 작성해보며 배워보도록 하겠습니다. 스크립트 언어도 결국 하나의 "언어"입니다. 영어를 잘하기 위해서는 직접 읽어보고, 써보고, 말해봐야 하는 것 처럼 스크립트 언어도 많이 작성해보고 읽어보는게 중요합니다. 스크립트 테스트를 위한 프로젝트 작성부터 시작하도록 하겠습니다.

(2 - 1) 프로젝트 만들기

먼저 스크립트를 작성하고 테스트를 하기 위한 새로운 프로젝트를 만들겠습니다. 프로젝트 이름은 scriptTest, Template는 2D로 선택합니다.

(2 - 2) 스크립트 생성하기

프로젝트를 생성하고 유니티 에디터가 실행되면 아래 그림과 같이 간단한 스크립트를 생성합니다.

# 파일명을 변경할때 주의!

유니티에서 스크립트 파일을 생성할때는 이름을 먼저 정하고 난 다음, 스크립트가 생성이 됩니다. 그런데, 이름을 먼저 정하지 않고 스크립트를 만들고(기본 이름인 NewBehaviourScript으로 생성을 하고 나서) 이름을 따로 변경하게 될 경우 코드내에서 선언된 이름과 스크립트 파일의 이름이 맞지 않아서 오류가 발생하게 됩니다. ( 스크립트를 생성할때 이름을 변경하는 경우엔 유니티가 자동으로 클래스 이름을 맞추어서 생성하기 때문에 오류가 발생하지 않습니다. )

이는 C# 이 클래스 개념을 가지고 있기 때문입니다. 만약 스크립트 오류가 발생하게 된다면 이 클래스 부분의 이름과 프스크립트 파일의 이름이 다르지는 않은지 확인하고, 다르다면 반드시 같도록 해줘야 오류가 발생하지 않습니다.

이제 작성한 스크립트를 적용할 게임 오브젝트를 추가하겠습니다. 스크립트를 만드는 것만으로는 게임 내에서 동작하도록 할 수 없습니다. 게임에 오브젝트를 추가하고 오브젝트에 스크립트를 적용해야 비로소 게임내에서 스크립트가 동작하게 되므로 이 과정은 스크립트를 작성하는 만큼이나 중요합니다.

계층구조 창에서 Create > Create Empty 를 선택합니다. 이렇게 하면 계층구조 창에 GameObject가 생기게 됩니다. 이 오브젝트는 내용이 없는 빈 상태이므로 어떠한 기능도 없습니다. 이런 게임 오브젝트를 빈 오브젝트 라고 부릅니다.

작성한 Test 스크립트를 계층구조 창의 GameObject로 드래그 & 드롭합니다. 이러한 과정을 적용(Attatch)이라고 부르며 스크립트를 게임 오브젝트에 연결해 스크립트가 실행되도록 하는 과정입니다. 오브젝트에 스크립트가 적용되었는지는 Inspector  창에서 확인할 수 있습니다.

스크립트 파일을 오브젝트로 드래그&드롭 합니다
Inspector 창에서 스크립트 적용 상태를 확인할 수 있습니다.

 

 

 

 

 

(2 - 3) 스크립트 작성하기

Project 창에 있는 Test 스크립트 파일(앞서 생성한 스크립트 파일)을 더블클릭하면 스크립트를 작성할 수 있는 에디터가 실행되면서 스크립트가 표시됩니다.

스크립트를 열게되면 아래와 같은 코드가 기본으로 담겨있는걸 볼 수 있습니다.

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

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

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

1~2번 줄의 System.Collections 와 System.Collections.Generic은 데이터를 저장하기 위한 데이터 형(Type) 을 사용하기 위해 미리 써놓는 것이고, 3번줄의 UnityEngine은 스크립트가 유니티에서 동작하기 위해 필요한 기능들을 사용할 수 있도록 하는 부분입니다. 이 부분은 작성하는 일이 거의 없으니 우선 가볍게 넘어갑니다.

5번 줄은 클래스 이름을 정하는 부분입니다. 스크립트를 생성하는 과정에서 주의하라고 말한 부분이 바로 이곳입니다. 일반적으로 클래스 이름 = 스크립트 이름이며 C#에서 작성한 프로그램은 클래스 단위로 관리됩니다.

6번째 줄과 18번째 줄의 중괄호 ( " { , } " ) 사이에 스크립트를 실행했을 때 처리되는 내용을 작성하게 됩니다.  중괄호를 감싼 부분을 블록이라고 하는데, 여는 중괄호와 닫는 중괄호가 반드시 짝이 맞아야 합니다.

8번줄과 14번 줄은 Update 와 Start 메서드로 이 블록안에 처리할 스크립트 코드를 작성하면 됩니다. 이때 Start 메서드는 한번만 실행되며,  Update 메서드는 매 프레임 마다 반복하여 실행됩니다.

초기값을 정하거나 위치를 지정하는 스크립트의 경우 처음 한번만 실행되어야 하므로 일반적으로 Start 매서드에 작성합니다. 반대로 지속적으로 판정을 처리하거나 키 입력등의 조작을 받는 경우에는 Update 메서드에 작성해 매 프레임마다 처리해야 합니다.

끝맺으며

이번 강의에선 유니티에서 스크립트 언어로 C#이 어떻게 쓰이는지 간략하게 알아보았습니다. C#에 대해서 변수, 조건문, 반복문, 메서드와 클래스에 대해서도 설명할게 많지만, 이것들은 나중에 따로 C# 강의에 작성하도록 하고 우선은 이정도로만 알아보겠습니다.

다음 강의에선 지금까지 배운 내용을 활용해 직접 간단한 예제 게임을 만들어보겠습니다.