구조체 및 생성자 (Structs & Constructors)

이 문서는 구조체와 생성자에 대한 기본 개념과 활용 방법을 설명합니다. 구조체는 여러 변수를 묶어 관리하는 데 유용하며, 다양한 데이터 타입을 포함할 수 있습니다. 구조체의 생성과 접근 방법, 생성자 함수에 대한 내용도 포함됩니다.

구조체란?

구조체는 여러 변수를 하나의 단위로 묶는 것입니다. 이러한 변수는 어떤 데이터 타입이든지 포함할 수 있으며, 구조체가 선언된 후 값을 읽거나 쓸 수 있습니다. 또한, 선언 후에도 변수를 추가할 수 있습니다.

구조체의 구문은 다음과 같습니다:

<변수> = { <변수>:<값>, <변수>:<값>, ... };

예제

구조체를 정의하고 사용하는 기본적인 예제는 다음과 같습니다:

mystruct = {a: 20, b: "Hello World"};

위 코드는 mystruct라는 변수 이름으로 구조체를 생성하고 값으로 초기화합니다.

비어있는 구조체 생성

아래와 같이 빈 구조체를 만들고 나중에 변수를 추가할 수 있습니다:

mystruct = {}; // 비어있는 구조체 생성
mystruct.newItem = "Some Text"; // 나중에 변수 추가

구조체의 변수 접근

구조체의 변수에 접근하려면 "점" 표기법을 사용합니다:

mystruct = {a: 20, b: "Hello World"};
mystring = mystruct.b + string(mystruct.a);

이 외에도 구조체는 중첩 구조체를 가질 수 있습니다:

mystruct = {
  a: {aa: "This is an example"},
  b: {bb: "And another one"}
};

var _str = mystruct.a.aa + " " + mystruct.b.bb;
show_debug_message(_str);

생성자 함수

구조체를 생성하는 함수를 정의할 수 있으며, 이를 위해 constructor 키워드를 사용해야 합니다. 생성자 함수의 예는 아래와 같습니다:

function Vector2(_x, _y) constructor {
  x = _x;
  y = _y;
}

이렇게 정의한 생성자는 new 키워드를 이용해 호출할 수 있습니다:

v2 = new Vector2(10, 10);

상속

구조체 생성자는 상속을 지원합니다. 부모 생성자에서 변수를 상속받을 수 있습니다:

function Vector3(_x, _y, _z):Vector2(_x, _y) constructor {
  z = _z;
}

이렇게 하면 Vector3Vector2의 변수 xy를 상속받습니다.

상속 예제

부모 생성자를 호출하면 특정 자식 생성자가 항상 같은 값을 전달할 수 있습니다.

function item(damage) constructor {
  my_damage = damage;
}

function basic_sword() : item(10) constructor {}

// 기본적인 검 인스턴스 생성
var _basic_sword = new basic_sword();
show_debug_message(_basic_sword.my_damage); // 출력: 10

구조체와 생성자의 차이점

  • 구조체는 변수를 묶어주는 자료구조이고, 생성자는 이러한 구조체를 생성하기 위한 함수입니다.
  • 구조체는 이벤트를 가지지 않으며, 오직 코드에서 호출되어야만 작동합니다.
  • 객체와 인스턴스는 구조체와 생성자와는 다르게, 이벤트를 통해 작동합니다.

기타 정보

  • 구조체의 데이터를 접근할 때는 with 문을 사용할 수 있습니다.
  • 변수를 삭제할 때는 delete 연산자를 사용하여 메모리에서 제거합니다.

예제 - 구조체 삭제

// 생성 이벤트
mystruct = {pos_x: x, pos_y: y, count: 1000};

// 정리 이벤트
delete mystruct;

구조체 출력 커스터마이징

구조체의 디버깅 정보를 커스터마이즈할 수 있습니다. 아래와 같이 toString 메서드를 정의할 수 있습니다:

mystruct = {
  a: 20,
  b: "Hello World",
  toString: function() {
    return "이 구조체는 " + b + ", " + string(a) + " 번 나타냅니다!";
  }
};

show_debug_message(mystruct); // 커스터마이즈된 메시지 출력

결론

구조체와 생성자에 대한 이해를 바탕으로, 다양한 데이터 구조를 효과적으로 관리하고 사용할 수 있습니다. 이 문서에서 제시한 예제와 사용법을 활용하여 보다 복잡한 데이터 구조를 효율적으로 설계할 수 있습니다.

더 많은 정보와 예제는 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