게임/고도엔진 문법

17. [고도 엔진] 전역 변수처럼 쓰기: 싱글톤(Autoload) 설정 및 활용

밀감감 2026. 7. 5. 10:30
반응형

 

이 카테고리는 고도 엔진(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) 등록하기

스크립트를 만들었다면 고도 엔진이 이를 항상 메모리에 켜두도록 등록해야 합니다.

  1. 에디터 상단 메뉴에서 [프로젝트(Project)] -> [프로젝트 설정(Project Settings)]으로 들어갑니다.
  2. 상단 탭에서 [오토로드(Autoload)]를 선택합니다.
  3. 경로(Path) 칸에서 방금 만든 Global.gd 파일을 선택합니다.
  4. 추가(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 등 각기 다른 노드에서 플레이어 골드 정보를 참조할 때
반응형