게임개발 캠프 10일차

IIRU·2026년 5월 28일

함수

함수컨벤션

  1. 파스칼 컨벤션
    첫글자는 대문자, 두 단어 이상 합쳐져 있을 때 각 단어의 첫글자는 대문자입니다.
  2. 함수 이름은 역할을 표현할 것
  3. 함수 하나는 한가지 기능만을 구현해야함.

함수를 사용하는 이유

  1. 반복 행동을 할 때 코드 수를 줄이기 위함.
  2. 가독성을 높이기 위함.
  3. 유지 보수가 편하도록 하기 위함.

함수 오버로딩

static void Func()
{

}
//반환형 하나만 다른건 안된다.
//static int Func()
//{
//
//}

static void Func(int damage)
{
    //순수하게 데미지만 입음.
}
static void Func(int damage, int type)
{
    //데미지를 받으면서 type 상태이상 걸림.
}
  1. 함수 매개변수만 다르게 지정하면 같은 함수명을 쓰더라고 쓸 수 있다.
  2. 반환형이 다른건 안된다.

함수 더보기

static void TestFunc(double d, double d2 = 5.0)
{

}

위 처럼 함수 매개변수에 기본 값을 줄 수 있다.
하지만, 기본 매개변수는 맨 뒤부터 채워야함.
값을 안넣으면 넣게 되는 값을 쓰게 되고 넣으면 넣게 되는 값을 쓴다.

Call by Value

매개변수 사용 시, 원본 값이 아니라 복사한 값을 사용
C#에서는 기본적으로 Call by Value를 사용한다.

Call by Reference

static void TestRef(ref int num)
{
    num++;
}
int i = 10;
Console.WriteLine(i);
TestRef(ref i);

위 처럼 ref를 자료형 앞에 붙여서 사용가능.
ref로 불러온 값은 원본 값에 영향을 준다.

Out

static void TestOut(out int num)
{
    num = 2;
}
int j;
TestOut(out j);
Console.WriteLine(j);

위 처럼 j 값을 out으로 수정할 수 있다.

In

static void TestIn(in int num)
{
    Console.WriteLine(num);
}
TestIn(in j);
  1. 읽기전용 - 값을 바꿀 수 없음.
  2. 구조체 처럼 큰 바이트를 쓰는 경우 num자리에 복사해서 가져오면 문제는 안생기지만 최적화에 문제가 있을 수도 그래서 출력만 하는 경우 그냥 in을 써라.

Null

이 메모리 칸에 값을 넣어주지 않았다.는 의미
null은 기본적으로 참조타입에만 가능.
p.hp 에서 . 은 (멤버) 접근 연산자.

if (p != null)
{
	null인지 아닌지 체크.
}
//?? 앞이 null이면 뒤에 값으로 대신함.
string name = null;
string name2 = name ?? "이름";

name = name ?? "별명";
name ??= "별명";

// int일수도 있고 null일 수도 있다.
int? a = null;
p?.hp = 1;

null인지 아닌지 체크할 경우가 많다.

NulL Reference 에러가 언제 생길까?

예시 )
1. 뱀서류 게임 제작중.
가장 가까운 적을 target 변수에 저장해 두었음.
target을 향해 투사체 발사
target이 사망. 현재 타켓은 null
이 상태에서 target의 위치로 투사체 발사 함수 실행
target.position을 찾으려고함. -> null reference 발생

profile
초보 개발자 블로그입니다!

0개의 댓글