msw-ai-tf/maplestory-worlds-creator-docs huggingface dataset:
EntryService

엔트리 관련 기능을 제공합니다.

# Methods

[{"index":"string GetDataSetIdByName(string name)","0":"DataSet 이름으로 DataSet Id를 찾아 반환합니다."}]

[{"index":"string GetMaterialIdByName(string name)","0":"Material 이름으로 Material Id를 찾아 반환합니다."}]

[{"index":"string GetModelIdByName(string name)","0":"Model 이름으로 Modle Id를 찾아 반환합니다."}]

##### inherited from Service:

[{"index":"EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"boolean DisconnectEvent(string key, EventHandlerBase eventHandler)","0":"타입의 이름이 key인 이벤트와 핸들러와의 이벤트 연결을 끊습니다."}]

[{"index":"boolean DisconnectEvent(Type eventType, EventHandlerBase eventHandler)","0":"타입이 eventType인 이벤트와 핸들러와의 연결을 끊습니다."}]

[{"index":"void SendEvent(EventType sendEvent)","0":"이벤트를 발생시킵니다."}]

# Examples

#### GetModelIdByName
    
    
    @Component
    script NamedModelSpawner extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local modelId = _EntryService:GetModelIdByName("NewModel")
            if modelId ~= nil then 
                _SpawnService:SpawnByModelId(modelId , "NewEntity" , Vector3.zero , self.Entity)   
            end
        end
    end
    

# SeeAlso

  * SpawnService
모바일 기기의 진동 기능 활용

# 학습 과정 소개

모바일 기기에서 진동을 울려 월드를 이용하는 유저에게 피드백을 줄 수 있습니다.

# MobileVibratorService

`MobileVibratorService`를 활용하면 모바일 기능에서 진동을 울릴 수 있습니다. 이 서비스는 모바일에서만 테스트와 활용이 가능하므로 메이커에서 테스트한다면 정상적으로 작동하지 않습니다.

# 활용 예제

버튼을 누를 때마다 진동과 함께 토스트 알림창이 나오게 만들어 봅시다.

[gif](16691656921273488fc31718d491dafd206dc89dd0996)

  1. UI 에디터 - ui - DefaultGroup - Create Entity - Create Button을 선택해 UIButton_Vib를 배치합니다. 
     * ImageRUID: e00ce931b027545449e68e06b0f0b411
  2. 새로운 Vibrate 컴포넌트를 생성하고 UIButton_Vib에 추가합니다.
  3. Vibrate 컴포넌트에 ButtonClickEvent를 추가하고, entity로 변경한 뒤 UIButton_vib로 지정합니다. 
         
         @Component
         script ButtonVibrationFeedback extends Component
         @EventSender("Self")
         handler HandleButtonClickEvent(ButtonClickEvent event)
         local Entity = event.Entity
         --------------------------------------------------------
         if _MobileVibratorService:IsHWSupported() then
             _MobileVibratorService:Vibrate()
             _UIToast:ShowMessage("Vibration On")
         end
         end
         end
         



    
    
    6. 비공개로 출시한 뒤 모바일 기기에서 버튼을 눌러 진동이 울리는지 확인합니다.
    
    >**더 알아보기**
    > 토스트 UI는 UI 에디터 - ToastGroup에서 편집 가능합니다.
SortableDataStorageItemPages

SortableDataStorage에 저장된 데이터를 조회하는 기능을 제공합니다.

# Properties

[{"index":"boolean IsLastPage (ReadOnly)","0":"현재 페이지가 마지막 페이지인지 확인합니다."}]

# Methods

[{"index":"table GetCurrentPageDatas() (ServerOnly)","0":"현재 페이지의 데이터 목록을 가져옵니다."}]

[{"index":"int32 LoadNextPageAndWait() (ServerOnly) (Yield)","0":"다음 페이지를 불러오고, 에러 코드를 반환합니다. MoveToNextPageAndWait() 함수로 불러온 페이지로 이동할 수 있습니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void MoveToNextPageAndWait() (ServerOnly) (Yield)","0":"다음 페이지로 이동합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

# Examples

페이지를 순회하는 예제 코드입니다.
    
    
    @Component
    script PagedDataProcessor extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            while true do
            	local datas = pages:GetCurrentPageDatas()
            	for _, data in pairs(datas) do
            		-- SortableDataStorageItem을 통해 키, 버전, 태그, 값을 조회할 수 있습니다.
            		log(data.KeyInfo.Key)
            		log(data.KeyInfo.Tag)
            		log(data.KeyInfo.Version)
            		log(data.Value)
            	end
            
            	-- IsLastPage 프로퍼티를 통해 현재 페이지가 마지막 페이지인지 확인할 수 있습니다.
            	if pages.IsLastPage == true then
            		return
            	end
            
            	-- 다음 페이지의 데이터를 미리 불러오고 다음 페이지가 유효하지 않은 경우 조회를 마칩니다.
            	local loadResultCode = pages:LoadNextPageAndWait()
            	if loadResultCode ~= 0 then
            		return
            	end
            
            	-- 다음 페이지로 이동합니다.
            	pages:MoveToNextPageAndWait()
            end
        end
    end
    

# SeeAlso

  * SortableDataStorageItem
LeaderboardResultCode

리더보드 관련 요청 처리 결과를 나타냄니다.

# Members

[{"이름":"Unknown","값":"-1","설명":"알 수 없는 오류가 발생했습니다."},{"이름":"Ok","값":"0","설명":"요청 처리에 성공했습니다."},{"이름":"InvalidEnvironment","값":"1000000","설명":"현재 실행 환경에서는 사용할 수 없습니다."},{"이름":"InternalError","값":"1000001","설명":"내부 시스템 오류가 발생했습니다."},{"이름":"BadRequest","값":"1000002","설명":"잘못된 요청입니다."},{"이름":"TooManyLeaderboard","값":"1000003","설명":"리더보드 최대 개수를 초과했습니다."},{"이름":"NotSupportedValue","값":"1000004","설명":"지원되지 않는 매개변수 값입니다."},{"이름":"NotSupportedMode","값":"1000005","설명":"지원되지 않는 설정입니다."},{"이름":"InvalidResetDate","값":"1000006","설명":"초기화 날짜 및 시간이 현재보다 과거로 설정되어 있습니다."},{"이름":"LeaderboardNotFound","값":"1000007","설명":"리더보드를 찾을 수 없습니다."},{"이름":"NotHighScore","값":"1000008","설명":"점수 갱신 방식이 LeaderboardScoringStrategy.High로 설정된 상태에서 기존 점수보다 낮은 점수를 등록하려고 했습니다."},{"이름":"ScoreNotFound","값":"1000009","설명":"점수 정보를 찾을 수 없습니다."}]

# Methods

[{"index":"LeaderboardResultCode CastFrom(number value) (Static)","0":"숫자를 해당 타입으로 변환합니다."}]

[{"index":"LeaderboardResultCode CastFrom(string value) (Static)","0":"문자열을 해당 타입으로 변환합니다."}]
UIGroupComponent

UIGroup을 나타냅니다. UI Entity를 그룹화하고 그룹의 속성을 설정할 수 있습니다. UIGroup은 UIGroup 편집 창에서 생성하고 삭제할 수 있습니다.

# Properties

[{"index":"boolean DefaultShow","0":"게임을 시작했을 때 그룹의 활성화 여부를 설정합니다. false로 설정할 경우 비활성화된 상태로 시작합니다."}]

[{"index":"int32 GroupOrder","0":"UIGroup 간 레이어 순서입니다. UIGroup 편집 창에서는 GroupOrder 값이 클수록 위에 표시됩니다."}]

[{"index":"UIGroupType GroupType","0":"UIGroup의 타입을 설정합니다. * DefaultType: 기본 UIGroup입니다. 월드 최초 생성 시 자동으로 생성되고, 삭제할 수 없습니다.* UIType: UI 에디터에서 직접 생성한 UIGroup입니다.* EditorType: UI 에디터에서 직접 생성한 UIGroup입니다. Scene 편집 중 사용할 수 있는 Editor UIGroup이 됩니다."}]

##### 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":"현재 실행 환경이 서버인지 아닌지의 여부를 반환합니다."}]
SortableDataStoragePages

월드의 SortableDataStorage들을 조회할 수 있는 기능을 제공합니다.

# Properties

[{"index":"boolean IsLastPage (ReadOnly)","0":"현재 페이지가 마지막 페이지인지 확인합니다."}]

# Methods

[{"index":"table GetCurrentPageDatas() (ServerOnly)","0":"현재 페이지의 SortableDataStorage 목록을 가져옵니다."}]

[{"index":"int32 LoadNextPageAndWait() (ServerOnly) (Yield)","0":"다음 페이지를 불러오고, 에러 코드를 반환합니다. MoveToNextPageAndWait() 함수를 통해 불러온 페이지로 이동할 수 있습니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void MoveToNextPageAndWait() (ServerOnly) (Yield)","0":"다음 페이지로 이동합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

# Examples

페이지를 순회하는 예제 코드입니다.
    
    
    @Component
    script PaginatedDataHandler extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            while true do
            	local datas = pages:GetCurrentPageDatas()
            	for _, data in pairs(datas) do
            		log(data.Name)
            	end
            
            	-- IsLastPage 프로퍼티를 통해 현재 페이지가 마지막 페이지인지 확인할 수 있습니다.
            	if pages.IsLastPage == true then
            		return
            	end
            
            	-- 다음 페이지의 데이터를 미리 불러오고 다음 페이지가 유효하지 않은 경우 조회를 마칩니다.
            	local loadResultCode = pages:LoadNextPageAndWait()
            	if loadResultCode ~= 0 then
            		return
            	end
            
            	-- 다음 페이지로 이동합니다.
            	pages:MoveToNextPageAndWait()
            end
        end
    end
    

# SeeAlso

  * [DataStorage 사용량 제한 알아보기](/docs?postId=1044)
  * [DataStorage 사용량 제한 활용하기](/docs?postId=1045)
  * [DataStorage 활용하기](/docs?postId=692)
MatchmakingResultCode

매치메이킹 관련 요청 처리 결과를 나타냅니다.

# Members

[{"이름":"Unknown","값":"-1","설명":"알 수 없는 오류가 발생했습니다."},{"이름":"Ok","값":"0","설명":"요청 처리에 성공했습니다."},{"이름":"InvalidEnvironment","값":"1000000","설명":"현재 실행 환경에서는 사용할 수 없습니다."},{"이름":"InternalError","값":"1000001","설명":"내부 시스템 오류가 발생했습니다."},{"이름":"BadRequest","값":"1000002","설명":"잘못된 요청입니다."},{"이름":"AlreadyMatching","값":"1000003","설명":"이미 매칭 중입니다."},{"이름":"NotMatched","값":"1000004","설명":"매칭이 성사된 상태가 아닙니다."},{"이름":"UserNotFound","값":"1000005","설명":"유저를 찾을 수 없습니다."},{"이름":"NotMatching","값":"1000006","설명":"매칭 중인 상태가 아닙니다."},{"이름":"MatchingExpired","값":"1000007","설명":"매칭이 만료되었습니다."},{"이름":"LeaderboardNotFound","값":"1000008","설명":"리더보드를 찾을 수 없습니다."},{"이름":"ScoreNotFound","값":"1000009","설명":"점수 정보를 찾을 수 없습니다."},{"이름":"RequestNotFound","값":"1000010","설명":"매칭 요청 내역을 찾지 못했습니다."},{"이름":"AlreadyMatched","값":"1000011","설명":"이미 매칭이 성사된 상태입니다."}]

# Methods

[{"index":"MatchmakingResultCode CastFrom(number value) (Static)","0":"숫자를 해당 타입으로 변환합니다."}]

[{"index":"MatchmakingResultCode CastFrom(string value) (Static)","0":"문자열을 해당 타입으로 변환합니다."}]
MaskComponent

마스크를 사용해, 자식 UI Entity의 특정 영역만 보이게 할 수 있습니다.

# Properties

[{"index":"RectOffset Padding","0":"마스크의 상하좌우의 여유 공간을 설정합니다."}]

[{"index":"MaskShape Shape","0":"마스크의 모양을 지정합니다."}]

[{"index":"Vector2Int Softness","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":"현재 실행 환경이 서버인지 아닌지의 여부를 반환합니다."}]

# Examples

UI Entity 초기화 시 마스크에 패딩을 추가하여 보이는 영역을 축소합니다. `Softness`를 설정하여 자식 엔티티의 가장자리를 부드럽게 처리하는 예제입니다.
    
    
    @Component
    script MaskInitializer extends Component
        @ExecSpace("ClientOnly")
        method void OnInitialize()
        self.Entity.MaskComponent.Softness = Vector2Int(10, 10)
        self.Entity.MaskComponent.Padding = RectOffset(10, 10, 10, 10)
        end
    end
    

# SeeAlso

  * RectOffset
  * Vector2Int
UITouchReceiveComponent

UI Entity를 터치할 수 있고, 터치 시 동작을 제어할 수 있습니다.

# Properties

##### 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":"UITouchBeginDragEvent","0":"UI Entity를 드래그하기 시작할 때 발생하는 이벤트입니다."}]

[{"index":"UITouchDownEvent","0":"UI Entity를 터치하거나 클릭했을 때 발생하는 이벤트입니다."}]

[{"index":"UITouchDragEvent","0":"UI Entity를 드래그 중일 때 발생하는 이벤트입니다."}]

[{"index":"UITouchEndDragEvent","0":"UI Entity 드래그를 마칠 때 발생하는 이벤트입니다."}]

[{"index":"UITouchEnterEvent","0":"UI Entity를 터치하거나 커서가 들어올 때 발생하는 이벤트입니다."}]

[{"index":"UITouchExitEvent","0":"UI Entity에서 터치를 떼거나 커서가 나갈 때 발생하는 이벤트입니다."}]

[{"index":"UITouchUpEvent","0":"UI Entity에서 터치나 클릭을 뗐을 때 발생하는 이벤트입니다."}]
PrismaticJoint

두 Entity가 특정 축을 따라서만 상대적 이동하도록 합니다. PrismaticJointComponent의 Joints에 추가해 사용합니다.

# Properties

[{"index":"boolean CollideConnected","0":"Joint로 연결된 두 Entity가 서로 충돌할지 여부를 설정합니다."}]

[{"index":"Vector2 LocalAnchorA","0":"JointComponent를 가진 Entity의 Anchor를 설정합니다. Entity 기준 상대 좌표를 사용합니다."}]

[{"index":"Vector2 LocalAnchorB","0":"Joint로 연결된 Entity의 Anchor를 설정합니다. Entity 기준 상대 좌표를 사용합니다."}]

[{"index":"Vector2 LocalAxis","0":"PrismaticJoint의 제한 축을 설정합니다. Entity 기준 상대 좌표를 사용합니다."}]

[{"index":"float LowerTranslation","0":"Joint로 연결된 두 Entity의 최소 상대적 축이동 가능 범위를 설정합니다."}]

[{"index":"float MaxMotorForce","0":"목표 모터 속도에 도달하기 위한 joint의 모터에 적용할 수 있는 최대 힘을 설정합니다."}]

[{"index":"boolean MotorEnable","0":"Joint의 모터 기능을 사용할지 여부를 설정합니다. True일 경우 Joint가 MotorSpeed 값에 영향을 받습니다."}]

[{"index":"float MotorSpeed","0":"Joint의 목표 모터 속도를 설정합니다."}]

[{"index":"EntityRef TargetEntityRef","0":"Joint로 연결할 Entity를 설정합니다."}]

[{"index":"float UpperTranslation","0":"Joint로 연결된 두 Entity의 최대 상대적 축이동 가능 범위를 설정합니다."}]

[{"index":"boolean UseLimits","0":"Joint로 연결된 두 Entity의 상대적 축이동 가능 범위에 제한을 둘지 여부를 설정합니다."}]

# Constructors

[{"index":"PrismaticJoint()","0":"기본값으로 PrismaticJoint를 초기화합니다."}]

[{"index":"PrismaticJoint(PrismaticJoint joint)","0":"지정한 joint와 동일한 값으로 PrismaticJoint를 초기화합니다."}]
DefaultUserEnterLeaveLogic

유저의 입장과 퇴장에 관련된 기능을 제공합니다.

# Properties

[{"index":"string PlayerUri","0":"플레이어 엔티티를 생성할 때 사용할 Model의 Id입니다. 모델 콘텍스트 메뉴의 Copy Model ID를 활용하세요. Server 공간에서 변경해야 변경 사항이 적용됩니다."}]

[{"index":"string StartPoint","0":"시작 맵의 이름입니다. 맵 콘텍스트 메뉴의 Copy Entry Path를 활용하세요. Server 공간에서 변경해야 변경 사항이 적용됩니다."}]

# Methods

##### inherited from Logic:

[{"index":"EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"boolean DisconnectEvent(string key, EventHandlerBase eventHandler)","0":"타입의 이름이 key인 이벤트와 핸들러와의 연결을 끊습니다."}]

[{"index":"boolean DisconnectEvent(Type eventType, EventHandlerBase eventHandler)","0":"타입이 eventType인 이벤트와 핸들러와의 연결을 끊습니다."}]

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

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

[{"index":"void SendEvent(EventType sendEvent)","0":"이벤트를 발생시킵니다."}]
LineGUIRendererComponent

UI에 선을 그리며, 선의 속성을 설정할 수 있는 기능을 제공합니다.

# Properties

[{"index":"float Flexibility","0":"꺾이는 부분의 너비를 조절합니다. IsFlexible이 true일 때 적용됩니다."}]

[{"index":"boolean IsFlexible","0":"꺾이는 부분을 이어 그릴지 끊어 그릴지 설정합니다."}]

[{"index":"boolean IsSmooth","0":"true면 부드러운 곡선, false면 날카로운 꺾은 선으로 그립니다."}]

[{"index":"boolean Loop","0":"true면 자동으로 시작점과 끝점을 이어 닫힌 선을 그립니다."}]

[{"index":"string MaterialId (Sync)","0":"렌더러에 적용할 머티리얼 Id를 지정합니다."}]

[{"index":"SyncList Points","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

[{"index":"void ChangeMaterial(string materialId)","0":"랜더러에 적용할 머티리얼을 교체합니다."}]

##### inherited from Component:

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

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

UI에 다각형을 그리는 기능입니다.

# Properties

[{"index":"Color Color","0":"다각형의 색상입니다."}]

[{"index":"string MaterialId (Sync)","0":"렌더러에 적용할 머티리얼 Id를 지정합니다."}]

[{"index":"SyncList Points","0":"다각형을 구성하는 꼭짓점들의 집합입니다."}]

[{"index":"boolean UseCustomUVs","0":"true라면 UVs에 설정한 UV 값이 도형에 적용됩니다."}]

[{"index":"SyncList UVs","0":"꼭짓점의 UV를 설정합니다. 반드시 Points와 길이가 같아야 합니다."}]

##### 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":"void ChangeMaterial(string materialId)","0":"랜더러에 적용할 머티리얼을 교체합니다."}]

[{"index":"boolean IsDrawable() (ClientOnly)","0":"Points 프로퍼티에 저장된 꼭짓점들을 이어 다각형이 그려지는지 확인합니다. 교차하는 변이 있으면 다각형이 그려지지 않습니다."}]

##### inherited from Component:

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

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

Entity에 피격 이벤트가 발생했을 때 대미지 스킨을 출력합니다.

# Properties

[{"index":"Vector2 DamageSkinOffset (Sync)","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":"현재 실행 환경이 서버인지 아닌지의 여부를 반환합니다."}]

# Examples

현재 HitComponent의 ColliderOffset과 BoxSize에 맞춰 상단 중앙에 대미지를 출력하는 예제입니다.
    
    
    @Component
    script DamageSkinOffsetCalculator extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
        local damageSkinSpawnerComponent = self.Entity.DamageSkinSpawnerComponent
    
        if damageSkinSpawnerComponent == nil then
            return
        end
    
        local transformComponent = self.Entity.TransformComponent
    
        if transformComponent == nil then
        	return
        end
    
        local hitComponent = self.Entity.HitComponent
    
        if hitComponent == nil then
            return
        end 
    
        local weight = self.Entity.TransformComponent.Scale:ToVector2()
    
        local hitBoxOffset = hitComponent.ColliderOffset * weight
        local hitBoxSize = hitComponent.BoxSize * weight
    
        local damageOffset = Vector2(hitBoxOffset.x, hitBoxOffset.y + hitBoxSize.y / 2)
    
        damageSkinSpawnerComponent.DamageSkinOffset = damageOffset
        end
    end
    

# SeeAlso

  * HitComponent
  * TransformComponent
  * Vector2
KickReason

유저 추방 사유를 나타냅니다.

# Members

[{"이름":"Profanity","값":"0","설명":"욕설, 음란글을 월드에서 사용한 유저를 추방할 때 사용합니다."},{"이름":"RuleViolation","값":"1","설명":"월드에서 규칙을 위반한 유저를 추방할 때 사용합니다."},{"이름":"AFK","값":"2","설명":"월드에서 장시간 자리를 비운 유저를 추방할 때 사용합니다."},{"이름":"Scam","값":"3","설명":"월드에서 유저에게 현금 거래, 사기, 허위 광고 등을 시도한 유저를 추방할 때 사용합니다."},{"이름":"BadManner","값":"4","설명":"월드에서 타 유저에게 피해를 끼친 유저를 추방할 때 사용합니다."},{"이름":"Misrepresentation","값":"5","설명":"타인을 사칭한 유저를 추방할 때 사용합니다."},{"이름":"PrivacyInfringement","값":"6","설명":"타인의 개인 정보를 유출하거나 침해한 유저를 추방할 때 사용합니다."},{"이름":"ETC","값":"7","설명":"기존 추방 사유에 해당하지 않는 부적절한 행위를 한 유저를 추방할 때 사용합니다."},{"이름":"WorldError","값":"8","설명":"월드에서 발생한 에러에 의해 유저를 추방할 때 사용합니다."},{"이름":"WorldContent","값":"9","설명":"월드 콘텐츠에 의해 유저를 추방할 때 사용합니다."}]

# Methods

[{"index":"KickReason CastFrom(number value) (Static)","0":"숫자를 해당 타입으로 변환합니다."}]

[{"index":"KickReason CastFrom(string value) (Static)","0":"문자열을 해당 타입으로 변환합니다."}]
DamageSkinSettingComponent

공격 시 재생할 대미지 스킨의 형식을 설정합니다. 피격 엔티티는 DamageSkinSpawnerComponent가 있어야 합니다.

# Properties

[{"index":"float Alpha (Sync)","0":"대미지 스킨의 Alpha 값을 설정합니다."}]

[{"index":"DataRef DamageSkinId (Sync)","0":"대미지 스킨의 종류를 설정합니다."}]

[{"index":"Vector2 DamageSkinScale (Sync)","0":"대미지 스킨의 크기를 설정합니다."}]

[{"index":"float DelayPerAttack (Sync)","0":"대미지 분할 재생 간격을 설정합니다. 초 단위를 사용합니다. AttackComponent의 GetDisplayHitCount(attackInfo) 함수를 참고하세요."}]

[{"index":"LitMode LitMode (Sync)","0":"머티리얼 또는 오브젝트가 광원의 영향을 받을지 여부를 결정하는 렌더링 방식을 선택합니다."}]

[{"index":"float PlayRate (Sync)","0":"대미지 스킨의 재생 속도를 설정합니다."}]

[{"index":"DamageSkinTweenType TweenType (Sync)","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":"현재 실행 환경이 서버인지 아닌지의 여부를 반환합니다."}]
DataStorageItemPages

DataStorage에 저장된 데이터를 조회하는 기능을 제공합니다.

# Properties

[{"index":"boolean IsLastPage (ReadOnly)","0":"현재 페이지가 마지막 페이지인지 확인합니다."}]

# Methods

[{"index":"table GetCurrentPageDatas() (ServerOnly)","0":"현재 페이지의 데이터 목록을 가져옵니다."}]

[{"index":"int32 LoadNextPageAndWait() (ServerOnly) (Yield)","0":"다음 페이지를 불러오고, 에러 코드를 반환합니다. MoveToNextPageAndWait() 함수를 통해 불러온 페이지로 이동할 수 있습니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

[{"index":"void MoveToNextPageAndWait() (ServerOnly) (Yield)","0":"다음 페이지로 이동합니다. 수행하는 동안 스크립트 실행을 중단합니다."}]

# Examples

페이지를 순회하는 예제입니다.
    
    
    @Component
    script PagedDataLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            while true do
            	-- 현재 페이지의 목록을 가져옵니다.
            	local datas = pages:GetCurrentPageDatas()
            	for _, data in pairs(datas) do
            		-- DataStorageItem을 통해 키, 버전, 태그, 값을 조회할 수 있습니다.
            		log(data.KeyInfo.Key)
            		log(data.KeyInfo.Tag)
            		log(data.KeyInfo.Version)
            		log(data.Value)
            	end
            
            	-- 현재 페이지가 마지막 페이지인지 확인합니다.
            	if pages.IsLastPage == true then
            		break
            	end
            
            	-- 다음 페이지의 데이터를 미리 불러오고 다음 페이지가 유효하지 않은 경우 조회를 마칩니다.
            	local loadResultCode = pages:LoadNextPageAndWait()
            	if loadResultCode ~= 0 then
            		break
            	end
            
            	-- 다음 페이지로 이동합니다.
            	pages:MoveToNextPageAndWait()
            end
        end
    end
    

# SeeAlso

  * [DataStorage 사용량 제한 알아보기](/docs?postId=1044)
  * [DataStorage 사용량 제한 활용하기](/docs?postId=1045)
  * [DataStorage 활용하기](/docs?postId=692)
UserDataSet

유저가 제작한 데이터 테이블입니다.

# Properties

[{"index":"ReadOnlyList Columns (ReadOnly) (HideFromInspector)","0":"데이터 테이블의 각 열의 내용을 담고 있는 리스트입니다."}]

[{"index":"string Id (ReadOnly) (HideFromInspector)","0":"데이터 테이블의 Id입니다."}]

[{"index":"string Name (ReadOnly) (HideFromInspector)","0":"데이터 테이블의 이름입니다."}]

[{"index":"boolean ServerOnly (ReadOnly)","0":"데이터 테이블 서버 전용 여부를 설정합니다. true일 경우 서버에서만 사용할 수 있습니다."}]

# Methods

[{"index":"UserDataRow FindRow(string columnName, string value)","0":"columnName에 해당하는 열의 셀들 중 값이 value와 같은 행을 가져옵니다. 없을 경우 nil이 반환됩니다."}]

[{"index":"table GetAllRow()","0":"테이블의 모든 행의 내용을 가져옵니다."}]

[{"index":"string GetCell(int32 row_1based, int32 col_1based)","0":"테이블의 셀 내용을 가져옵니다. 범위 밖의 셀에 접근하는 경우, nil이 반환됩니다."}]

[{"index":"string GetCell(int32 row_1based, string columnName)","0":"테이블의 셀 내용을 가져옵니다. 범위 밖의 셀에 접근하는 경우, nil이 반환됩니다."}]

[{"index":"table GetColumn(int32 index_1based)","0":"해당 열의 내용을 가져옵니다. 범위 밖의 열에 접근하는 경우, nil이 반환됩니다."}]

[{"index":"table GetColumn(string columnName)","0":"해당 열의 내용을 가져옵니다. 범위 밖의 열에 접근하는 경우, nil이 반환됩니다."}]

[{"index":"UserDataRow GetRow(int32 index_1based)","0":"해당 행의 내용을 가져옵니다. 범위 밖의 행에 접근하는 경우, nil이 반환됩니다."}]

[{"index":"int32 GetRowCount()","0":"테이블의 행 개수를 가져옵니다."}]
AreaParticleType

AreaParticleComponent에서 사용하는 파티클 프리셋 타입입니다.

# Members

[{"이름":"nan","값":"0","설명":"기본값입니다. 사용하는 파티클이 없습니다."},{"이름":"Rain","값":"1","설명":"비가 내리는 파티클입니다."},{"이름":"Snow","값":"2","설명":"눈이 내리는 파티클입니다."},{"이름":"FogCalm","값":"3","설명":"안개구름 파티클입니다."},{"이름":"FogHeavy","값":"4","설명":"하강하는 안개구름 파티클입니다."},{"이름":"FogLively","값":"5","설명":"피어오르는 안개구름 파티클입니다."},{"이름":"CalmStarField","값":"6","설명":"피어오르는 별 무리 파티클입니다."},{"이름":"StarFieldSimple","값":"7","설명":"반짝이는 별 무리 파티클입니다."},{"이름":"StarFog","값":"8","설명":"별 무리와 성운이 제자리에서 움직이는 파티클입니다."},{"이름":"StarFogFlow","값":"9","설명":"피어오르는 별 무리와 성운 파티클입니다."},{"이름":"Windlines","값":"10","설명":"얇은 선 파티클입니다."},{"이름":"WindlinesBig","값":"11","설명":"얇은 선과 두꺼운 선이 함께 나타나는 파티클입니다."},{"이름":"WindlinesSpeedy","값":"12","설명":"빠르게 직선으로 움직이는 얇은 선 파티클입니다."}]

# Methods

[{"index":"AreaParticleType CastFrom(number value) (Static)","0":"숫자를 해당 타입으로 변환합니다."}]

[{"index":"AreaParticleType CastFrom(string value) (Static)","0":"문자열을 해당 타입으로 변환합니다."}]