1. 유니티 스크립트
1.1 유니티
유니티는 게임 엔진(Game Engine)입니다.
쉽게 얘기해서 게임을 만들기 위한 소프트웨어입니다.
게임 엔진이 제공하는 주요 기능은 그래픽을 출력하기 위한 랜더링 엔진, 물리 엔진, 충동 검출 및 반응, 사운드, 스크립트 작성, 애니메이션 연동, 인공지능(AI, Artificial Intelligence), 네트워크, 스트리밍, 메모링 관리, 스레드, UI(User Interface) 등이 있습니다.
1.2 유니티 스크립트
스크립트는 게임에서 필수 요소입니다.
일반적으로 게임은 스크립트를 통해서 플레이어 입력에 반응하고, 게임 플레이에 이벤트를 작동시킵니다.
또한, 스크립트를 사용하여 그래픽 효과를 생성하고, 오브젝트의 물리 동작을 제어하며, 각종 게임 진행을 구현합니다.
유니티는 게임 오브젝트(GameObject)에 컴포넌트(Component)를 사용하여 오브젝트들을 조절합니다.
아래 그림에서 Direct Light, Camera, Player는 게임 오브젝트입니다.
그리고 각종 게임 오브젝트에는 Transform 외 각종 컴포넌트들이 연결되어 게임을 실행하게 되는 것입니다.
유니티는 기본적으로 제공하는 내장 컴포넌트(Transform, Light, Camera 등)도 있지만, 사용자가 직접 기능을 구현해야 하는 경우가 많습니다.
이런 경우 스크립트를 사용하여 사용자 정의 컴포넌트를 만듭니다.
하이아키(Hierarchy) 창의 게임 오브젝트를 클릭하게 되면 인스펙터(Inspector) 창에 컴포넌트가 나타납니다.
위 그림에서는 Transform과 Camera, Audio Listener가 내장 컴포넌트이고, Camera Controoler이름의 스크립트(Script)가 사용자 정의 컴포넌트입니다.
사용자 정의 컴포넌트는 게임의 이벤트 시작, 시간이 지남에 따라 컴포넌트 프로퍼티 수정, 사용자 입력 작업에 대한 반응을 자유롭게 활용할 수 있습니다.
1.3 C#
사용자 정의 컴포넌트를 만드는 방법이 스크립트입니다.
스크립트로 사용되는 언어는 C#, Java가 있지만, 이제는 대부분 C#을 사용합니다.
C#은 마이크로소프트에서 개발한 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 언어입니다.
유니티 2018.2부터는 .Net 4.x Equivalent(C# 6.0)를 사용하고 있습니다.
C#7.0이 일부 지원하지만, 아직은 C# 6.0을 중심으로 작업을 하시면 됩니다.(추후 업데이트된다고 합니다.)
1.4 .Net 4.x 스크립팅 런타임 설정
Unity에서 .Net 4.x 스크립팅 런타임을 사용하려면, 다음 단계를 수행하면 됩니다.
① 메뉴 > Edit > Project Settings...
② Player > Other Settings > Configuration > Scripting Runtime Version에서 .NET 4x Equivalent를 선택하면 됩니다.
2. 스크립트 생성(Hello World!!!)
지금부터 HelloWorld라는 스크립트를 만들어서 유니티에서 실행해 보겠습니다.
2.1 C# 스크립트 생성
① 유니티 에디터 프로젝트 창의 오른쪽 탭에 마우스 우클릭을 함.
② Create > C# Script 클릭.
2.2 C# 스크립트 이름 입력
이름을 HelloWorld라고 입력합니다.
2.3 스크립트 실행
HelloWorld를 더블 클릭하면 Microsoft Visual Studio 프로그램이 실행됩니다.
2.4 코딩
아래 (5) 에 Debug.Log("Hello World!!!");를 입력해 주세요.
using System.Collections; // ① using문
using System.Collections.Generic;
using UnityEngine;
public class HelloWorld : MonoBehaviour // ② 클래스
{
// Start is called before the first frame update ③ 주석
void Start() // ④ Start 문
{
Debug.Log("Hello World!!!"); // ⑤ 여기에 입력해주세요 ^^
}
// Update is called once per frame
void Update() // ⑥ Update 문
{
}
}
① using 문 : System.Collections 네임스페이스에서 정의된 형(변수, 메서드) 등을 사용한다는 의미입니다.
② HelloWorld 클래스 : MonoBehaviour의 상속은 받은 HelloWorld.cs의 메인 클래스.
스크립트 이름을 HellowWorld로 했기 때문에, 클래스 이름도 HelloWorld로 됩니다.
혹시 스크립트 이름이나 클래스 이름을 바꿀 수 있으나, 스크립트 이름과 클래스 이름은 같아야 합니다.
③ 주석 : 프로그램을 실행하는 데는 영향을 미치지 않고, 프로그램에 필요한 설명을 적어 놓는 것입니다.
주석은 문장 제일 앞에 //를 넣으면, 그 줄이 모두 주석이 되고,
/* ... */ 를 사용하면, 그 안에만 주석이 됩니다.
④ Start 문 : Update의 첫 프레임입니다.
⑤ Debug.Log("Hello World!!!"); 를 입력해 주세요.
Debug.Log 함수는 콘솔(Console)에 괄호 안에 문자열을 출력해 주는 함수입니다.
하지만, Build 이후에도 실행 파일을 실행하면,
C:\Users\username\AppData\LocalLow\CompanyName\ProductName\Player.log 파일에도 저장됩니다.
그렇기 때문에, Editor에서만 Debug.Log를 사용하고 Build 할 때는 주석 처리하셔야 합니다.
Debug.Log 함수는 이 강좌의 대부분에서 사용될 주요 함수입니다.
⑥ Update문 : 매 프레임마다 실행되는 명령입니다.
프레임이란 컴퓨터가 만든 영상을 모니터 등에 시현하는 한 장면을 의미합니다.
우리가 보는 영상은 이렇게 그려진 장면들의 연속에 의하여 마치 화면이 움직이는 것처럼 보이는 것입니다.
2.5 저장
툴바에서 저장 아이콘을 클릭합니다.
2.6 스크립트의 인스턴스화 (Add Component)
위에서 만든 HellowWorld.cs 소스를 게임 오브젝트에 컴포넌트에 추가하여야 게임에서 실행됩니다.
① 프로젝트 창에서 HellowWorld.cs 파일을 드래그 앤드 드롭(Drag And Drop, 끌어서 놓기) 하여,
하이아키 창의 Main Camera 게임 오브젝트 위에 놓으면 됩니다.
② 결과
Main Camera 게임 오브젝트를 클릭하면 Inspector 창에 스크립트가 컴포넌트로 추가되어 있습니다.
2.7 실행
위에 있는 툴바를 실행 바에서 재생 버튼을 클릭합니다.
2.8 결과
콘솔 창에 아래와 같이 로고가 프린트됩니다.
만약 콘솔 창이 열려 있지 않으면, 메뉴 > Window > General > Console를 클릭하면 됩니다.
(콘솔 창의 메뉴 위치는 버 전별도 다르기 때문에, Console이 보이지 않을 경우 메뉴 > Window에서 찾아봐야 합니다.)
2.9 씬 저장
유니티 에디터에서 File > Save 하여 씬을 저장합니다.
2.10 빌드
① 메뉴 > File > Build Settings... 클릭
② Build Settings 창이 뜨면, Add Open Scenes 버튼을 클릭하여 현재 씬을 Build에 추가 한 뒤,
Build 버튼을 클릭하면 됩니다.
③ Build Windows가 나오면, 실행 파일을 저장할 폴더를 선택하면 됩니다.
여기서 주의할 점은 빌드 파일은 될 수 있으면, 프로젝트 폴더 밖에 만들어서 사용하는 것이 좋습니다.
나중에 프로젝트 자체를 복사하는 경우가 발생할 경우,
빌드 파일도 같이 복사되기 때문에 별도로 관리하는 것이 좋습니다.
④ 빌드 중입니다.
⑤ 실행파일이 만들어졌습니다.
2.11 실행
실행파일을 더블 클릭하면, 아래 화면이 나옵니다.
Debug.Log는 콘솔 창에서 볼 수 있기 때문에 아래 화면만 나옵니다.
2.12 프로그램 종료
프로그램을 종료하고 싶으면, Alt + F4를 클릭하면 종료됩니다.
'프로그램 > 유니티 C# 강좌' 카테고리의 다른 글
[유니티 C# 강좌] 6. 형 변환(Type Conversions) (0) | 2019.11.12 |
---|---|
[유니티 C# 강좌] 5. 열거형(Enumeration) (0) | 2019.10.28 |
[유니티 C# 강좌] 4. 문자열(String) (1) | 2019.10.27 |
[유니티 C# 강좌] 3. 배열(Array) (0) | 2019.10.26 |
[유니티 C# 강좌] 2. 데이터 형식(Data Type), 변수(Variable), 상수(Constant) (2) | 2019.10.26 |