값과 참조

이 문서에서는 GameMaker에서 변수를 생성할 때 값이 저장되는 데이터 타입 및 값과 참조의 차이에 대해 설명합니다. 또한 다양한 활용 및 응용 예제를 포함하였습니다.

1. 데이터 타입

GameMaker에서 변수를 만들면, 그 변수가 저장하는 값은 여러 데이터 타입 중 하나일 수 있습니다. 예를 들어: - 숫자는 Real 값 - 문자열은 String - 값의 목록은 Array 등입니다.

각 데이터 타입에 따라 변수의 값이 복사되거나 참조되는 방식이 다릅니다.

1.1. 값에 의해 전달되는 데이터 타입

  • Real
  • Boolean
  • int64 (부호 있는 64비트 정수)
  • String

1.2. 참조에 의해 전달되는 데이터 타입

  • Array
  • Struct
  • 하나의 Handle로 참조되는 모든 것 (예: 객체 인스턴스, 데이터 구조 등)

2. 값 복사

변수를 다른 변수에 할당할 때, 그 값은 일반적으로 메모리의 새로운 위치에 복사됩니다. 예를 들어:

a = 125;
b = a;

이 과정에서 Variable a는 값 125를 저장하며, 새로운 Variable ba의 값을 복사하여 메모리의 다른 위치에 저장합니다. 이로 인해 ab는 서로 독립적입니다.

예를 들어:

a = 1000;
show_debug_message(a);  // 출력: 1000
show_debug_message(b);   // 출력: 125

3. 참조 사용

변수가 참조 데이터 타입을 가지고 있을 때, 그 값이나 데이터는 복사되지 않고, 변수에 다른 변수를 할당하면 두 변수 모두 메모리의 같은 위치를 참조합니다. 예를 들어, 배열은 참조입니다:

c = [1, 2, 3, 4, 5];
d = c;  // c와 d는 같은 배열을 참조

이후에 cd를 통해 배열의 요소를 수정할 수 있습니다:

c[0] = 5;    // c의 0번째 요소를 5로 수정
d[1] = 4;    // d의 1번째 요소를 4로 수정
show_debug_message(c);  // 출력: [5, 4, 3, 4, 5]
show_debug_message(d);   // 출력: [5, 4, 3, 4, 5]

이처럼 cd는 같은 배열을 가리키고 있기 때문에, 한 변수에서의 변경 사항이 다른 변수에도 반영됩니다.

4. 값 전파와 참조 전파

변수를 함수에 전달할 때도 위의 규칙이 적용됩니다. 다음 예제를 참조하세요:

function try_to_modify_value(_value, _new_value) {
    _value = _new_value;  // _value의 값을 변경
}

function try_to_modify_array(_array, _new_value) {
    array_push(_array, _new_value);  // 배열에 새로운 값을 추가
}

var _val_orig = 48593;
try_to_modify_value(_val_orig, 75);  // 원본 값은 변경되지 않음
show_debug_message(_val_orig);  // 출력: 48593

var _array_orig = [1, 2, 3];
try_to_modify_array(_array_orig, 100);  // 원본 배열은 수정됨
show_debug_message(_array_orig);  // 출력: [1, 2, 3, 100]

5. 주의사항

GameMaker에서는 "값 전달" 데이터 타입에 대한 참조를 생성할 수 없지만, ref_create 함수는 디버그 오버레이에서만 사용할 수 있는 참조를 생성합니다.

활용 예제

예제 번호 설명 코드 예시
1 값 복사 방식을 확인 gml a = 5; b = a; show_debug_message(a); show_debug_message(b);
2 참조 방식 활용 gml c = [1, 2]; d = c; c[0] = 9; show_debug_message(d);
3 함수 내 값 전달 gml function test_val(v) { v = 10; } test_val(a); show_debug_message(a);
4 함수 내 배열 참조 gml function test_array(arr) { array_push(arr, 5); } test_array(c); show_debug_message(c);

이 문서는 GameMaker에서 값과 참조의 개념을 이해하고 활용하는 데 도움을 줄 것입니다.

Read more

기술 문서 해설 및 활용 예제

이 문서는 특정 기술에 대한 설명과 활용 방법을 다룹니다. 아래에서 내용을 쉽게 이해할 수 있도록 해설하고, 다양한 활용 및 응용 예제를 추가로 제공합니다. 기술 개요 이 기술은 게임 개발에서 자주 사용되는 기능으로, 특정 작업을 자동화하거나 효율적으로 처리하는 데 도움을 줍니다. 주로 게임의 로직을 구성하거나 사용자 인터페이스를 제어하는 데 사용됩니다. 주요

By 이재협/실장/시스템개발실/PHYSIA

키워드 설명서

이 문서는 특정 키워드에 대한 설명과 사용법을 제공합니다. 문법 (arguments); 인수 인수 이름 유형 설명 argument_name 인수에 대한 설명을 여기에 작성합니다. 반환값 (선택적 설명) 예제 code_example() { // 여기에 코드 예제를 설명합니다. } 코드 예제 설명 위의 코드 예제는 특정 기능을 수행하는 함수의 기본 구조를 보여줍니다. 이 함수는 인수를 받아들이고, 특정

By 이재협/실장/시스템개발실/PHYSIA

GameMaker 환경 설정 및 기능

이 문서에서는 GameMaker의 환경 설정 및 다양한 IDE 기능에 대한 정보를 제공합니다. 다음은 주요 항목들입니다: IDE 환경 설정 IDE(통합 개발 환경) 설정은 GameMaker의 전반적인 사용 경험을 조정하는 데 도움을 줍니다. 여기서 사용자는 개인의 필요에 맞게 다양한 옵션을 설정할 수 있습니다. 주요 설정 항목 설정 항목 설명 테마 IDE의 색상

By 이재협/실장/시스템개발실/PHYSIA

GameMaker IDE 설명서

GameMaker IDE는 게임을 만들고 소프트웨어에서 제공하는 모든 기능을 활용하는 주요 인터페이스입니다. 이 프로그램은 시작 화면부터 게임을 만들기 위해 사용하는 모든 편집기 창까지 포함되며, 매뉴얼과 다양한 튜토리얼에서 IDE라고 언급됩니다. IDE의 구성 요소 다음 섹션에서는 IDE에 대한 정보를 다룹니다: 1. 설정 및 기능 IDE의 설정 및 기능은 사용자가 게임 개발을 보다 효율적으로

By 이재협/실장/시스템개발실/PHYSIA