본문 바로가기
책으로 공부하기/유니티 교과서

[유니티교과서] 7. 메서드

by 개발자 슈니 2022. 11. 11.
728x90
반응형

메서드

지금까지는 Start 메서드 안에 모든 처리를 작성했었다. 그러나 처리가 길어지면 읽기도 힘들고 디버그도 어려워 문제가 발생할 수 있따. 이러한 문제를 해결하기 위해 길어진 처리를 의미가 있는 처리 블록으로 분해하고 이름을 붵이는 구조를 만드는데, 이렇게 분해한 각 처리를 메서드(또는 함수)라고 한다.

 

메서드는 처리를 기능 단위로 묶는 역할 외에도 메서드에 값을 전달해서 계산하거나 계산 결과를 돌려받을 수 있도록 하는 역할을 한다. 메서드로 건네는 값을 인수, 메서드에서 돌려받는 값을 반환값이라고 한다. 인수는 여러 개 건넬 수 있지만 반환값은 한 개로 정해져 있다.

 

메서드 작성 방법은 아래와 같다. 반환값의 데이터 형에는 호출자의 메서드로 반환하는 값의 데이터 형을 지정한다. 지정할 데이터 형은 변수의 데이터 형과 같다. 값을 반환하지 않는 메서드에는 void를 지정한다. void란 '반환값이 없음'을 의미한다. 인수는 호출자의 메서드에서 받은 값이다. 메서드는 인수 값을 사용해서 처리를 실행한다. 인수를 갖지 않는 메서드도 있는데 이때는 메서드명 뒤에 붙는 괄호 안을 공백으로 비운다.

// 메서드 작성 방법
반환값의 데이터 형 메서드명(데이터 형 인수, 데이터 형 인수···)
{
	메서드 처리;
    return 반환값;
}

 

작성한 메서드를 호출하는 방법은 아래와 같다. 호출하는 메서드명에 이어 괄호 안에 전달하는 인수를 기술한다. 인수가 여러 개면 쉼표(,)로 구분한다.

// 메서드 호출 방법
메서드명(인수, 인수 ···);

 

인수도 반환값도 없는 메서드를 살펴보자. 먼저 콘솔창에 Hello를 출력하는 SayHello 메서드를 만든다.

콘솔 창에 Hello를 출력하는 메서드

SayHello 메서드를 사용할 위치는 Start 메서드를 벗어나더라도 Test 클래스의 중괄호 안(7번 줄~28번 줄)이라면 어디든 상관없다. 여기서 작성한 SayHello 메서드는 Start 메서드가 Update 메서드에서 호출될 때까지는 처리가 실행되지 않는다. 작성한 메서드는 호출해서 사용한다는 것을 꼭 기억하자.

 

 

다음 예제는 인수가 있는 메서드를 살펴보자. 앞에서 작성한 SayHello 메서드와 비슷하지만 이번에는 Hello에 이어 인수에 전달한 문자열을 출력한다.

인수를 출력하는 메서드

25번 줄에서 인수를 지정하지 않고 CallName();으로 메서드를 호출하면 오류가 발생한다. 기본적으로 인수 수는 호출되는 쪽과 호출하는 쪽이 일치해야 한다.

 

 

마지막으로 인수와 반환값이 모두 있는 메서드를 살펴보자. 이번 예제는 인수로 변수를 두 개 받고, 두 변수의 합계를 반환하는 Add 메서드이다.

값을 두 개 받아 합계를 반환하는 메서드

메서드를 호출하는 쪽에서는 메서드명에 이어 인수를 두 개(2와 3) 전달한다. 메서드 호출과 동시에 a와 b 변수에는 각각 2와 3이 대입된다. a와 b 변수에는 메서드를 호출하는 곳에서 지정한 순서대로 값이 대입된다. 따라서 Add(2, 3)이 아닌 Add(3, 2)를 쓰면 a 변수에 3이 대입되고 b 변수에 2가 대입된다.

 

메서드에서는 a와 b 변수를 합한 값을 c 변수에 대입하고 리턴 문을 사용해서 합계를 호출한 곳으로 반환한다. 메서드를 실행한 후에는 메서드의 호출 부분이 반환값으로 바뀌는 형태이다. Add(2, 3) 부분이 반환값 c 값으로 바뀌기 때문에 answer = Add(2, 3);은 answer = c;이 되고, answer c 값이 대입된다.

728x90
반응형

댓글