GURU_unity_1주차 C#스크립트 익히기 1

2023. 6. 28. 12:58SWU_프로젝트/GURU - unity

이제 본격적으로 C#스크립트를 익혀보고자한다.

 

스크립트를 작성하면 오브젝트에 적용해 스크립트에 작성된 대로 오브젝트가 움직이게 된다.

이렇게 유니티에서는 오브젝트가 움직이는 방향을 스크립트로 기술한다.

프로젝트 설정화

우선 나는 2D를 선택하고, 프로젝트를 생성하였다.

project창에서 마우스 오른쪽 버튼을 누르고 create → C# script를 눌러도 되고, 나처럼 project창에 + 부분을 클릭하면 C# script가 보인다. 선택하면 된다.

작성된 파일명을 나는 test로 바꿨다. 이따 다시 설명하겠지만 파일이름과 class 이름 반드시 같아야한다. 

위 그림처럼 hierarchy 창에서 create(혹은 +) 를 클릭하면, Create Empty 가 보인다. 선택한다. 

Gameobject가 생성되었다.

이제 아까 만든 C# script를 Gameobject에 드래그하면, 위와 같이Gameobject에 test가

적용된 표시가 뜬다.

 

이제 스크립트를 작성해보려고 한다.

 

스크립트에 작성한움직임을 오브젝트에 적용하려면 게임 오브젝트와 연결해야하고,

게임 오브젝트에 움직이는 스크립트를 적용해야 오브젝트가 제대로 동작할 수 있다.

 

스크립트 파일을 열고자 test파일을 더블 클릭하면 아래와 같이 Visual Studio가 실행된다.

 test script 파일을 열었더니 위와 같은 코드가 기본으로 담겨있었다.  ( C와는 좀 많이 달라보인다. )

 

스크립트에 대해서 간단히 설명을 해보자면 , 

 

1-2번째 줄의 System.Collections, System.Generic은 데이터를 저장하는 형을 제공한다.

 

3번째 줄의 UnityEngine은 유니티가 동작하는데 필요한 기능을 제공하는데, monobehavior 클래스가 제공해주는 모든함수앞에 unityengine이라는 키워드를 다 붙여야하는 번거로움을 없애준다.

 

5번째 줄에서는 클래스 이름을 정하는데 , 아까말했듯이 반드시 파일명과 같아야한다.

( C#으로 작성한 프로그램은 클래스 단위로 관리된다. )

 

6번째 줄에 있는 중괄호{{} 와 18번째 줄에 있는 닫는 중괄호{}} 사이에는 스크립트를 실행했을때 처리될 내용을 쓰면된다.

(중괄호로 감싼 부분은 블록이라고 부른다. 이부분은 C와 같음)

// 이부분은 주석을 나타내는 것은 참고 , 이것도 마찬가지로 C와 같다.

 

8번째 줄에 적힌 Start와 14번째 줄에 적힌 Update는 각각 Start 메서드와 Update 메서드라고 부른다.

 

+ 프레임과 실행시점에 대해 간단히 설명을 해보자면,

 

게임 화면은 영화나 애니메이션과 마찬가지로 그림 한 컷을 플립북 방식으로 표시하는데,

이 그림 한 컷을 프레임이라고 부른다. 1초에 표시되는 매수는 FPS(Frame Per Second) 단위로 센다.

스크립트를 실행시키면 Start메서드는 한 번만 실행되지만 Update 메서드는 프레임마다 반복해서 실행된다.

Update 메서드는 캐릭터 표시뿐만 아니라 충돌 판정, 키조작 등의 처리를 프레임마다 해야한다.

 

이제 출력을 해보려고 한다.

언제나 그렇듯 , Hello World 로 첫 출력을 해보자.

Start 메서드와 중괄호 사이에 입력하면 된다.

Debug.Log()라고 입력하면 소괄호()안에 쓴 문자열을 Console 창에 출력한다.

나는 콘솔창을 찾으려고 조금 애를 먹었는데,  Window → General → Console 창을 찾을 수 있고, 선택한다.

스크립트에 문자열을 쓸때는 앞뒤로 ( " " )이렇게 큰 따옴표로 묶으면 된다.( 안그러면 오류가 발생한다 , 참고로 스크립트에서 숫자도 큰따옴표로 묶으면 문자열로 취급한다. 이거는 C공부했다면 쉽게 이해될 것 같다. )

또한 끝에는 세미콜론(;) 도 반드시 붙여줘야하는데 이또한 C랑 같다. 

이렇게 Console 창을 확인하니  Hello World 가 출력되었다!

 

(참고) 

scene저장

 

작업한 내용을 저장해야하므로 Scene을 만들고, 도구바에서 File → Save As 를 선택하고 Scene이름을 입력, Save를 선택한다. 저장하면 유니티 에디터의 project창에서 scene아이콘이 나타난다.

 

 

이제부터 변수를 사용하는 방법을 배워보려고 한다.

일단 C와 Python과 마찬가지로 변수를 선언해야하는데 종류는 다음과 같다.

데이터 형 이름 설명 값의 범위
int 정수형 - 2,147,483,648 ~ 2,147,483,647
float 부동소수점형 - 3,402823E+38 ~ 3,402823E+38
double 배정도부동소수점형 - 1,79769313486232E+308 ~ 1,79769313486232E+308 ~
bool 불형 true 또는 false
char 문자형 텍스트로 사용되는 유니코드 기호
string 문자열형 텍스트

 

 

이제 시작해보자.

start 메서드의 내용을 지운 후 아래와 같이 작성하고 실행한다.

update 메서드 역시 잠시 사용하지 않으므로 지운다.

int age; 로 변수를 선언(int 는 데이터형 이름, age는 변수명이다.)

= 표시는 다른 것과 마찬가지로 대입 연산자이다. 변수값을 대입할 때 사용한다.

Console창을 보면 이렇게 출력결과를 확인할 수 있다.

 

위에 처럼 변수를 선언하면서 대입을 한꺼번에 하게되면 변수를 초기화할 수 있다.

참고로 float를 사용할때는 반드시 f를 붙여준다. (f를 붙이지 않으면 double형으로 취급되기 때문이다.)

마찬가지로 Console창에서 출력된 결과를 확인할 수 있다.

변수에 문자열 대입

숫자와 마찬가지로 문자열도 변수에 대입할 수있다. 

문자열을 다루는 데이터 형은 string형이다. 

Console창에 출력값을 확인할 수 있다.

 

변수와 연산에 대해 알아보려고 한다. 

스크립트에서 사칙연산을 할때는 더하기 +, 뺴기 -, 곱하기 *, 나누기 / 를 사용한다.

변수와 연산

int 형인 answer변수를 선언하고 더하기를 해보자.

Console 창에 다음과 같이 출력값을 확인할 수 있다.

다른 연산종류도 확인해보자. ( 빼기-, *곱하기, /나누기 )

Console 창을 통해 순서대로 빼기, 곱하기, 나누기 된 값이 출력된 것을 확인할 수 있다.

숫자와 숫자의 연산뿐 아니라 변수와 변수도 연산할 수 있다. 변수를 초기화하고 int 형 answer를 선언한 후에 변수인 n1과 n2의 값을 더한 값을 answer에 대입한다. 

Console 창에서 출력한 결과값 확인!

 

int 형으로 answer변수 선언 후 10으로 초기화 하고,

아래  answer+=5는 answer=answer+5와 같다고 보면 되는데 변수값에 5를 더한다는 뜻이다.

변수명+=증가하고 싶은 값 으로 쓰면 값을 원하는 수만큼 증가시킬 수 있다.

Console 창에서 출력값을 확인할 수있다.

변수값을 1만큼 늘리고 싶을때 위와 같이 ++를 사용하면 된다.

반대로 감소하고 싶을때는 --를 사용하면 된다.

Console창에서 위와같이 출력값을 확인할 수 있다.

문자열은 숫자처럼 연산을 할 수는없지만  문자열과 문자열을 연결할 수 있다.

문자열이니까 string을 사용하고 str1, str2변수를 선언한 후에 +로 연결해주면 된다.

선언한 message변수에 대입

Console창에서 출력된 결과값을 확인할 수 있다.

문자열을 연결할때도 +=연산자를 사용해 연결할 수 있다.

Console창을 통해 확인할 수 있다.

+연산자나 += 연산자는 숫자와 숫자의 덧셈이나 문자열 연결뿐 아니라 숫자와 문자열도 연결할 수 있다.

문자열과 숫자를 연결하게되면 숫자는 문자열로 취급된다.

Console 창을 통해서 출력값을 확인할 수 있다.

 

 

C언어와 Python과 비슷한 부분도 있고 다른부분도 있지만, 익숙한 부분들이 보여서 학습하는데 다소 수월했던것 같다.