asset_get_index 함수 설명
`asset_get_index` 함수는 자산(asset)의 이름을 통해 해당 자산의 핸들을 가져오는 기능을 제공합니다. 만약 자산이 발견되지 않으면, 함수는 -1을 반환하고, 자산이 존재하면 해당 자산의 핸들을 반환합니다. 이 핸들은 다른 함수에서 사용할 수 있습니다. 예를 들어 `sprite_index`나 `path_index`와 같이 사용 가능합니다. 이 함수는 문자열을 참조하여 자산을 가져오는 데 유용하지만, 자산을 사용하기 전에 반드시 존재하는지 확인해야 합니다. 그렇지 않으면 게임이 중단될 수 있는 에러가 발생할 수 있습니다.
## 구문
```gml
asset_get_index(name);
인자 설명
| 인자 | 타입 | 설명 |
|---|---|---|
| name | String | 핸들을 가져올 게임 자산의 이름 (문자열) |
반환 값
| 반환 값 | 설명 |
|---|---|
| Asset (모든 자산 타입) | 자산의 핸들 또는 -1 (존재하지 않을 경우) |
예제
아래는 특정 자산을 문자열을 통해 가져온 후, 해당 자산이 존재할 경우 인스턴스를 생성하는 코드입니다.
var obj = asset_get_index("obj_Enemy_" + string(global.Level));
if (object_exists(obj)){
instance_create_layer(random(room_width), random(room_height), "Enemy_Layer", obj);
}
위의 코드는 global.Level에 따라 적(enemy) 오브젝트를 문자열로 가져오고, 이 오브젝트가 존재할 경우 게임 내의 적 인스턴스를 생성합니다.
활용 및 응용 예시
- 동적 자산 로딩
게임 레벨에 따라 다양한 자산을 동적으로 로드할 수 있습니다.gml var obj = asset_get_index("obj_SpecialItem_" + string(global.CurrentLevel)); if (object_exists(obj)){ instance_create_layer(random(room_width), random(room_height), "Item_Layer", obj); } - 랜덤 적 생성
다양한 적을 랜덤으로 생성하여 게임의 다양성을 추가할 수 있습니다.gml var enemyType = choose("obj_Slime", "obj_Skeleton", "obj_Goblin"); var obj = asset_get_index(enemyType); if (object_exists(obj)){ instance_create_layer(random(room_width), random(room_height), "Enemy_Layer", obj); } - 자산 확인 후 생성
특정 조건이 충족될 때만 오브젝트를 생성하는 예제입니다.gml if (global.PlayerLevel > 5){ var obj = asset_get_index("obj_StrongEnemy"); if (object_exists(obj)){ instance_create_layer(random(room_width), random(room_height), "Enemy_Layer", obj); } }
참고
asset_get_index를 통해 가져온 자산이 게임에서 어떻게 활용되는지 이해하고, 필요에 따라 다양한 형태로 응용해 보세요. ```