StateComponent

사용자 정의 StateType, ConditionType 혹은 StateSet을 사용해 상태별 행동과 전이 규칙을 정의, 제어하는 기능을 제공합니다.

# Properties

[{"index":"string CurrentStateName (Sync) (ReadOnly) (HideFromInspector)","0":"현재 상태의 이름을 얻어올 수 있습니다."}]

[{"index":"boolean IsLegacy (ReadOnly)","0":"이 Component가 이전의 시스템으로 동작할지를 설정합니다.설정에 따라 상태의 전이 및 StateType과 ConditionType에 정의된 이벤트의 실행 공간이 달라집니다."}]

[{"index":"string StateSetId (ReadOnly)","0":"StateComponent 내부 상태 머신에 적용할 StateSet의 Id입니다.StateSet을 사용할 경우, API를 통한 상태와 조건의 추가 및 제거가 제한됩니다."}]

##### 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

[{"index":"boolean AddCondition(string stateName, string nextStateName, boolean reverseResult = false) (Deprecated)","0":"더는 사용하지 않는 함수입니다. stateName 상태와 nextStateName 상태를 연결합니다. 실패 시 false를 반환합니다. StateType의 OnConditionCheck의 반환 값이 true일 때 stateName 상태에서 nextStateName 상태로 상태 전이가 일어납니다. reverseResult는 작동하지 않는 인자입니다. 전이 조건을 추가하는 API는 추후 새롭게 제공될 예정입니다."}]

[{"index":"boolean AddCondition(string stateName, string nextStateName, func -> boolean conditionCheckFunction, boolean reverseResult = false) (Deprecated)","0":"더는 사용하지 않는 함수입니다."}]

[{"index":"boolean AddState(string stateName, func updateFunction = nil) (Deprecated)","0":"더는 사용하지 않는 함수입니다. 다른 AddState(string, Type)를 사용하세요."}]

[{"index":"boolean AddState(string stateName, Type stateType)","0":"사용자 정의 StateType으로 stateName이라는 이름의 상태를 추가합니다. 실패 시 false를 반환합니다."}]

[{"index":"boolean ChangeState(string stateName)","0":"현재 상태를 지정한 상태로 강제 변경합니다."}]

[{"index":"void RemoveCondition(string stateName, string nextStateName) (Deprecated)","0":"더는 사용하지 않는 함수입니다. stateName 상태와 nextStateName 상태의 연결을 끊습니다. 전이 조건을 제거하는 API는 추후 새롭게 제공될 예정입니다."}]

[{"index":"void RemoveState(string name)","0":"지정한 상태를 제거합니다."}]

##### inherited from Component:

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

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

# Events

[{"index":"DeadEvent","0":"플레이어가 죽을 때 발생하는 이벤트입니다. 상태가 DEAD로 전이할 때 발생합니다."}]

[{"index":"ReviveEvent","0":"플레이어가 부활할 때 발생하는 이벤트입니다."}]

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

# Examples

엔티티의 현재 State를 ChatBalloon을 통해 표시해주는 컴포넌트입니다.
    
    
    @Component
    script ChatBalloonStateDisplay extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
        local state = self.Entity.StateComponent
        if state == nil then
        	state = self.Entity:AddComponent("StateComponent")
        end
    
        local chatBalloon = self.Entity.ChatBalloonComponent
        if chatBalloon == nil then
        	chatBalloon = self.Entity:AddComponent("ChatBalloonComponent")
        end
    
        self.Entity.ChatBalloonComponent.AutoShowEnabled = true
        self.Entity.ChatBalloonComponent.ChatModeEnabled = false
        self.Entity.ChatBalloonComponent.ShowDuration = 1
        self.Entity.ChatBalloonComponent.HideDuration = 0
        self.Entity.ChatBalloonComponent.FontSize = 2
        end
    
        @ExecSpace("ServerOnly")
        method void OnUpdate(number delta)
        self.Entity.ChatBalloonComponent.Message = self.Entity.StateComponent.CurrentStateName
        end
    end
    

# SeeAlso

  * ChatBalloonComponent
  * StateAnimationComponent
  * Entity
  * [엔티티의 상태 제어하기](/docs?postId=686)