ButtonComponent

UI 버튼 기능을 제공합니다.

# Properties

[{"index":"TransitionColorSet Colors (HideFromInspector)","0":"버튼의 상태별 색상을 정의합니다."}]

[{"index":"boolean IgnoreMapLayerCheck (Sync)","0":"SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다."}]

[{"index":"TransitionRUIDSet ImageRUIDs (HideFromInspector)","0":"버튼의 상태별 이미지를 정의합니다."}]

[{"index":"KeyboardKey KeyCode","0":"버튼을 누르면 지정한 keyCode를 누른 것처럼 동작합니다."}]

[{"index":"int32 OrderInLayer (Sync)","0":"같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다."}]

[{"index":"boolean OverrideSorting (Sync) (ReadOnly)","0":"SortingLayer 및 OrderInLayer 값을 임의로 설정할지 여부를 결정합니다."}]

[{"index":"boolean Selectable","0":"버튼의 선택 상태 유지 기능 사용 여부를 설정하는 옵션입니다."}]

[{"index":"string SortingLayer (Sync)","0":"2개 이상의 엔티티가 겹쳤을 때 Sorting Layer에 따라 보이는 우선순위가 결정됩니다."}]

[{"index":"TransitionType Transition","0":"버튼의 상태 전환 효과를 설정합니다."}]

##### inherited from Component:

[{"index":"boolean Enable (Sync)","0":"컴포넌트 활성화 여부를 확인합니다."}]

[{"index":"boolean EnableInHierarchy (ReadOnly) (HideFromInspector)","0":"계층 구조상에서 이 컴포넌트가 Enable 상태인지를 반환합니다. Enable이 true일지라도 엔티티의 Enable이 false라면 false를 반환합니다."}]

[{"index":"Entity Entity (ReadOnly)","0":"이 컴포넌트를 소유한 엔티티입니다."}]

# Methods

##### inherited from Component:

[{"index":"boolean IsClient()","0":"현재 실행 환경이 클라이언트인지 아닌지의 여부를 반환합니다."}]

[{"index":"boolean IsServer()","0":"현재 실행 환경이 서버인지 아닌지의 여부를 반환합니다."}]

# Events

[{"index":"ButtonClickEditorEvent","0":"Button 클릭 시 발생하는 에디터 이벤트입니다."}]

[{"index":"ButtonClickEvent","0":"Button 클릭 시 발생하는 이벤트입니다."}]

[{"index":"ButtonPressedEvent","0":"Button의 상태가 Pressed가 됐을 때 발생하는 이벤트입니다."}]

[{"index":"ButtonStateChangeEditorEvent","0":"Button의 상태가 변경될 때 발생하는 에디터 이벤트입니다."}]

[{"index":"ButtonStateChangeEvent","0":"Button의 상태가 변경될 때 발생하는 이벤트입니다."}]

[{"index":"OrderInLayerChangedEvent","0":"Component의 OrderInLayer가 변경되었을 때 발생하는 이벤트입니다."}]

[{"index":"SortingLayerChangedEvent","0":"컴포넌트의 SortingLayer가 변경되었을 때 발생하는 이벤트입니다."}]

# Examples

버튼을 누르고 있을 때 버튼 이미지가 변경되고 이미지의 색상이 변경되는 예제입니다.  
`ButtonComponent`가 있는 Entity에 이 Component를 추가해 테스트할 수 있습니다.
    
    
    @Component
    script ButtonHoldFeedback extends Component
        property boolean IsButtonDown = false
        property number RedVal = 0
        property number TimerID = 0
        property any MonsterRUID = "000000"
        property any OriginalRUID = ""
    
        @ExecSpace("ClientOnly")
        method void OnBeginPlay()
        self.OriginalRUID = self.Entity.SpriteGUIRendererComponent.ImageRUID
        end
    
        method void CancelHoldButton()
        _TimerService:ClearTimer(self.TimerID)
        self.Entity.SpriteGUIRendererComponent.ImageRUID = self.OriginalRUID
        self.IsButtonDown = false
        self.RedVal = 0
        end
    
        @EventSender("Self")
        handler HandleButtonPressedEvent(ButtonPressedEvent event)
        -- Parameters
        -------------------------------------------------------
        if self.IsButtonDown then
        	self:CancelHoldButton()
        else
        	self.Entity.SpriteGUIRendererComponent.ImageRUID = self.MonsterRUID
        end
    
        self.IsButtonDown = true
    
        local AddMoreRed  = function()
        	if self.RedVal <= 1 then
        		self.RedVal = self.RedVal + 0.2
        		self.Entity.ButtonComponent.Colors.PressedColor = Color(self.RedVal, 0, 0)
        	end
        end
        self.TimerID = _TimerService:SetTimerRepeat(AddMoreRed, 0.3)
        end
    
        @EventSender("Self")
        handler HandleButtonClickEvent(ButtonClickEvent event)
        -- Parameters
        local Entity = event.Entity
        --------------------------------------------------------
        self.Entity.SpriteGUIRendererComponent.ImageRUID = self.OriginalRUID
        self.IsButtonDown = false
        end
    
        @EventSender("Self")
        handler HandleButtonStateChangeEvent(ButtonStateChangeEvent event)
        -- Parameters
        local state = event.state
        -------------------------------------------------------
        if state == ButtonState.Released then
        	self:CancelHoldButton()
        end
        end
    end
    

# SeeAlso

  * SpriteGUIRendererComponent
  * ButtonState
  * TimerService
  * [기본 UI 컴포넌트](/docs?postId=744)