강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của kimhun0528
kimhun0528

câu hỏi đã được viết

Phát triển trò chơi đầu tiên bắt đầu với Godot Engine

Có cupcake

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

Đã giải quyết

Viết

·

82

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-enginegdscript

Câu trả lời 2

0

serenecode님의 프로필 이미지
serenecode
Người chia sẻ kiến thức

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

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

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

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

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

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

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

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

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

감사합니다.

 

0

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

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

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

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

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

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

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

Hình ảnh hồ sơ của kimhun0528
kimhun0528

câu hỏi đã được viết

Đặt câu hỏi