inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Godot Engine 으로 시작하는 첫 게임 개발

컵케이크 획득

컵케이크 획득 강의에서 궁금한 점입니다.

해결된 질문

107

kimhun0528

작성한 질문수 1

1

안녕하세요. 강의 잘 듣고있습니다.

강의 수강중에 궁금한 점이 생겨서 연락드렸습니다.
---------
# localnum.gd 스크립트 파일 속
extends Node

var 점수 = 0
이 과정을 진행하여, 점수라는 변수에 0 값을 대입했습니다.
----------
# cupcake.gd 스크립트 파일 속
extends Area2D

const 스크롤속도 = 200

func _process(delta: float) -> void:

# cupcake의 y축 포지션을 + 해줌으로써, 아래로 내려오도록 만든다.

position.y += 스크롤속도 * delta

# 다른 물체와 충돌이 발생했을 때 사용하는 함수

func onbody_entered(body) -> void:

if body.name == "Car":

print("자동차와 충돌함")

Localnum.점수 += 10

print(Localnum.점수)
처럼 코드를 작성하여, 컵케이크와 자동차가 충돌하였을 때,
1. "자동차와 충돌함" 이라는 글자 출력
2. localnum 스크립트 파일 속 점수 변수에 10을 더함
3. 점수 변수 숫자를 출력함
이 세가지 기능을 구현하는 점을 알았습니다.
---
제가 영상에서와는 다르게 스크립트 이름을 localnum으로 작성하였습니다.
그런데, 영상에서는 "전역 변수를 사용하기 위해서는 Global.점수"로 다른 스크립트의 변수 "점수" 를 cupcake 스크립트에서 사용할 수 있게 한다고 설명하셨는데,
제가 실습을 할때는 Global.점수 가 사용되지 않고, "Localnum.점수" 를 사용해야지만 점수 변수에 접근이 가능했습니다.
이는, '점수' 라는 변수를 어디서나 접근 가능한 '전역 변수'로서 사용한건가요?
아니면, Localnum 스크립트 파일 속 '점수' 변수를 사용한 것으로, 전역 변수를 사용한건 아닌지 궁금합니다.

작성하다보니 길어졌네요... 답변 주시면 감사하겠습니다!

godot-engine gdscript

답변 2

0

코드쉼터

안녕하세요. 용기있게 질문 남겨 주셔서 감사합니다.

고도에서 사용하는 전역 변수는 일반적인 프로그래밍 언어와는 다르게

프로젝트 설정 -> 자동 로드 에서만 추가할 수 있도록 되어있습니다.

이름이 자동 로드인 이유는 게임이 시작될 때 이곳에 등록된 스크립트가 부착될 노드를 자동으로(동적으로) 만들어 로드하기 때문입니다.

여기서 전역 변수에 체크 박스가 활성화 되어 있다면 이 스크립트 내에 있는 변수들이 프로젝트 내 모든 곳에서 접근 가능하도록 전역으로 열리게 됩니다.

또한 이 스크립트에 접근하기 위한 노드 "이름" 을 마음대로 지정할 수 있습니다.

(이름을 변경하지 않으셨다면 기본값은 앞글자만 대문자로 스크립트 파일명을 따라갑니다.)

강의에서는 "Global" 이라는 이름으로 추가했기 때문에 "Global.점수" 로 점수 변수에 접근이 가능한 것입니다.

만약 이 이름을 "Localnum" 으로 지정하셨다면 "Localnum.점수" 로 접근 가능한 것이 맞습니다.

감사합니다.

 

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. kimhun0528님, 질문 주셔서 감사합니다.

질문해주신 내용은 Godot Engine의 스크립트 내에서 변수의 사용 범위와 관련된 것 같습니다. 전역 변수와 일반적인 스크립트 변수의 차이점을 이해하는 것은 코드를 명확하게 작성하는 데 큰 도움이 됩니다.

  1. 전역 변수(Global Variable): 이는 프로젝트 전반에서 접근 가능한 변수입니다. 전역 변수를 사용하면 여러 스크립트에서 동일한 데이터를 공유할 수 있습니다. Global.점수와 같은 접근 방식은 이러한 전역 변수 사용을 가리킬 때 자주 사용됩니다.

  2. 일반 스크립트 변수: 이는 특정 스크립트 내에서만 유효하며, 그 스크립트가 인스턴스화될 때마다 초기화됩니다. Localnum.점수는 아마도 Localnum 스크립트에서 정의된 변수일 것입니다. 이는 그 스크립트 파일 내에서만 사용하는 변수를 의미하며, 전역 변수로 사용되지 않습니다.

따라서, Localnum.점수로 변수를 사용할 때 이는 해당 스크립트 내의 변수로서 사용된 것입니다. 전역 변수로 설정되지 않았다면 다른 스크립트에서는 직접 접근이 불가능합니다.

관련된 답변과 토론을 참고하고 싶으시다면 다음의 링크를 확인해보세요:
- Godot의 전역 변수 사용 방법과 사례

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이 오류는 무슨 오류일까요?

0

44

1

강의 내용과 제 실습이 다릅니다.

0

37

1

강의 내용과 제 실습이 다름

0

45

1

54.(심화) 보스 구현(2) -state Machine

0

71

2

타일맵 강좌부분에서 경고메시지가 나와서 질문드립니다

0

59

1

21. Dictionary 활용 저장&로드

0

90

2

66강. INPUT 관리

0

62

2

31강 질문

0

66

2

69번 강의에서 에러 발생 보고

0

79

2

노드의 내장 시그널 이용 관련 문의

0

79

3

godot 학습방법에 대해서

0

51

1

46. 상속씬(3) 수업 질문

0

75

2

타이머가 적용이 되지않습니다.

1

83

2

영상이 보이지 않습니다.

1

89

1

error

0

61

2

점수표시에 캔바스레이어 없어도 잘되던데

0

125

2

디스코드 서버는 어떻게...^^;;

1

504

3

장애물 생성 과제 압축파일이 이상해요.

1

219

2

클래스 생성 수업 연습 중 delta 오류

1

230

1

ParallaBackground로 무한배경스크롤 시에 영역 마스킹 방법이 궁금합니다.

1

258

2

뷰포트 툴바 세팅방법이나 버전 추천

1

268

2

시동켜기 함수를 오버라이딩 후에 트럭개체 함수 실행시 오버라이딩 되지 않음.

1

262

3

자동차가 표시되지 않습니다.

1

292

2

컵케이크 지나갈때 점수표시가 안됩니다ㅠㅠ

1

201

1