여러 매개변수(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 출력
}
- 동작 과정
CalculateDamage(10, 5, false)호출baseDamage = 10,weaponPower = 5,isCritical = false로 설정totalDamage = 10 + 5 = 15계산- 크리티컬이 아니므로 그대로 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);
}
}