[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);
}
}