[유니티 C# 프로그래밍 기초] 1주차

바나나농장주인·2022년 7월 10일

이번에는 학교에서 진행하는 해커톤 프로젝트인 'GURU1-Unity'를 신청하여 이와 관련한 프로그래밍 공부를 해보고 있다.
유니티는 게임 개발에 쓰이는 프로그램으로 사용되는 언어는 C++ , C#이 있다.
여기서 내가 공부 할 언어는 C# 이다.

언어에 대해 알아보기에 앞서 유니티 자체에 대한 소개영상과 자료들을 많이 찾아보았다.
GUI, Graphics-Rendering, 물리 (Physics), 다중 플랫폼 (Multi Platform), 오디오, 인공지능 등으로 이루어져 있다고 한다.

쌩초보라 해커톤 프로젝트 활동이나 스터디를 할 때 참고 자료가 필수였다.

<<유니티 참고 유튜버들>>

-고박사의 유니티 노트
-Unity Korea (공식 계정)
-베르의 게임 개발 유튜브
-케이디
-골드메탈 **
-고라니
-설후개
-레트로

주변에 2학년 전공수업인 2D 프로그래밍을 수강하였던 동기들에게 물어보니 골드메탈님을 추천해줘서 스터디도 골드메탈님의 유니티 입문 강좌 코스로 선택하게 되었다.

그래도 다다익선..채널 하나만 참고하지 않고 필요한 요소가 있을 때마다 검색해서 융통성 있게 영상을 참고하면 좋을 것 같다!

스터디 1주차 참고 자료
-유니티 입문 강좌 B0 ~ 유니티 입문 강좌 B8
https://www.youtube.com/watch?v=7plGPXkmnxQ&list=PLO-mt5Iu5TeZa9dsqMVvXuSfVxwR_2AOz&index=1

-서울여자대학교 2022 여름방학 SW사관학교 Programming GURU 온라인 강의 1주차 (1차시~4차시)

학교에서도 필수 시청해야 되는 온라인 강의가 있는데 앞부분인 소개 영상 + 프로그래밍 기초 부분이 골드메탈님 입문 강좌와 겹치는 부분이 많아서 적절히 섞어 들었다 ㅎ

C# 스크립트 기초
스크립트는 많이 읽고 / 쓰고 / 말하는 것이 중요

  1. 스크립트 작성하기

프로젝트 생성 (2D /3D) -> 스크립트 작성 -> 게임 오브젝트 생성 -> 스크립트 적용

스크립트에 작성한 움직임을 오브젝트에 '연결' 해야 한다!

스크립트 파일을 더블클릭하면 자동으로 비주얼 스튜디오 프로그램이 실행된다.
비주얼 스튜디오 창이 뜨면 거기에다 코드를 입력하면 끝.

스크립트 파일을 열면 기본으로 담겨있는 코드이다.
다섯번째 줄에 public class 오른쪽에 나와있는 문구는 파일 이름이다! (클래스 이름을 정한다)

C#는 객체 지향 프로그램으로 클래스 단위로 관리가 된다.
**여기서 클래스 이름 = 스크립트 이름 중요!!

중괄호로 감싼 부분은 블록이라고 한다. (열기 + 닫기, 쌍으로 이용)

여기서 Start 메서드 (캐릭터를 표시하는 처리) 는 한 번만 실행, Update 메서드 (현재 캐릭터를 조금씩 오른쪽으로 옮기는 처리) 는 프레임마다 반복해서 실행된다.
Update 메서드는 캐릭터 표시 , 충돌 판정, 키 조작 등의 처리를 프레임마다 해야 한다!

  • Debug.Log("Console 창에 출력하는 문자열");

!세미콜론 주의!

  1. 변수

변수 : 데이터를 감싸고 있는 상자 (데이터를 메모리에 저장하는 장소)
데이터 형 이름 : 상자의 종류 (정수, 소수, 문자열, 불 값)

1) int 정수형 data
2) float 소수형 data
3) string 문자형 data
4) bool 논리형 data

변수명 : 상자 이름, 중복되지 않는 유일한 이름을 스스로 정해서 사용한다!

변수 선언하기 : 1. 선언 2. 초기화 3. 호출(사용)

연산
덧셈 (+)
뺄셈 (-)
곱셈 (*)
나눗셈 (/)

순서 : 1. 산술연산 계산 먼저 2. 대입

ex.
int answer;
answer = 1+2;
Debug.Log(answer);

1+2 =3 을 먼저 계산하고, 이를 answer에 대입한다. 즉 answer에 3을 대입.
출력 결과 : 3

int answer = 10;
answer += 5; // answer = answer + 5 , 점진적인 움직임에 많이 쓰인다.
Debug.Log(answer);

int answer = 10;
answer++; // answer+=1 , answer = answer + 1 1만큼 증가시킨다.
Debug.Log(answer);

*문자열과 숫자의 연결

  • 연산자나 += 연산자는 숫자+숫자 문자열+문자열 뿐만 아니라 숫자+문자열도 연결할 수 있다!

문자열+숫자 ->> 숫자는 문자열로 취급된다.

  1. 제어문 사용

4-1
if문 : 특정 조건이 맞을 때 스크립트 실행하고 싶다면 사용

if(조건식)
{ 처리
}

원하는 것은 처리하고, 원하지 않는 것은 처리하지 않는 원리로 작용된다.

  • 관계 연산자 (== , != , > , < , >= ,<=)

if(조건식)
{ 처리 A
}
else
{ 처리 B
}

** 두개 이상의 조건식을 처리할 때 사용

if(조건식 a)
{ 처리 A
}
else if(조건식 b)
{ 처리 B
}
...

else if (조건식 y)
{ 처리 Y
}
else
{ 처리 Z
}

변수 범위
지역 변수는 블럭 안에서만 사용 가능하다.
빠져나오는 순간, 제거 된다.

if 문 안에서 선언한 변수는 if 문 바깥에서는 사용할 수 없음 주의

4-2
for 문 : 반복문

for(변수 초기화; 반복 조건식; 변수 갱신)
{ 처리
}

ex.
for(int i = 0; i < 5; i++)
{
Debug.Log(i);
}
// 0으로 초기화, 조건식 i=0 일 때 참이므로 처리 -> i+1 (i 변수값을 1씩 증가)

for 문을 써서 처리를 다섯 번 반복한다.

변수 초기화 필수

int sum = 0;
for (int i = 1; i <= 10; i++)
{
sum += i;
}
Debug.Log(sum);

//1부터 10까지 더한 값을 출력하는 스크립트이다.

  1. 배열 (array)

int[] points = new int[5];
//상자 다섯 개를 준비하려고 한다. (배열에 필요한 상자 수 지정)

배열은 0번부터 카운팅
맨 앞 번호가 0이다.

요소 수 = 상자 수

  1. 메서드

메서드 (함수) : 분해한 각 처리 (블록)
인수 : 메서드로 건네는 값 (여러개 가능)
반환값 : 메서드에서 돌려받는 값 (오로지 하나)

ex.
int Add(int a, int b)
{
int c = a + b;
return c;
}

값을 반환하지 않는 메서드에는 void 를 지정한다.
(void = '반환값이 없음' 의미)

인수를 갖지 않는 메서드에는 메서드명 뒤에 붙는 괄호 안을 공백 처리한다.

ex.
void CallName(string name)
{
Debug.Log("Hello" + name);
}

void Start()
{
CallName("Tom");
}

  1. 클래스
  • 메서드 : 처리를 모아둔 것
  • 클래스 : 메서드 + 변수 모아 둔 것 ( 더 큰 범위 )

class 클래스명
{
멤버 변수 선언;
멤버 메서드 구현;
}

int형의 num 변수에는 숫자 대입
Player형의 myPlayer 변수에는 플레이어의 실체를 대입
Player myPlayer = newPlayer();

실체 = 인스턴스

00.xx
=> 00 클래스가 갖는 xx 메서드/변수

public/ private
private으로 선언한 것은 다른 클래스에서 호출할 수 없다.
((변경하지 마세요라는 의사 표시))

7-2
Vector 클래스

Vector3 클래스 :
3D 게임에서 사용. float 형의 x , y , z 값 세 개를 쓴다.

struct Vector3
{

public float x;
public float y;
public float z;

}

Vector2 클래스 :
2D 게임용. float 형의 x,y 값을 가짐.

좌표 -> 오브젝트가 (3,5) 에 배치되었다는 것을 뜻한다.
벡터 -> 현재 위치에서 'X 방향으로 3', 'Y 방향으로 5' 움직였다는 것을 뜻한다.

둘 다 쓰일 수 있지만 해석이 다름.

ex.
Vector2 playerPos = new Vector2(3.0f,4.0f);
playerPos.x += 8.0f;
playerPos.y += 5.0f;
Debug.Log(playerPos);

Vector 클래스는 가속도, 힘, 이동 속도와 같은 물리 수치로도 사용 가능하다.

C# 프로그래밍 기초 내용은 여기까지이고
게임 오브젝트 흐름, 키보드 마우스 이동 및 델타타임은 필기로 첨부할 예정이다.

profile
Unity / AndroidStudio / JAVA / C++ / BANANA

0개의 댓글