여러 매개변수 사용하기

C#에서 함수에 여러 값을 전달하는 방법을 학습합니다. 거리 계산, 플레이어 정보 출력 등의 실전 예제를 이해합니다.

여러 매개변수(variable)(parameter) 전달

함수(function)에 여러 개의 값을 전달할 수 있습니다. 게임에서 데미지 계산, 위치 이동, 아이템 생성 등 여러 정보가 필요할 때 사용합니다.

public class CombatSystem : MonoBehaviour
{
    // 데미지를 계산하는 함수 (기본 데미지, 무기 공격력, 크리티컬 여부)
    int CalculateDamage(int baseDamage, int weaponPower, bool isCritical)  
    {
        int totalDamage = baseDamage + weaponPower;
        
        if (isCritical)
        {
            totalDamage = totalDamage * 2;  // 크리티컬 시 2배 데미지
        }
        
        return totalDamage;
    }
}

사용 예시

void Start()
{
    // 일반 공격: 기본 10 + 무기 5 = 15 데미지
    int normalDamage = CalculateDamage(10, 5, false);
    Debug.Log("일반 데미지: " + normalDamage);  // 15 출력
    
    // 크리티컬 공격: (기본 10 + 무기 5) * 2 = 30 데미지
    int criticalDamage = CalculateDamage(10, 5, true);
    Debug.Log("크리티컬 데미지: " + criticalDamage);  // 30 출력
}
  • 동작 과정
    1. CalculateDamage(10, 5, false) 호출
    2. baseDamage = 10, weaponPower = 5, isCritical = false로 설정
    3. totalDamage = 10 + 5 = 15 계산
    4. 크리티컬이 아니므로 그대로 15 반환(return)

실전 활용

예시 1: 두 점 사이의 거리 계산 (Unity에서 자주 사용)

public class DistanceCalculator : MonoBehaviour
{
    // 두 점 사이의 거리를 계산하는 함수
    float CalculateDistance(float x1, float y1, float x2, float y2)
    {
        float dx = x2 - x1;  // x축 거리
        float dy = y2 - y1;  // y축 거리
        return Mathf.Sqrt(dx * dx + dy * dy);  // 피타고라스 정리
    }
    
    void Start()
    {
        // 플레이어 위치 (0, 0)와 적 위치 (3, 4) 사이의 거리
        float distance = CalculateDistance(0, 0, 3, 4);
        Debug.Log("거리: " + distance);  // 5.0 출력
    }
}

예시 2: 플레이어 정보 출력

public class PlayerUI : MonoBehaviour
{
    // 플레이어 정보를 화면에 표시
    void ShowPlayerInfo(string name, int level, int hp, int maxHp)
    {
        Debug.Log("=== 플레이어 정보 ===");
        Debug.Log("이름: " + name);
        Debug.Log("레벨: " + level);
        Debug.Log("체력: " + hp + " / " + maxHp);
    }
    
    void Start()
    {
        ShowPlayerInfo("용사", 10, 85, 100);
    }
}

예시 3: 아이템 생성 (Unity GameObject 생성)

public class ItemSpawner : MonoBehaviour
{
    public GameObject itemPrefab;  // Inspector에서 할당
    
    // 아이템을 특정 위치에 생성
    void SpawnItem(string itemName, float x, float y, float z, int quantity)
    {
        Vector3 position = new Vector3(x, y, z);
        GameObject newItem = Instantiate(itemPrefab, position, Quaternion.identity);
        newItem.name = itemName;
        
        Debug.Log(itemName + " " + quantity + "개를 (" + x + ", " + y + ", " + z + ")에 생성!");
    }
    
    void Start()
    {
        SpawnItem("검", 0, 1, 0, 1);
        SpawnItem("물약", 5, 1, 3, 3);
    }
}

예시 4: 데미지 계산 (여러 요소 고려)

public class DamageSystem : MonoBehaviour
{
    // 복잡한 데미지 계산
    int CalculateFinalDamage(int baseDamage, int weaponPower, int skillBonus, float multiplier)
    {
        int total = baseDamage + weaponPower + skillBonus;
        return Mathf.RoundToInt(total * multiplier);
    }
    
    void Start()
    {
        // 기본 20 + 무기 10 + 스킬 5 = 35, 1.5배 = 52 데미지
        int damage = CalculateFinalDamage(20, 10, 5, 1.5f);
        Debug.Log("최종 데미지: " + damage);
    }
}

← 목차로 돌아가기