덧셈, 뺄셈, 곱셈, 나눗셈 함수(function)
게임에서 점수 계산, 체력 회복, 데미지 계산 등에 사칙연산이 필요합니다.
public class GameCalculator : MonoBehaviour
{
// 체력 회복 (덧셈)
int HealPlayer(int currentHp, int healAmount)
{
return currentHp + healAmount; // 더하기
}
// 데미지 받기 (뺄셈)
int TakeDamage(int currentHp, int damage)
{
return currentHp - damage; // 빼기
}
// 경험치 획득 (곱셈 - 보너스 배율)
int GetExperienceWithBonus(int baseExp, int bonusMultiplier)
{
return baseExp * bonusMultiplier; // 곱하기
}
// 체력 비율 계산 (나눗셈)
float GetHealthPercentage(int currentHp, int maxHp)
{
return (float)currentHp / maxHp; // 나누기 (float로 변환 필요)
}
}
사용 예시
public class Player : MonoBehaviour
{
public int hp = 100;
public int maxHp = 100;
public int exp = 0;
void Start()
{
// 체력 회복
hp = HealPlayer(hp, 30); // 100 + 30 = 130
Debug.Log("체력: " + hp);
// 데미지 받기
hp = TakeDamage(hp, 25); // 130 - 25 = 105
Debug.Log("체력: " + hp);
// 경험치 보너스 (2배)
exp = GetExperienceWithBonus(50, 2); // 50 * 2 = 100
Debug.Log("경험치: " + exp);
// 체력 비율 계산
float healthPercent = GetHealthPercentage(hp, maxHp); // 105 / 100 = 1.05
Debug.Log("체력 비율: " + (healthPercent * 100) + "%");
}
}
실제 게임 활용:
public class CombatSystem : MonoBehaviour
{
// 데미지 계산 (여러 요소 결합)
int CalculateDamage(int baseDamage, int weaponPower, float criticalMultiplier)
{
int total = baseDamage + weaponPower; // 덧셈
return Mathf.RoundToInt(total * criticalMultiplier); // 곱셈
}
// 체력 회복 (최대치 제한)
int HealWithLimit(int currentHp, int healAmount, int maxHp)
{
int newHp = currentHp + healAmount; // 덧셈
if (newHp > maxHp)
{
return maxHp; // 최대치 제한
}
return newHp;
}
}
함수(function) 네이밍 팁
함수(function) 이름만 봐도 무엇을 하는지 알 수 있게 지어야 합니다. Unity 게임 개발에서는 동작을 명확히 표현하는 이름을 사용합니다.
-
✅ 좋은 예:
CalculateDamage- 데미지 계산GetPlayerHP- 플레이어 체력 가져오기HealPlayer- 플레이어 회복SpawnEnemy- 적 생성CheckCollision- 충돌 확인
-
❌ 나쁜 예:
func1,test,abc- 무엇을 하는지 알 수 없음DoSomething- 너무 모호함Calc- 축약어는 피하기
네이밍 규칙:
- 동사로 시작 (Calculate, Get, Set, Check, Spawn 등)
- 명확하고 구체적인 이름 사용
- 너무 길지 않게 (20자 이내 권장)
함수(function) 작성 체크리스트(list)
-
함수(function) 이름: 기능을 명확히 표현하는가?
- 예:
CalculateDamage✅ vsCalc❌
- 예:
-
매개변수(variable)(parameter): 필요한 값들을 모두 받는가?
- 예:
HealPlayer(int currentHp, int healAmount)✅ - 예:
HealPlayer()- 얼마나 회복할지 모름 ❌
- 예:
-
반환(return)값(return value): 결과를 제대로 반환(return)하는가?
- 예:
int GetPlayerLevel() { return level; }✅ - 예:
void GetPlayerLevel() { Debug.Log(level); }- 반환(return) 안 함 ❌
- 예:
-
재사용성: 다른 곳에서도 사용할 수 있는가?
- 예:
CalculateDamage(int base, int weapon)- 다양한 무기에 사용 가능 ✅ - 예:
CalculateSwordDamage()- 검에만 사용 가능 ❌
- 예:
게임 개발 추가 체크리스트(list): 5. 에러(error) 처리: 잘못된 입력에 대한 처리가 있는가? (0으로 나누기 등) 6. Unity 연동: Unity 컴포넌트와 잘 연동되는가? 7. 성능: 불필요한 계산이 없는가?