프로젝트해요/게임_개발

[Unity] #4. C# 스크립트(3)_메서드&클래스

yenas0 2023. 6. 30. 03:02
반응형

 

 

 

메서드

 

: 스크립트가 끝없이 길어질 때, 길어진 처리를 의미가 있는 처리 블록으로 분해하고 이름을 붙이는 구조를 만드는데, 이렇게 분해한 각 처리이다. 함수라고도 칭한다.

 

처리를 기능 단위로 묶는 역할 외에도 메서드에 값을 전달해서 계산하거나 계산 결과를 돌려받을 수 있도록 하는 역할을 한다.

 

메서드로 건네는 값은 인수(파라미터), 메서드에서 돌려받는 값을 반환값(리턴)이라고 한다.

 

인수는 여러 개 건넬 수 있지만 반환값은 한개로 정해져 있다.

 

 

 

 

메서드 만들기

 

반환값의 데이터형  메서드명(인수, 인수...)

{

    연산

    반환값

}
int  Add(int a, int b)

{

    int c = a + b;

    return c;

}

 

 

 

 

 

-반환값의 데이터 형에는 호출자의 메서드로 반환하는 값의 데이터 형을 지정한다.

-값을 반환하지 않는 메서드에는 void를 지정한다.

-인수는 호출자의 메서드에서 받은 값이다.

-인수를 갖지 않는메서드는 메서드명 뒤에 붙는 괄호안을 공백으로 비운다.

 

 

 

 

 

메서드 호출하기

메서드명(인수, 인수 ...);

 

 

 

 

 

**메서드 실습

 

 

 

#1번

값을 반환하지 않는 가장 간단한 형태의 메서드를 실행해보자

위와같이 작성하고 Unity를 실행하면 콘솔창에 Hello가 출력된다.

 

 

 

 

 

 

#2번

인수로 string 문자열을 받는 메서드를 작성해보자.

 

 

 

 

 

 

#3번

인수로 변수를 두 개 받고, 두 변수의 합계를 반환하는 메서드를 작성해보자.

 

 

위와 같이 2와 3을 더한 값인 5가 출력된다.

 

 

 

 

 

 

 

클래스

 

메서드는 처리를 모아둔 것이라면, 클래스는 메서드와 변수를 모아 둔 것이다.

 

유니티로 게임을 만들기 위해서는 플레이어, 적, 무기, 아이템 등 물체마다 그 움직임을 정의하는 스크립트를 작성해야 한다.

이때는 '처리 단위'보다는  '물건 단위'로 스크립트를 작성하는 것이 편리하다.

 

 

 

 

 

클래스 사용하기

class 클래스명

{

    멤버 변수 선언;

    멤버 메서드 구현;

}

 

 

 

 

클래스에서 사용한 변수를 멤버 변수, 클래스에서 사용한 메서드를 멤버 메서드라고 한다.

00.xx가 나오면 00클래스가 갖는 xx메서드(또는 변수)를 사용한다는 의미이다.

 

 

 

접근 수식자

 

접근 수식자를 생략하면 private으로 간주되므로 공개하고 싶은 변수와 메서드가 있다면 public 수식자를 붙이는 것이 좋다

접근 수식자 접근 가능 클래스
public 모든 클래스에서 접근 가능
protected 같은 클래스와 해당 클래스의 서브클래스에서 접근 가능
private 같은 클래스에서만 접근 가능

 

 

 

 

 

**클래스 실습

 

기존까지 사용한 test클래스가 아닌 외부에 새로운 클래스를 만들어야 한다.

 

 

 

 

벡터클래스

 

Vector

: 3D 게임을 만들려면 공간에서 오브젝트를 어디에 둘지, 어느 쪽으로 옮길지, 어디로 힘을 보낼지 등을 정해야 하므로 float형의 x, y, z값 세 개를 쓴다.

 

C#에는 이러한 값을 하나로 합쳐 다룰 수 있는 Vector3 클래스(정확히는 구조체5라고 한다)가 준비되어 있다.

반면 2D 게임용에는 float형의 x, y값을 갖는 Vector2 클래스가 있다.

 

 

 

 

Vector3 클래스의 구조

struct Vector3

{

    public float x;

    public float y;

    public float z;



    // Vector용 멤버 메서드가 아래에 이어진다.

}

 

 

 

 

 

 

**Vector 클래스 실습

 

#1번

 

 

 

#2번

 

 

 

magnitude는 벡터의 길이를 구하는 기능이다.

즉 이 문제에서는 (6,4)벡터의 길이를 구한다.

(=밑변이 6이고 높이가 4인 직각삼각형의 빗변의 길이)

 

 

 

 

 

 


메서드와 클래스가 생기다 보니 실습하면서 중괄호를 잘못보는 경우가 많았다. 유의해야겠다는 생각도 들었고,,

그리고 C언의 함수 개념과 비슷하다고 생각했는데 C언어와는 달리 함수를 미리 선언하지 않고 나중에 선언하여도 사용할 수 있다는 점이 장점인 것 같다. 

반응형