스프라이트 병합 함수 설명
sprite_merge 함수는 첫 번째 인수("ind1")에 해당하는 스프라이트와 두 번째 인수("ind2")에 해당하는 스프라이트를 병합합니다. 이 함수는 이미지 자체를 병합하는 것이 아니라, 스프라이트의 이미지 인덱스를 병합하여 "ind2"의 서브 이미지를 "ind1"의 서브 이미지 뒤에 추가합니다. 만약 스프라이트의 크기가 다르면, 추가된 스프라이트는 "ind1"의 이미지 크기에 맞게 늘어납니다.
이 변경은 영구적이며, 이 함수를 사용한 순간부터 게임이 종료되거나 스프라이트가 삭제될 때까지 병합되는 스프라이트는 변경됩니다. 그러나 병합하는 스프라이트는 그대로 유지됩니다. 병합되는 이미지 자산이나 병합할 이미지 자산은 원래 게임 리소스 중 하나일 수 없습니다. 게임 자산을 병합하려면 먼저 sprite_duplicate() 함수를 사용하여 두 개의 새로운 리소스를 생성한 후 병합해야 합니다.
이 함수는 비트맵 스프라이트에만 유용하며, 벡터 또는 JSON(Spine) 스프라이트와는 작동하지 않습니다.
문법
sprite_merge(ind1, ind2);
인수 설명
| 인수 | 타입 | 설명 |
|---|---|---|
| ind1 | Sprite Asset | 병합할 스프라이트의 인덱스 |
| ind2 | Sprite Asset | ind1과 병합할 스프라이트의 인덱스 |
반환값
N/A
예제 코드
다음은 스프라이트를 로드하고 병합하는 예제 코드입니다.
var tspr = array_create(2);
tspr[0] = sprite_add(working_directory + "Sprite Assets/explode1.png", 16, true, true, 0, 0);
tspr[1] = sprite_duplicate(spr_Explosion);
sprite_merge(tspr[0], tspr[1]);
sprite_index = tspr[0];
sprite_delete(tspr[1]);
위 코드는 스프라이트를 로컬 변수에 로드한 후, 복제된 다른 스프라이트와 병합합니다. 마지막으로 병합된 스프라이트를 인스턴스의 sprite_index에 할당하고, 로드된 스프라이트를 삭제하여 메모리를 해제합니다. 이 작업 후, Destroy 또는 Room End 이벤트와 같은 시점에서 병합된 스프라이트를 메모리에서 제거하기 위해 sprite_delete()를 사용해야 합니다.
활용 예제
- 스프라이트 애니메이션 생성
여러 스프라이트를 병합하여 복잡한 애니메이션 효과를 만들 수 있습니다.
var explosionSprite = sprite_add("explosion.png", 16, true, true, 0, 0);
var smokeSprite = sprite_duplicate(spr_Smoke);
sprite_merge(explosionSprite, smokeSprite);
- 게임 리소스 최적화
여러 스프라이트를 하나로 병합하여 메모리 사용량을 줄일 수 있습니다.
var characterSprite = sprite_add("character.png", 16, true, true, 0, 0);
var weaponSprite = sprite_duplicate(spr_Weapon);
sprite_merge(characterSprite, weaponSprite);
- 다양한 효과 추가
기본 스프라이트에 효과 스프라이트를 병합하여 다양한 시각적 효과를 추가할 수 있습니다.
var baseSprite = sprite_add("base.png", 16, true, true, 0, 0);
var effectSprite = sprite_duplicate(spr_Effect);
sprite_merge(baseSprite, effectSprite);
이와 같이 sprite_merge 함수를 활용하여 다양한 스프라이트를 병합하고, 게임의 비주얼을 풍부하게 만들 수 있습니다.