함수(function)란?
함수(function)는 특정 작업을 수행하는 코드 덩어리입니다. 같은 코드를 여러 번 반복하지 않고, 함수(function)를 만들어서 재사용할 수 있습니다. Unity에서 플레이어 공격, 적 처치, 아이템 획득 등의 동작을 함수(function)로 만들 수 있습니다.
함수(function) 만들기
public class Player : MonoBehaviour
{
void AttackEnemy()
{
Debug.Log("적을 공격합니다!");
DealDamage(10);
PlayAttackSound();
UpdateCombatUI();
}
void DealDamage(int damage) { }
void PlayAttackSound() { }
void UpdateCombatUI() { }
}
- 구성 요소
void: 이 함수(function)는 값을 반환(return)하지 않는다는 의미 (작업만 수행)AttackEnemy: 함수(function) 이름 (동작을 설명하는 명확한 이름 사용){ }: 함수(function) 안에 실행할 코드를 넣음
함수(function) 호출하기
public class Player : MonoBehaviour
{
void Update()
{
// 마우스 왼쪽 버튼을 누르면 공격
if (Input.GetMouseButtonDown(0))
{
AttackEnemy(); // 함수 실행
}
// 스페이스바를 누르면 점프
if (Input.GetKeyDown(KeyCode.Space))
{
Jump(); // 다른 함수 실행
}
}
void AttackEnemy()
{
Debug.Log("적을 공격합니다!");
// 공격 로직...
}
void Jump()
{
Debug.Log("점프!");
// 점프 로직...
}
}
- 장점
- 같은 코드를 여러 번 쓸 필요 없음 (공격 로직을 여러 곳에서 재사용)
- 나중에 수정할 때 한 곳만 수정하면 됨 (공격 방식 변경 시 함수(function) 하나만 수정)
- 코드가 깔끔하고 읽기 쉬움 (
AttackEnemy()가 무엇을 하는지 명확) - 버그 수정이 쉬움 (한 곳만 고치면 모든 곳에 적용)
함수(function)를 사용하는 이유
함수(function) 없이 (비효율적):
void Update()
{
if (Input.GetMouseButtonDown(0))
{
// 공격 로직을 매번 반복 작성
Debug.Log("적을 공격합니다!");
DealDamage(10);
PlayAttackSound();
UpdateCombatUI();
// 또 다른 곳에서 공격할 때도 똑같이 작성
Debug.Log("적을 공격합니다!");
DealDamage(10);
PlayAttackSound();
UpdateCombatUI();
}
}
함수(function) 사용 (효율적):
void Update()
{
if (Input.GetMouseButtonDown(0))
{
AttackEnemy(); // 간단하게 함수 호출
}
if (Input.GetKeyDown(KeyCode.Q))
{
AttackEnemy(); // 같은 함수 재사용
}
}
void AttackEnemy()
{
Debug.Log("적을 공격합니다!");
DealDamage(10);
PlayAttackSound();
UpdateCombatUI();
}
게임 개발에서의 실제 이점:
- 공격 로직을 변경할 때
AttackEnemy()함수(function) 하나만 수정하면 모든 곳에 적용 - 코드가 읽기 쉬워서 다른 개발자도 이해하기 쉬움
- 버그가 발생했을 때 한 곳만 수정하면 해결
- 테스트하기 쉬움 (함수(function) 하나만 테스트)