스켈레톤 슬롯 데이터 설명
이 문서는 스켈레톤 애니메이션의 슬롯 데이터를 DS 리스트에 채우는 방법에 대해 설명합니다. 이 함수는 애니메이션에 포함된 각 슬롯에 대한 데이터를 가져와 DS 맵 형태로 반환합니다. 반환되는 데이터는 다음과 같은 키/값 쌍을 포함합니다:
| 키 | 설명 |
|---|---|
| "name" | 슬롯의 이름 |
| "bone" | 뼈의 이름 |
| "attachment" | 사용된 첨부물의 이름 또는 "(none)" |
각 키의 값은 문자열이며, 이러한 타입의 스프라이트에 대한 다른 스켈레톤 첨부 함수에서 사용할 수 있습니다. 생성된 DS 맵은 자동으로 파괴되지 않으므로, DS 리스트를 반복하여 각 맵을 수동으로 파괴해야 합니다.
문법
skeleton_slot_data(sprite, list);
인수 설명
| 인수 | 타입 | 설명 |
|---|---|---|
| sprite | Sprite Asset | 데이터 가져올 Spine 스켈레톤 애니메이션의 스프라이트 인덱스 |
| list | DS List ID | DS 맵으로 채울 DS 리스트의 ID |
반환값
- N/A
예제 코드
다음 코드는 DS 리스트를 생성하고 인스턴스 스프라이트의 슬롯 데이터로 채우는 예제입니다.
var list = ds_list_create();
var open = true;
slot_name = "";
skeleton_slot_data(sprite_index, list);
for (var i = 0; i < ds_list_size(list); i++) {
||
||
if open {
if map[? "attachment"] == "(none)" {
open = false;
slot_name = map[? "name"];
}
}
ds_map_destroy(map);
}
ds_list_destroy(list);
위 코드는 DS 리스트를 생성한 후, 인스턴스 스프라이트의 슬롯 데이터로 채웁니다. 이 데이터는 개별 DS 맵을 추출하기 위해 파싱됩니다. 그런 다음 빈 슬롯이 있는지 확인하고, 빈 슬롯이 있다면 변수 "slot_name"에 빈 슬롯의 이름을 할당한 후 DS 맵을 파괴합니다. 마지막으로 더 이상 필요하지 않으므로 DS 리스트를 파괴합니다.
활용 예제
- 슬롯 데이터 출력: 슬롯의 이름과 첨부물 정보를 출력하는 기능을 추가할 수 있습니다.
gml for (var i = 0; i < ds_list_size(list); i++) { || || show_debug_message("슬롯 이름: " + map[? "name"] + ", 첨부물: " + map[? "attachment"]); ds_map_destroy(map); }
- 특정 슬롯 찾기: 특정 이름을 가진 슬롯을 찾는 기능을 구현할 수 있습니다.
gml var target_slot = "head"; for (var i = 0; i < ds_list_size(list); i++) { || || if (map[? "name"] == target_slot) { show_debug_message("찾은 슬롯: " + target_slot); } ds_map_destroy(map); }
- 슬롯 데이터 필터링: 특정 조건을 만족하는 슬롯만 필터링하여 사용할 수 있습니다.
gml var filtered_slots = ds_list_create(); for (var i = 0; i < ds_list_size(list); i++) { || || if (map[? "attachment"] != "(none)") { ds_list_add(filtered_slots, map); } else { ds_map_destroy(map); } }
이러한 예제들은 스켈레톤 슬롯 데이터를 활용하여 다양한 기능을 구현하는 데 도움이 됩니다.