함수 기초

C#의 함수 기초를 학습합니다. 함수를 만들고 호출하여 코드를 재사용하는 효율적인 방법을 이해합니다.

함수(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) 하나만 테스트)

← 목차로 돌아가기