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

[게임메이커 강좌-기초][GMS2]문자열 조합으로 리소스 참조

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

 

 

GAME MAKER 강좌

 

 

KAYAN

 

 

 

 

 

◈ 문자열 조합으로 리소스 참조

 

 

아래와 같이 문자열+ 숫자 또는 문자열+ 문자열처럼 문자열 조합으로 리소스를 참조하는

방법에 대해 알아봅시다.

 


   //문자열 + 숫자
   "obj_Enemy_" + string(global.Level)




   //문자열 + 문자열
   "obj_Enemy_" + "05"

 

문자열로 리소스의 인덱스를 참조할 때는 아래의 함수를 사용합니다.

 

   ◎ asset_get_index(name)

 

name 은 참조할 리소스 이름을 문자열로 지정하면 됩니다.

참조하려는 리소스가 존재할 때 0 이상의 인덱스 값을 반환하고, 리소스가 존재하지 않으면 -1을

반환합니다.

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

 


   var obj = asset_get_index("obj_Enemy_" + string(global.Level));
   if obj > -1
      {
      instance_create_layer(random(room_width), random(room_height), obj, "Enemy_Layer");
      }

 

이 예제는 문자열에서 오브젝트 인덱스를 참조하고 해당 인덱스가 있으면 "Enemy_Layer 레이어에

해당 오브젝트를 생성하게 됩니다.

 

 

또한, 아래 함수를 사용하면 리소스의 유형을 확인할 수도 있습니다.

 

   ◎ asset_get_type(name)

 

이 함수를 사용하면 아래의 상수중 하나를 반환하게 됩니다.

 

   asset_object : 오브젝트

   asset_sprite : 스프라이트

   asset_sound : 사운드

   asset_room : 룸

   asset_tiles : 타일

   asset_path : 패스

   asset_script : 스크립트

   asset_font : 폰트

   asset_timeline : 타임라인

   asset_shader : 쉐이더

   asset_animationcurve : 애니메이션 커브

   asset_sequence : 시퀸스

   asset_unknown : 존재하지 않음

 

만약 존재하지 않는 리소스라면 asset_unknown 을 반환합니다.

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

 


   if asset_get_type("pth_Path_" + string(global.Game)) == asset_unknown
      {
      show_debug_message("Path doesn't exist!!!");
      }
   else
      {
      path_index = asset_get_index("pth_Path_" + string(global.Game));
      }

 

이 예제는 문자열에서 존재하는 리소스의 유형을 확인하여 리소스가 존재하지 않거나, 올바른 유형이

아닌 경우 디버그 메시지를 표시합니다.

그리고 존재하는 리소스이고, 올바른 유형을 반환한다면 리소스의 인덱스를 변수에 할당하게 됩니다.

 

 

 

 

 

 

300x250

댓글