학습 매체 : 책
책이름 : 레트로의 유니티 게임 프로그래밍 에센스
저자 : 이제민
본 내용은 해당 강의 내용을 공부하면서 정리한 글입니다.
프로그래밍에서 함수는 미리 지정된 동작을 수행하는 코드 묶음이다. 함수를 사용하면 같은 동작을 수행하는 코드를 여러 번 작성할 필요가 없다.
물체를 움직이는 기능을 만들어 이를 나무 상자와 금속 상자에 적용해 움직여 보자.
체력 10을 소모하여 물체를 3미터 옮긴다고 하자.
물체 움직이기:
체력 10만큼 소모;
오브젝트를 3미터 옮기기;
앞에서 만든 기능을 나무 상자와 금속 상자를 대상으로 사용하자. 함수가 없다면 물체를 움직이는 코드를 반복해서 작성해야 한다.
나무 상자 움직이기:
체력 10만큼 소모;
오브젝트를 3미터 옮기기;
금속 상자 움직이기:
체력 10만큼 소모;
오브젝트를 3미터 옮기기;
물체를 옮길 때 효과음을 재생하는 처리를 추가
물체 움직이기:
체력 10만큼 소모;
오브젝트를 3미터 옮기기;
효과음 재생;
나무 상자 움직이기:
체력 10만큼 소모;
오브젝트를 3미터 옮기기;
효과음 재생;
금속 상자 움직이기:
체력 10만큼 소모;
오브젝트를 3미터 옮기기;
효과음 재생;
반복되는 코드를 함수로 대체하면 문제를 해결할 수 있다. 물체를 움직이는 기능에 관한 코드를 Move()라는 함수로 묶는다.
void Move()
{
체력 10만큼 소모;
오브젝트를 3미터 옮기기;
효과음 재생;
}
기존에 물체를 움직인 코드를 Move() 뒤에 두고 중괄호로 묶었다. 이렇게 묶인 영역은 Move() 함수의 바디(body)가 된다.
이렇게 하면 나무 상자와 금속 상자의 중복 코드를 다음과 같이 Move() 함수로 간결하게 대체할 수 있다.
나무 상자 움직이기:
Move();
금속 상자 움직이기:
Move();
나무를 옮길 때는 체력 10을 소모하여 물체를 3미터, 금속 상자를 옮길 때는 체력을 30을 소모하여 물체를 1미터 옮긴다고 하자.
이럴 때는 함수의 입력을 사용한다. Move()의 괄호 부분은 바깥에서 값을 줄 수 있는 입구이다. 이 입구를 사용해 값을 전달할 수 있도록 Move() 함수를 변경한다.
void Move(int hp, int distance)
{
체력 hp만큼 감소;
오브젝트를 distance미터 옮기기;
효과음 재생;
}
Move(hp, distance);
나무 상자 움직이기:
Move(10, 3);
금속 상자 움직이기:
Move(30, 1);
void GetRandomNumber()
{
int number = 0;
number = 임의의 숫자;
}
void GetRandomNumber()
{
int number = 0;
number = 임의의 숫자;
return number;
}
void GetRandomNumber()
int GetRandomNumber()
{
int number = 0;
number = 임의의 숫자;
return number;
}
int randomNumber = GetRandomNumber();
return이 없는 함수
- 모든 함수는 return 키워드를 가져야 한다. 단, void를 반환하는 함수는 컴퓨터가 암묵적으로 return을 만들어 사용하기 때문에 생략해도 된다.
함수는 입력을 받거나 받지 않을 수 있다.
함수는 결과를 반환하거나 반환하지 않을 수 있다.
C#에서는 (클래스의) 함수를 '메서드(method)'라고 부른다. 함수와 메서드는 혼용할 수 있지만, 통일성을 위해 이 책에서는 C# 함수를 모두 '메서드'로 통일한다.
다음 강의에서 계속~