본문 바로가기
GameMaker강좌[GMS2]/GMS2기초강좌

[게임메이커 강좌-기초][GMS2] Struct : 구조체

by 타락카얀 2021. 3. 28.
728x90

 

 

GAME MAKER 강좌

 

 

KAYAN

 

 

 

 

◈ Struct (구조체)

 

 

구조체(Struct)는 간단히 말해서 다른 변수들의 모음을 보유하는 변수입니다.

구조체가 보유하는 변수들은 데이터 유형일 수 있고, 이러한 변수는 구조체가 정의된 후에 읽고

쓸 수 있습니다.

 

구조체의 기본 구조는 아래와 같습니다.

 


   <구조체변수> = {
         <변수> : <값>,
         <변수> : <값>,
         ...
         }

 

예를 들면 아래와 같이 정의 할 수 있습니다.

 

예)


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

 

이것은 mystruct 구조체에 a와 b의 값을 정의하여 포함 시킵니다.

 

조금 더 나아가 구조체에 사용자 함수를 비롯한 다양한 변수들을 정의할 수도 있습니다.

 

예)


   mystruct = {
      a : 10,
      b : "Hello World",
      c : irandom(5),
      d : x + 50,
      e : function( a, b )//사용자 함수 생성
          {
          return a + b;
          },
      f : [ 10, 20, 30, 40, 50 ] //배열
      }

 

구조체를 정의하는 방법을 알아봤다면 이제 정의된 구조체의 특정 변수를 호출 해야겠지요.

정의된 구조체 호출은 아래와 같이 할 수 있습니다.

 

예)


   text = mystruct.b + string(mystruct.a);

 

이것은 mystruct 구조체의 변수 b와 a를 문자열로 더하는 것입니다.

b값이 "Hello World"이고, a값이 "10"이므로 결과는 "Hello World10"이 됩니다.

 

그리고 구조체 내에 또 다른 구조체를 추가 생성할 수 있습니다.

 

예)


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

 

위와 같을 경우 구조체 내의 구조체 호출은 다음과 같이 할 수 있습니다.

 


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

 

구조체가 더 이상 필요하지 않은 경우 Clean Up 이벤트에서 delete 연산자를 사용하여

메모리에서 제거 할 수도 있습니다.

 

   ◎ delete 구조체이름

 


   예) mystruct 를 제거하는 경우Clean Up 이벤트에서 delete 연산자를 사용해 제거
   //Clean Up 이벤트


   delete mystruct;

 

인스턴스의 Clean Up 이벤트를 사용하여 가비지 수집기(Garbage collector)에 구조체가 삭제 될

것임을 명시적으로 알립니다.

 

※ [참고] : 가비지 수집기(Garbage collector)는 게임 코드의 일부인 자동화된 도구이며 명시적으로

제거 할 필요없이 더 이상 코드에서 참조되지 않을 때 메모리에서 특정 항목 (예 : 배열 및 구조체)을

제거하는데 사용됩니다.

 

다만 구조체가 더 이상 코드에서 사용되지 않는 경우 가비지 수집기가 다음 게임 단계에서 정리 작업을

자동으로 수행하기 때문에 반드시 필요한 작업은 아닙니다.

 

 

 

 

 

 

300x250

댓글