매개변수(variable)(parameter)란?
함수(function)에 값을 전달해서 사용하는 방법입니다. 같은 함수(function)를 다양한 값으로 재사용할 수 있게 해줍니다. 게임에서 데미지 계산, 체력 회복, 아이템 사용 등에 활용됩니다.
public class Player : MonoBehaviour
{
public int currentHp = 100;
// 데미지를 받는 함수 (매개변수로 데미지 값 전달)
void TakeDamage(int damage) // damage를 받아서 사용
{
currentHp = currentHp - damage;
Debug.Log("데미지 " + damage + "를 받았습니다!");
if (currentHp <= 0)
{
Debug.Log("사망했습니다!");
}
}
// 체력을 회복하는 함수
void Heal(int healAmount) // healAmount를 받아서 사용
{
currentHp = currentHp + healAmount;
if (currentHp > 100)
{
currentHp = 100; // 최대 체력 제한
}
Debug.Log("체력 " + healAmount + " 회복!");
}
}
함수(function) 호출 시 값 전달
void Update()
{
// 적에게 공격당했을 때
if (Input.GetKeyDown(KeyCode.X))
{
TakeDamage(20); // 20 데미지를 전달
}
// 물약을 마셨을 때
if (Input.GetKeyDown(KeyCode.H))
{
Heal(30); // 30 체력을 전달
}
}
- 동작 과정
TakeDamage(20)호출- 함수(function) 안에서
damage매개변수(variable)(parameter)가 20이 됨 currentHp = currentHp - 20계산- 결과에 따라 메시지 출력
매개변수(variable)(parameter)의 장점
매개변수(variable)(parameter) 없이 (비효율적):
// 각 데미지마다 함수를 만들어야 함
void TakeDamage10() { currentHp -= 10; }
void TakeDamage20() { currentHp -= 20; }
void TakeDamage30() { currentHp -= 30; }
void TakeDamage50() { currentHp -= 50; }
// ... 계속 만들어야 함 (비효율적!)
매개변수(variable)(parameter) 사용 (효율적):
// 하나의 함수로 모든 데미지 처리 가능!
void TakeDamage(int damage)
{
currentHp -= damage;
Debug.Log("데미지 " + damage + " 받음!");
}
// 어떤 데미지든 사용 가능!
TakeDamage(10); // 10 데미지
TakeDamage(25); // 25 데미지
TakeDamage(100); // 100 데미지
게임 개발에서의 실제 활용:
public class CombatSystem : MonoBehaviour
{
// 다양한 적에게 데미지를 줄 수 있음
void AttackEnemy(GameObject enemy, int damage)
{
Enemy enemyScript = enemy.GetComponent<Enemy>();
enemyScript.TakeDamage(damage);
}
void Start()
{
GameObject enemy1 = GameObject.Find("Enemy1");
GameObject enemy2 = GameObject.Find("Enemy2");
AttackEnemy(enemy1, 20); // 첫 번째 적에게 20 데미지
AttackEnemy(enemy2, 35); // 두 번째 적에게 35 데미지
}
}