layer_get_all_elements 함수 설명
layer_get_all_elements 함수는 주어진 레이어의 요소 ID를 가져오는 데 사용됩니다. 이 함수는 레이어 핸들(레이어를 생성할 때 layer_create를 사용하여 얻은) 또는 레이어 이름(문자열 형식)을 인수로 받아들입니다. 함수는 배열을 반환하며, 배열의 각 항목은 해당 레이어의 고유한 요소 ID입니다. 예를 들어, 레이어가 자산 레이어인 경우, 배열은 레이어에 할당된 스프라이트, 시퀀스 및 입자 시스템 자산의 ID 값으로 채워집니다.
코드를 사용하여 레이어와 작업하면 동일한 레이어에 다양한 요소 유형을 할당할 수 있습니다. 예를 들어 스프라이트 자산과 인스턴스를 함께 사용할 수 있으며, 이 경우 layer_get_element_type 함수를 사용하여 ID와 관련된 요소 유형을 가져올 수 있습니다.
구문
layer_get_all_elements(layer_id)
인수
| 인수 | 유형 | 설명 |
|---|---|---|
| layer_id | String 또는 Layer | 요소를 가져올 레이어의 핸들(또는 레이어 이름) |
반환값
- 배열: 레이어 요소 ID의 배열
예제
var a = layer_get_all_elements(layer);
for (var i = 0; i < array_length(a); i++;) {
if (layer_get_element_type(a[i]) == layerelementtype_sprite) {
layer_sprite_destroy(a[i]);
}
}
위 코드는 현재 코드가 실행되고 있는 인스턴스의 레이어에 할당된 모든 인스턴스 요소의 ID를 가져옵니다. 그런 다음 반환된 요소 중 스프라이트 자산이 있는지 확인하고, 있다면 해당 스프라이트를 파괴합니다.
활용 예제
- 모든 스프라이트 요소 제거하기
gml var sprite_ids = layer_get_all_elements(layer); for (var i = 0; i < array_length(sprite_ids); i++) { if (layer_get_element_type(sprite_ids[i]) == layerelementtype_sprite) { layer_sprite_destroy(sprite_ids[i]); } } - 특정 이름을 가진 레이어의 요소 출력하기
gml var elements = layer_get_all_elements("MyLayer"); for (var i = 0; i < array_length(elements); i++) { show_debug_message("Element ID: " + string(elements[i])); } - 입자 시스템 요소만 찾기
gml var particle_ids = layer_get_all_elements(layer); for (var i = 0; i < array_length(particle_ids); i++) { if (layer_get_element_type(particle_ids[i]) == layerelementtype_particle) { // 입자 시스템에 대한 작업 수행 } } - 레이어의 모든 요소를 순회하며 상태 변경하기
gml var all_elements = layer_get_all_elements(layer); for (var i = 0; i < array_length(all_elements); i++) { // 각 요소의 상태를 변경하는 코드 } - 레이어의 모든 시퀀스 요소 제거하기
gml var sequence_ids = layer_get_all_elements(layer); for (var i = 0; i < array_length(sequence_ids); i++) { if (layer_get_element_type(sequence_ids[i]) == layerelementtype_sequence) { layer_sequence_destroy(sequence_ids[i]); } }