지난 강의에 이어, 이번에는 변수의 ‘사용 범위’라는 개념에 대해 설명드리겠습니다.
변수의 선언과 접근
변수는 그것이 선언된 중괄호 {} 범위 안에서만 접근이 가능합니다.
예를 들어, ‘int myAge = 10;’ 이라는 변수를 다음과 같이 클래스 내부, 다른 함수들 바깥 부분에 선언하면, 이 변수는 클래스 내부 어느 곳에서든 접근이 가능합니다. (붉은 색으로 표시한 영역 안 어디에서나 접근 가능하다는 이야기입니다.)
예를 들어 ‘Start’ 함수와 ‘Update’ 함수 내에서도 위의 변수를 사용할 수 있습니다.
다른 예시로, 이번에는 ‘myAge’ 변수를 ‘Start’ 함수 안에서 선언해 보겠습니다.
이 경우 ‘myAge’ 변수의 사용 범위는 ‘Start’ 함수에 국한됩니다. 따라서, ‘Start’ 함수 바로 아래에서 ‘print(myAge);’를 사용하는 것은 문제가 없지만, ‘Start’ 함수를 벗어난 다른 곳에서 같은 변수를 사용하려고 하면 에러가 발생합니다.
이는 ‘myAge’가 ‘Start’ 함수의 중괄호 바깥부분이 아니라 안쪽에서 선언되었기 때문입니다. 다시 말해, 이 중괄호 바깥에서는 이 변수의 존재를 알 방법이 없는 것입니다.\
private 변수와 local 변수
이제 ‘private’ 변수와 ‘local’ 변수의 차이를 살펴보겠습니다.
private 변수
클래스 안쪽, 그리고 다른 함수들 바깥 쪽에 선언된 ‘myAge’를 우리는 ‘private’ 변수라고 정의합니다.
이 변수는 클래스를 구성하는 가장 큰 중괄호 안에서 선언되어 클래스 안 어디에서나 접근할 수 있습니다. 이렇게 클래스 내부에서만 사용할 수 있는 변수를 ‘private’ 변수라고 하고, 이를 명확하게 하기 위해 변수 선언 맨 앞에 ‘private’ 이라는 키워드를 붙이기도 합니다.
이 private 이라는 키워드를 붙이지 않아도 상관은 없습니다. 게임 개발팀에 따라 이 키워드를 붙이는 것을 원칙으로 하기도 하고, 안 붙이는 것을 원칙으로 하기도 합니다. 여러분이 편한 쪽으로 하시면 됩니다. 이 때 일관성을 유지하시는 것이 중요합니다. (붙이려면 다 붙이고, 안 붙이려면 다 안 붙이는 것이 좋습니다.)
local 변수
이번에는 ‘local’ 변수 개념에 대해 알아 보겠습니다.
다음과 같이 ‘Start’ 함수 안에 선언된 ‘yourAge’는 ‘local’ 변수라고 지칭합니다.
이 변수는 ‘Start’ 함수의 중괄호 내부에서만 사용 가능하며, 범위를 벗어나면 사용할 수 없습니다.
이처럼 좁은 범위 안에서만 사용할 수 있는 변수를 ‘local’ 변수라고 부릅니다. 다음 이미지에서 ‘Update’ 함수 안의 ‘herAge’ 변수도 ‘local’ 변수입니다.
참고로 private 변수와 달리 local 변수에는 따로 키워드를 붙이지 않습니다.
요약하자면, ‘private’ 변수는 클래스 내부 어디서든 접근 가능한 변수를 말하며, ‘local’ 변수는 함수나 조건문 등 특정 중괄호 영역 안에서만 사용 가능한 변수를 의미합니다. 각 변수는 자신이 선언된 범위의 중괄호 안에서만 접근할 수 있다는 점만 잘 기억해 두시기 바랍니다.