# 유니티에서의 C# 프로그래밍 2
#1 코딩 기본규칙
#주석
주석은 컴퓨터가 처리하지 않는 영역이다. 보통 메모 용도로 사용하며, 코드를 주석으로 바꾸어 잠시 비활성화시키는 용도로도 사용할 수 있다. 한 줄 주석은 /(슬래시)를 두 번 연속 타이핑하고 입력한다. 여러 줄을 주석할 때에는 /*와 */사용하여 시작과 끝을 표시한다.
// 보통 메모 용도로 사용하는 한줄 주석
/* 여러줄에 걸쳐 주석을 사용할때에는
슬래시와 별을 사용하여 앞뒤로
사용하여 주석처리를 해준다 */
#주석
콘솔에 메시지를 출력할 때는 Debug.Log() 메서드를 사용한다. 문장을 출력하는 경우에는 아래와 같이 문장을 큰따옴표로 묶어준다.
Debug.Log("출력 되는 내용");
#세미콜론
코드 한 문장이 끝나면 반드시 세미콜론을 끝에 붙인다. 컴퓨터는 코드 한 문장을 세미콜론으로 구분한다.
int A = 0;
int B = 1;
위와 같이 한 줄이 끝날 때마다 세미콜론을 필수적으로 해줘야 에러가 생기지 않고 정상 작동할 수 있다.
#2 메서드 연습하기
#두 점 사이의 거리
먼저 평면의 두 점 (x1, y1)과 (x2, y2) 사이의 거리를 구할 때는 두 점이 포함된 직각삼각형을 만든다. 직각삼각형을 만들어 피타고라스의 정리를 이용하면 빗변의 길이를 계산할 수 있고, 계산한 빗변의 길이가 두 점 사이의 거리가 된다.
#GetDistance() 메서드 만들기
두 점 사이의 거리를 계산하는 코드를 작성해 보자.
기존에 만들어둔 HelloCode 스크립트의 Start() 메서드 부분을 모두 지우고, 메서드 GetDistance()를 선언해준다. GetDistance() 메서드는 입력으로 두 점의 위치 (x1, y1)과 (x2, y2)를 받고 출력으로 두 점 사이의 거리를 반환한다.
float GetDistance(float x1, float y1, float x2, float y2)
GetDistance() 메서드는 위와 같은 모양이 된다. 다음은 밑변과 높이를 측정해보자. 입력받은 두 점으로 만든 직각 삼각형의 밑변과 높이를 지정할 변수 width와 height를 선언해 주자. 그다음 거리를 저장할 변수 distance도 선언해준다. 제곱근을 구하는 코드는 유니티 수학 관련 라이브러리인 Mathf클래스에 Sqrt() 메서드를 사용하면 된다.
코드를 다 작성하게 되면 위의 사진과 같이 코드가 나오게 된다. 위와 같이 코드를 작성한 뒤 실행해보면 아래와 같은 출력 값이 Console창에 나오게 된다.
#3 제어문
제어문에는 분기를 결정하는 조건문과 수행을 여러 번 반복하는 반복문이 있다.
#if문
if문은 주어진 조건을 평가한다. 조건은 결과가 true나 false 중 하나가 되는 변수나 표현식이다. 평가한 조건이 참 이면 if문 아래에 중괄호로 묶인 영역을 실행한다. 반대로 조건이 거짓이면 if문 블록을 무시하고 넘어간다.
if문을 사용하여 성적에 따른 학점을 나누는 예제를 만들어보자.
위와 같이 코드를 작성하고, 실행해 보자.
성적인 Score 변수가 100점이므로 (Score > 80)이라는 조건에 부합하기에 조건문에 설정된 멘트가 출력된 것이다.
#비교 연산자
위의 코드에서 사용된 '>'와 '<='는 조건식에 사용하는 비교 연산자이다. 비교 연산자는 두 값을 비교하여 참과 거짓을 경정한다.
연산자 | 읽는 법 | 결과 |
a < b | a가 b보다 작다. | a 값이 b 값보다 작으면 참 |
a <= b | a가 b보다 작거나 같다. | a 값이 b 값 이하면 참 |
a > b | a가 b보다 크다. | a 값이 b 값보다 크면 참 |
a >= b | a가 b보다 크거나 같다. | a 값이 b 값 이상이면 참 |
a == b | a가 b와 같다. | a 값이 b 값이 같으면 참 |
a != b | a가 b와 다르다. | a 값이 b 값이 다르면 참 |
#if ... else문
if문 블록 끝에 else문을 덧붙여 조건이 거짓일 때 실행할 처리를 구성할 수 있다.
직전 예제를 위와 같이 코드를 작성하면 Score가 50이므로 조건 (Score > 80)은 거짓이 된다. 따라서 코드를 실행하면 else문으로 처리가 곧장 이동하여 "낮은 학점입니다. 더 분발하세요"라는 메시지가 출력 되게 된다.
#else if문
else if문을 사용하면 else문에 조건을 덧붙일 수 있다. else if문을 추가해서 성적에 따른 분기를 더 상세하게 나눠보자.
Score의 값은 80이다. 처음 조건문인 if에서는 점수가 90 이상이어야 하므로 거짓이므로 넘어가고 다음 조건문인 else if에서는 점수가 70 이상이어야 하므로 조건에 부합한다. 즉, 위의 코드는 "A 학점으로 좋은 성적입니다."라는 결과가 출력된다.
#논리 연산자
if문에서 조건을 비교할 때 둘 이상의 조건을 함께 사용해야 할 때에 논리 연산자를 사용한다.
연산자 | 읽는법 | 결과 |
A && B | A 그리고 B | 조건 A와 조건 B모두 참이여야 결과가 참 |
A || B | A 또는 B | 조건 A와 조건 B 둘 중 하나라도 참이면 결과가 참 |
!A | A가 아니다 | A가 거짓이면 결과는 참, A가 참이면 결과는 거짓 |
#for문
for문은 조건이 참인 동안 처리를 반복한다. for문을 사용하기 위해선 아래와 같은 세 가지 요소가 필요하다.
- 초기화 : 주로 순번이 될 변수를 선언하고 초깃값을 정한다.
- 조건 : 어떤 조건에서 처리를 계속 반복할지 정한다.
- 갱신 : 한 회의 처리가 끝나면 순번을 어떻게 갱신할지 정한다.
위의 코드는 i를 0부터 시작해서 9가 될 때까지 i를 1씩 증가시키며 총 10회 Debug.Log(i + " 번째 반복입니다.");를 반복 실행한다. 실행시키면 아래와 같이 Console창에 출력된다.
#while문
while문은 어떤 조건을 만족하는 동안 while문 블록을 반복 실행한다.
위와 같이 i가 9가 되면 코드 실행이 끝나게 되고, 결과는 아래와 같다.
#4 배열
배열은 동일한 타입의 변수를 하나의 변수로 다룰 수 있는 타입이다. 예를 들어 학생들의 신발 사이즈를 저장하는 변수를 만든다고 가정해보자.
만약 학생수가 5명이라면 위처럼 5개 변수를 설정하는 것은 별로 어렵지 않을 수 있지만, 학생이 100명이라면 위와 같이 변수를 100개 만들어야 하기에 이를 줄이기 위해 배열을 사용해 나열된 값들을 하나의 변수로 다룰 수 있다.
위처럼 배열을 이용할 때에는 배열의 순번은 0부터 시작한다. 지금은 5명이라 5의 배열의 크기를 할당해 주었지만 만약에 5명이 아니라 100이라면 100을 넣어주면 된다. 배열은 보통 for문과 함께 사용하기 좋다. 위의 코드를 배열을 이용하여 간단하게 만든다면 아래와 같은 코드를 작성해주면 된다.
만약 학생수가 더 늘어난다면 for문을 사용하는 것이 편하다는 것을 알 수 있다.
#MEMO
며칠간 여행을 다녀온다고 공부를 하지 못했었는데, 오늘부터 다시 열심히 공부하자...! 오늘로 C# 기초 문법은 살펴보았고, 내일부터는 유니티에서 게임 오브젝트를 다루는 내용을 배우게 될 것 같다. 게임을 만드는 그날까지 파이팅!
