원하는 이펙트 찾기

# 리소스 검색

리소스 검색은 현재 웹과 메이커에서 이용할 수 있습니다.

  *   
[png](1666080948482bbe25c0b28bd464fa06c89790f7e2954)  

  * 메이커의 Resource Storage 패널   
[png](165957603963230101d3cac97480285f5496cd808cd84)



# 스킬 고유 명칭으로 리소스 찾기

제작 리소스 조회 페이지에서는 여러 태그를 제공하고 있지만 아직 정확도가 높지 않습니다. 검색 시 가장 정확도가 높은 키워드는 스킬의 고유 명칭입니다.

예로 스킬 고유 명칭인 워리어리프로 검색하면 원하는 검색 결과를 확인하실 수 있습니다. [png](16747823215038f1d75c4c5514fe6b6a36bba1e7ddcac)

> 만약 정확한 스킬 명칭을 모른다면 에서 도움을 받을 수 있습니다. 참고용으로 사용 부탁드립니다. 크리에이터가 이용하는 커뮤니티 혹은 메이플스토리를 플레이하며 확인할 수도 있습니다.

스프라이트 카테고리에서 원하는 리소스를 찾을 때는 애니메이션 카테고리보다 많은 결괏값이 검색되므로, 의도하는 리소스를 찾기 어려울 수 있습니다. 그러므로 고유 명칭으로 검색해 스프라이트 리소스를 바로 찾기보다는, 태그로 먼저 애니메이션을 찾아 검색 범위를 좁히는 방법을 추천합니다.

# 태그로 리소스 찾기

대부분의 리소스는 태그로 찾을 수 있습니다. 예시로 메이플스토리의 신궁 스킬인 피어싱 관련 리소스를 찾아보며, 태그로 리소스를 찾는 방법을 살펴봅시다.

  1. 먼저 피어싱으로 1차 검색을 하고, 리소스를 찾습니다. [png](167478238596993c8ff12e50c46ba870a8f39d40c1048)   

  2. 원하는 리소스를 찾았다면, 클릭해 상세 보기 창을 열고, 관련 태그 중에 #리소스타입#고유 ID(#skillname#3221017)를 확인합니다. [png](1674782493166fa37020638ce4fed87618c1bd65b97c1) 이 태그를 클릭해 검색하면 고유 ID와 연관된 결과만 나오기 때문에 수월하게 리소스를 찾을 수 있습니다.   

  3. 스킬 고유 ID 태그로 2차 검색을 하고 원하는 리소스를 찾아봅니다. [png](1674783583003e107777d03b94cd883ba81dfb2259202)



# 스킬 리소스를 사용하는 방법

메이플스토리 월드에서 제공하는 모든 리소스는 고유한 32자리의 RUID를 갖고 있습니다. 크리에이터는 컴포넌트나 스크립트에서 RUID로 리소스를 활용할 수 있습니다. [png](16747827559611f8ac1d95fae42b6a7a600846407408a)

RUID는 대표적으로 SpriteRendererComponent, SpriteGUIRendererComponent, EffectService에서 사용합니다. RUID 옆의 [png](16747829119867539c98fe77f4fabba798c44bc837130) [복사] 버튼을 누르면 RUID를 쉽게 복사할 수 있습니다.

#### SpriteRendererComponent

월드에 배치되고 이미지를 가진 대부분의 엔티티는 SpriteRendererComponent를 갖고 있습니다. 검색한 리소스 RUID를 SpriteRendererComponent의 SpriteRUID 프로퍼티 값으로 넣으면, 입력한 RUID의 이미지로 변경됩니다. 만약 입력한 RUID가 애니메이션이라면, PlayRate 프로퍼티의 속도로 EndFrameIndex까지 재생한 후 처음 프레임으로 돌아가기를 반복합니다. [SpriteRendererComponent](/apiReference?postId=385)에서 상세한 정보를 확인할 수 있습니다.

[png](1637746312852d02d7530fb0e4a4496989389875caa14)

#### SpriteGUIRendererComponent

UI에 배치되고 이미지를 가진 대부분의 엔티티는 SpriteGUIRendererComponent를 갖고 있습니다. 검색한 리소스 RUID를 SpriteGUIRendererComponent의 ImageRUID 프로퍼티에 할당하면 이미지가 변경됩니다. SpriteRendererComponent와 유사한 방식으로 사용할 수 있으나 원본 사이즈와 비율로 사용하기 위해서는 PreserveSprite 프로퍼티의 값을 NativeSize로 변경해야 합니다. 만약 PreserveSprite 프로퍼티의 값을 NativeSize로 설정하면 이펙트의 사이즈와 오프셋은 LocalScale, LocalPosition 프로퍼티로 조정할 수 있습니다. [SpriteGUIRendererComponent](/apiReference?postId=387)에서 상세한 정보를 확인할 수 있습니다.

[png](163774632551686f93d4782234199ae25cd8b6b55a4a8)

#### EffectService

EffectService를 활용하면 스크립트로 리소스를 호출할 수 있습니다. 자세한 예시는 [EffectService의 Examples](/apiReference?postId=304)에서 살펴봅시다.

사용 예시는 아래와 같습니다.
    
    
    @Component
    script StartupEffect extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            _EffectService:PlayEffect("f396262ddb6e4d5581360496bb4e9f86",self.Entity,Vector3(x,y,0), 0, Vector3(1,1,1))
        end
    end
    

##### 원하는 애니메이션 프레임을 체크해서 사용하는 방법

애니메이션 이펙트를 사용할 때 특정 타이밍에 공격 판정을 하도록 구현하려면 `SpriteAnimPlayerChangeFrameEvent`를 사용합니다.

사용 예시는 아래와 같습니다.
    
    
    @Component
    script AttackFrameDetector extends Component
        @EventSender("Self")
        handler HandleSpriteAnimPlayerChangeFrameEvent(SpriteAnimPlayerChangeFrameEvent event)
        --------------- Native Event Sender Info ----------------
        -- Sender: ClimbableSpriteRendererComponent
        -- Space: Client
        ---------------------------------------------------------
        -- Sender: SpriteRendererComponent
        -- Space: Client
        ---------------------------------------------------------
    
        -- Parameters
        -- local FrameIndex = event.FrameIndex
        -- local ReversePlaying = event.ReversePlaying
        -- local TotalFrameCount = event.TotalFrameCount
        -- local AnimPlayer = event.AnimPlayer
        ---------------------------------------------------------
    
        if FrameIndex == 7 then
            log("7프레임에 공격 판정을 발생시킵니다.")
        end
        end
    end
    

##### 참고 가이드

[스킬 이펙트를 뿌려보자!](/docs?postId=70)