자산 타입 가져오기: asset_get_type 함수 설명
이 문서에서는 asset_get_type 함수에 대해 설명하고, 이를 활용한 다양한 예제를 소개합니다.
함수 개요
asset_get_type 함수는 자산의 이름이나 핸들에서 참조되는 자산의 타입을 가져옵니다. 아래의 상수 중 하나가 반환됩니다.
문법
asset_get_type(name_or_ref);
인수
| 인수 | 타입 | 설명 |
|---|---|---|
| name_or_ref | Asset 또는 String | 자산의 이름 또는 참조로, 자산의 타입을 가져옵니다. |
반환값
- 자산 타입 상수 (예:
asset_unknown,asset_sprite, 등)
사용 예제
다음 예제 코드는 동적으로 생성된 자산 이름이 올바른 타입인지 확인하는 작업을 수행합니다.
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));
}
위 코드는 global.Game 값을 추가하여 완전한 자산 이름을 생성하고, 그 자산의 타입을 확인합니다. 만약 자산이 존재하지 않으면 디버그 메시지를 표시합니다. 존재할 경우, 자산의 인덱스를 path_index에 할당합니다.
활용 예제
- 자산 존재 확인하기
사용자가 입력한 자산 이름이 유효한지 확인하고, 유효하지 않으면 오류 메시지를 출력합니다.
gml var asset_name = "spr_Player"; if asset_get_type(asset_name) == asset_unknown { show_debug_message(asset_name + "는 유효한 자산이 아닙니다."); } else { show_debug_message(asset_name + " 자산이 발견되었습니다."); }
- 여러 자산 타입 확인하기
여러 자산의 타입을 확인하고, 각 자산에 따라 다른 작업을 수행하는 예제입니다.
gml var asset_names = ["spr_Player", "snd_Enemy", "pth_Path1"]; for (var i = 0; i < array_length(asset_names); i++) { var asset_name = asset_names[i]; switch (asset_get_type(asset_name)) { case asset_sprite: show_debug_message(asset_name + "는 스프라이트입니다."); break; case asset_sound: show_debug_message(asset_name + "는 사운드입니다."); break; case asset_path: show_debug_message(asset_name + "는 경로입니다."); break; default: show_debug_message(asset_name + "는 알 수 없는 타입입니다."); break; } }
- 자산 배열을 통해 다양한 타입 처리하기
자산 배열을 사용하여 여러 자산을 처리하고, 각각의 타입에 맞춰 추가 행동을 하도록 구성할 수 있습니다.
gml var assets = ["spr_Player", "snd_Theme", "pth_Level1"]; for (var i = 0; i < array_length(assets); i++) { var type = asset_get_type(assets[i]); if (type == asset_sprite) { // 스프라이트 처리 로직 } else if (type == asset_sound) { // 사운드 처리 로직 } else { show_debug_message(assets[i] + "의 타입은 처리할 수 없습니다."); } }
결론
asset_get_type 함수는 게임 개발 시 자산의 타입을 확인하고, 이를 기반으로 적절한 처리를 할 수 있게 해줍니다. 이 문서에서 제공한 예제들을 통해 여러분의 게임 프로젝트에서 이 함수를 활용해 보시기 바랍니다.
© Copyright YoYo Games Ltd. 2023 All Rights Reserved