[Unity] Unity 기초강의 내용 정리 (2-1강 ~ 2-6강)

[Unity] Unity 기초강의 내용 정리 (2-1강 ~ 2-6강)

educast 나동빈 님의 <Mobile Defence Game 제작으로 배우는 Unity 기초> 강의를 듣고 내용 정리.

———-

2-1. Script Basic

스크립트(Script) : 게임에서 다양한 연산을 처리할 수 있도록 해주는 소스코드

프로젝트 뷰의 Assets 폴더 내에 Scripts 폴더 만들기

Scripts 폴더 안에 C# 파일 생성하기. 파일명은 ShowInformation 으로 지정

참고로 유니티 2018년부터 모노 디벨롭을 지원하지 않는다. Visual Studio 지원.

프로젝트 뷰의 ShowInformation 스크립트를 드래그해서, 좌측 상단 씬 뷰의 Monster 위에 드롭한다.

* 개념

몬스터 -> 오브젝트 (사물)

스크립트 -> 컴포넌트 (기능 등)

Start() : 초기화 수행

Update() : 프레임 당 반복 수행

Start() 메서드 안에 Debug.Log(“Start”); 라고 써넣기

Ctrl + P : 유니티 게임 플레이 단축키

콘솔 창을 보면 “Start” 가 찍혀있다.

Update() 메서드 안에

Debug.Log(“gameObject.name : ” + gameObject.name); 라고 써넣기

gameObject 라는 변수가 제공됨.

Clear : 콘솔 비우기

Clear on Play : 플레이 시마다 콘솔 비우기

스크립트 내의 클래스명과, 파일명을 일치시켜야만 한다.

둘 중 하나를 변경할 경우, 다른 하나도 일치시켜줄 것.

———-

2-2. 개발환경 Setting

* 에디터 선택

상단메뉴 Edit – Prefarences – 좌측 탭 External Tools – External Script Editor 를 Visual Studio 2015 로 설정

메모장으로 설정해도 되지만 비효율적이므로 Visual Studio 추천

* 폰트 설정

Visual Studio 상단메뉴 [도구] – [옵션] – 좌측 [환경] – [글꼴 및 색] 에서 폰트 설정 가능

———-

2-3. Collision

충돌. 거의 모든 게임에서 발생하는 이벤트.

오브젝트와 오브젝트가 부딪치는 모든 행위를 충돌로 이해하자.

Collision[콜리전] 충돌

1. 충돌을 하는 두 Object는 모두 Collider(2D) Component를 가진다.

2. 두 Object 중에서 움직이는 Object는 반드시 RigidBody(2D) Component를 갖는다.

RigidBody(2D) : 충돌 오브젝트 둘 중 하나는 반드시 RigidBody(2D)를 가져야 한다.

Collider[콜라이더] : 충돌이 일어나는 범위를 설정하는 컴포넌트

1. Monster 클릭

2. Add Component

3. Box Collider 2D[박스 콜라이더]

우측 Box Collider 2D 항목 안의 Edit Collider 버튼을 클릭해서 초록색 박스 영역(콜라이더 영역)을 조절한다.

몬스터보다 살짝 작거나 같게 지정한다.

tile1.png 파일을 하단 프로젝트 뷰의 Sprites 폴더 안으로 드래그 앤 드롭한다.

Add Component 로 Collider 2D를 넣는다.

그러면 몬스터가 타일 위에 착지할 것이다.

몬스터 :  RigidBody(2D), Collider 2D 추가

타일 : Collider 2D 추가

* 트리거 충돌

콜리전 충돌과 다르게 충돌해도 지나간다. 충돌했는지 여부만 체크한다.

Box Collider 2D 항목 안의 Is Trigger 체크박스에 체크를 한다.

———-

2-4. Prefab

Prefab[프리팹]

동일한 몬스터를 하나의 맵에 여러 번 출력되도록 하려면 프리팹을 쓴다.

– Prefab은 프로젝트 전체에서 사용할 수 있는 Object들의 “틀”임.

– Prefab을 사용해 Scene에 배치한 Object는 Prefab의 특성을 똑같이 가진 복제품이라 생각할 수 있음.

– 어떤 작업을 수행할 때 그 대상이 Object냐 Prefab이냐는 아주 큰 차이가 있음.

* 오브젝트의 수정 : 다른 오브젝트나 프리팹은 바뀌지 않는다.

* 오브젝트를 수정한 후 프리팹에 적용 : 다른 오브젝트들이 영향을 받아 바뀐다.

ex) 모든 용들의 체력을 증가시킨다. 공격력을 증가시킨다.

– 혼란을 방지하기 위해 가급적 다른 이름을 사용하거나, 폴더를 따로 생성해서 관리하는게 일반적임.

(1) 하단의 타일을 좌우로 늘린다.

(2) 몬스터를 새로 만든다. 크기는 scale 0.3 x 0.3

(3) Collider 2D 를 추가해준다. 크기를 몬스터 크기에 딱 맞게 조절한다.

(4) Assets 폴더 안에 Prefabs 폴더 생성

(5) 몬스터를 Prefabs 폴더 안으로 드래그 앤 드랍한다. (하이어라키 뷰에서 프로젝트 뷰로 드래그 앤 드랍)

이후, 화면에 놓인 몬스터를 고친다고 해도 프리팹은 영향을 받지 않는다.

우측 Inspector 에서 Prefab 항목 [Revert]를 클릭하면 현재 오프젝트 수정분이 롤백되고 프리팹과 동일하게 바뀐다.

우측 Inspector 에서 Prefab 항목 [Apply]를 클릭하면 현재 오브젝트가 프리팹에 반영된다.

———-

2-5. Variable & Data Type (1)

변수와 자료형 공부

자료형 : 어떤 종류의 값을 담을지 결정하는 통의 모양

변수 : 내가 사용하기 위해 만든 실제 통

값 : 그 실제 통에 담은 내용물

int myAge = 27;

string myName = “김철수”;

기본 자료형

int : 정수 자료형 (3, 0, -35, 289 등)

string : 문자열 자료형 (“김철수”, “산”, “아나콘다” 등)

float : 실수 자료형 (0.2, -7.8, 15.0 등)

bool : true 혹은 false (true, false)

(1) C# 스크립트를 생성한다. 파일명은 VariableTest

(2) 하단 타일에 드래그 앤 드랍한다.

public class VariableTest : MonoBehaviour {

    int test_int = 27;

    string test_string = “김철수”;

    float test_float = 10.7f;

    bool test_bool = true;

 // Use this for initialization

 void Start () {

        test_string = “나는 잘생겼다.”;

        Debug.Log(“test_int : ” + test_int);

        Debug.Log(“test_string : ” + test_string);

        Debug.Log(“test_float : ” + test_float);

        Debug.Log(“test_bool : ” + test_bool);

    }

 

 // Update is called once per frame

 void Update () {

        Debug.Log(“test_string : ” + test_string);

    }

}

———-

2-6. Variable & Data Type (2)

public class VariableTest : MonoBehaviour {

   

    int test_int = 50;

    // Use this for initialization

    void Start () {

        int test_int = 5;

        // 5가 찍힌다.

        Debug.Log(“Start : ” + test_int);

    }

    // Update is called once per frame

    void Update () {

        // 50이 찍힌다.

        Debug.Log(“Update : ” + test_int);

    }

}