반응형
이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다.
이번에는 게임 전체를 관통하는 데이터를 안전하게 관리하는 기술, '전역 변수처럼 쓰기: 싱글톤(Autoload) 설정 및 활용'입니다.
게임 개발을 하다 보면 스테이지 1에서 스테이지 2로 화면(씬)을 넘어가야 할 때가 있습니다. 이때 일반적인 노드에 저장된 플레이어의 점수나 골드는 씬이 바뀌면서 전부 지워지게 됩니다. 게임이 켜져 있는 동안 플레이어의 데이터나 게임 설정 값을 계속 유지하고, 언제 어디서든 쉽게 접근할 수 있게 해주는 마법의 공간이 바로 오토로드(Autoload, 싱글톤)입니다.
1. 전역 스크립트(Global.gd) 만들기
우선 게임의 전역 데이터를 담아둘 일반 스크립트 파일을 하나 생성합니다. 여기에는 모든 씬에서 공유할 변수와 함수를 적어줍니다.
GDScript
extends Node
# 게임 전체에서 공유할 전역 변수들
var player_gold: int = 1500
var current_stage: int = 1
# 전역에서 호출할 수 있는 공통 함수
func add_gold(amount: int):
player_gold += amount
print("골드 획득! 현재 골드: ", player_gold)
2. 고도 엔진 에디터에서 싱글톤(Autoload) 등록하기
스크립트를 만들었다면 고도 엔진이 이를 항상 메모리에 켜두도록 등록해야 합니다.
- 에디터 상단 메뉴에서 [프로젝트(Project)] -> [프로젝트 설정(Project Settings)]으로 들어갑니다.
- 상단 탭에서 [오토로드(Autoload)]를 선택합니다.
- 경로(Path) 칸에서 방금 만든 Global.gd 파일을 선택합니다.
- 추가(Add) 버튼을 누르면 목록에 등록되며, 기본적으로 활성화(Enabled) 상태가 됩니다.
이제 이 스크립트는 고도 엔진이 시작될 때 최상단 루트 노드에 자동으로 붙어, 게임이 꺼질 때까지 절대 파괴되지 않는 '싱글톤(Singleton)' 노드가 됩니다.
3. 실전 활용: 어디서나 자유롭게 접근하기
싱글톤으로 등록된 이름(기본적으로 파일 이름인 Global)은 프로젝트 내부의 어떤 스크립트에서든 파일 경로를 불러올 필요 없이 곧바로 호출하여 사용할 수 있습니다.
GDScript
extends Area2D
func _on_body_entered(body):
# 다른 씬, 다른 노드에서도 Global을 적으면 즉시 전역 데이터에 접근 가능!
Global.add_gold(100)
# 씬이 완전히 전환되어도 이 데이터는 안전하게 보존됩니다.
get_tree().change_scene_to_file("res://Stage2.tscn")
한눈에 보는 싱글톤(Autoload) 핵심 요약
| 개념 / 용어 | 기능 설명 | 게임 속 사용 예시 |
| 싱글톤 (Singleton) | 메모리에 단 하나의 실체(인스턴스)만 존재하도록 보장하는 디자인 패턴 | 게임 전체의 시스템 관리자, 데이터 저장소 등을 구현할 때 |
| 오토로드 (Autoload) | 고도 엔진에서 싱글톤을 구현하는 공식 기능 명칭 | Global.gd 같은 스크립트를 게임 시작 시 자동으로 루트 노드에 로드 |
| 데이터 유지 (Persistence) | 씬 전환(change_scene) 시에도 데이터가 파괴되지 않음 | 스테이지가 바뀌어도 플레이어의 소지 골드, 장비 아이템 목록을 유지할 때 |
| 전역 접근 (Global Access) | 경로 탐색($) 없이 이름만으로 즉시 접근 가능 | UI창, 몬스터, NPC 등 각기 다른 노드에서 플레이어 골드 정보를 참조할 때 |
반응형
'게임 > 고도엔진 문법' 카테고리의 다른 글
| 18. [고도 엔진] 비동기 처리의 마법: 코루틴(Coroutine)과 await 키워드 (0) | 2026.07.06 |
|---|---|
| 16. [고도 엔진] 노드 간 통신의 핵심! 시그널(Signal) 연결하고 발생시키기 (0) | 2026.07.04 |
| 15. [고도 엔진] 인스펙터 창에서 변수 조작하기: @export 활용 (0) | 2026.07.03 |