← 목록

mLua · Nemotron SDG 질문-응답 (SFT)

총 21,567개 · 페이지 102/719
🔀 랜덤
불러오는 중…

[task] | code [pass] | ✅ 통과 [title] | InputService [question] | OnBeginPlay 시 EntityPath 를 지정된 경로로 설정하고 자식 엔티티들을 모두 비활성화하는 초기화 코드를 포함하는 스크립트를 작성해줘 [answer] | 참고 문서의 예제를 바탕으로, `OnBeginPlay` 시점에 `EntityPath` 변수를 지정된 경로로 설정하고 해당 엔티티의 자식들을 모두 비활성화하는 초기화 코드를 작성했습니다. 참고: `EntityPath`는 문서 예제에서 전역 상수처럼 사용되고 있지만, 스크립트 내부에서 직접 경로를 지정하여 초기화하는 방식으로 작성했습니다. ```lua Property: [None] string EntityPath = "/maps/map01/touch_particles_root" Method: [server only] void On [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제 로직을 정확히 따르며, mLua 규칙에 맞는 Property/Method 문법과 nil 체크, 로그 처리를 포함하여 질문에 완벽하게 부합합니다. [source_doc] | #### 터치 입력 터치한 위치에 파티클을 보여주는 예제입니다. ```lua Method: [server only] void OnBeginPlay () { local root = _EntityService:GetEntityByPath(EntityPath) for i = 1, #root.Children do root.Children[i].Enable = false end } Event Handler: [service: InputService] HandleScreenTouchEvent (ScreenTouchEvent ev

[task] | single_turn [pass] | ✅ 통과 [title] | InputService [question] | KeyDownEvent와 KeyUpEvent를 통해 키 입력 시작과 끝을 구별하는 로직을 구현할 때, 누른 시간 차이를 계산하기 위해 프로퍼티에 어떤 값을 저장해야 하는지 궁금합니다. [answer] | `KeyDownEvent`와 `KeyUpEvent`를 이용해 키를 누른 시간 차이를 계산하려면, 키를 눌렀을 때의 **현재 경과 시간**을 프로퍼티에 저장해야 합니다. 구체적인 로직은 다음과 같습니다. 1. **`KeyDownEvent` 발생 시:** `_UtilLogic.ElapsedSeconds` 값(현재 게임 경과 시간)을 프로퍼티(예: `KeyDownTime`)에 저장합니다. 2. **`KeyUpEvent` 발생 시:** 다시 `_UtilLogic.ElapsedSeconds`를 가져와서, 저장해둔 `KeyDownTim [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 로직과 코드 예제를 정확히 인용하여 질문에 대한 핵심인 프로퍼티 저장 값과 계산 방식을 명확하고 간결하게 설명했습니다. [source_doc] | Z키를 누른 시간만큼 플레이어의 크기가 커지고, 높게 점프하는 컴포넌트를 만드는 예제입니다. 만든 컴포넌트를 **DefaultPlayer**에 추가해야 정상 작동합니다. 먼저 Z키를 눌렀을 때 웅크린 자세로 바꾸기 위해 `KeyDownEvent`를 아래와 같이 작성합니다. 누른 시간을 계산하기 위해서 **KeyDownTime** 프로퍼티를 만들고 현재 시간을 기록합니다. ```lua Property: [None] number KeyDownTime = 0 Event Handler: [service: InputService

[task] | single_turn [pass] | ✅ 통과 [title] | InputService [question] | 마우스 버튼 입력 상태를 실시간으로 감지하여 커서를 변경할 때, 왜 OnUpdate 안에서 _InputService:IsKeyPressed를 호출하는 것이 일반적인 방식인가요? [answer] | 제공된 참고 문서의 예제를 기준으로, 마우스 버튼 입력 상태를 실시간으로 감지하여 커서를 변경할 때 `OnUpdate` 안에서 `_InputService:IsKeyPressed`를 호출하는 것이 일반적인 방식인 이유는 다음과 같습니다. **1. 입력 상태의 연속적 모니터링 필요성** `_InputService:IsKeyPressed`는 특정 키나 마우스 버튼이 현재 **누르고 있는지(On/Off 상태)**를 반환하는 상태 확인 함수입니다. * **이벤트 기반 방식의 한계**: 터치나 키 입력 이벤트(`HandleScreenTo [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제와 로직을 정확히 인용하여 OnUpdate와 IsKeyPressed 조합의 필요성(상태 추적 및 효율성)을 논리적으로 잘 설명했습니다. [source_doc] | #### 터치 입력 터치한 위치에 파티클을 보여주는 예제입니다. ```lua Method: [server only] void OnBeginPlay () { local root = _EntityService:GetEntityByPath(EntityPath) for i = 1, #root.Children do root.Children[i].Enable = false end } Event Handler: [service: InputService] HandleScreenTouchEvent (ScreenTouchEvent ev

[task] | single_turn [pass] | ✅ 통과 [title] | InputService [question] | 키 입력이 정상적으로 감지되지 않을 때, KeyUpEvent와 KeyReleaseEvent 중 어떤 이벤트의 처리 로직이 누락되어 있을 가능성이 높은지 어떻게 판단해야 하나요? [answer] | 참고 문서에 제공된 내용에는 `KeyUpEvent`와 `KeyReleaseEvent`의 정확한 정의, 차이점, 또는 키 입력이 감지되지 않을 때의 디버깅 절차가 포함되어 있지 않습니다. 따라서 주어진 문서만을 근거로 두 이벤트 중 어떤 것이 누락되었는지 판단하는 방법은 설명할 수 없습니다. 문서에는 `KeyDownEvent`, `KeyHoldEvent`, `KeyUpEvent`, `KeyReleaseEvent`의 이름만 나열되어 있을 뿐, 각 이벤트가 발생하는 구체적인 시점(예: 키를 누르는 순간, 키를 유지하는 동안, 키를 떼는 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 제공된 문서에 두 이벤트의 차이 설명이 없으므로 이를 인정하고 추가 확인이 필요하다고 답변한 것이 정확하며, 질문의 의도(판단 방법)에 대한 직접적 답변은 부족하지만 허위 정보를 생성하지 않았습니다. [source_doc] | * BasicParticleComponent * RigidbodyComponent * StateComponent * TransformComponent * KeyboardKey * KeyDownEvent * KeyHoldEvent * KeyReleaseEvent * KeyUpEvent * ScreenTouchEvent * ScreenTouchReleaseEvent * UILogic * UtilLogic * Vector3 * EntityService * [InputService를 활용한 입력과 액션](/docs?postId=209)

[task] | single_turn [pass] | ❌ 탈락 [title] | InputService [question] | InputService를 통해 키보드 입력을 처리할 때 KeyDownEvent와 KeyHoldEvent의 발생 시점이 어떻게 다른지 설명해 주세요. [answer] | InputService를 통해 키보드 입력을 처리할 때 `KeyDownEvent`와 `KeyHoldEvent`의 발생 시점은 다음과 같이 다릅니다. * **KeyDownEvent**: 사용자가 키를 **누른 순간** 1회만 발생합니다. 키를 계속 누르고 있어도 추가적으로 발생하지 않습니다. * **KeyHoldEvent**: 사용자가 키를 **누르고 있는 동안** 연속적으로 발생합니다. 키를 유지하는 동안 매 프레임(또는 업데이트 주기에 따라) 반복적으로 호출됩니다. 따라서 "한 번만 실행"해야 하는 동작(예: 점프, 공 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 KeyDownEvent와 KeyHoldEvent의 발생 시점 차이에 대한 설명이 전혀 없으며, _UtilLogic.ElapsedSeconds와 같은 문서에 없는 API를 지어내어 사실을 왜곡했습니다. [source_doc] | * BasicParticleComponent * RigidbodyComponent * StateComponent * TransformComponent * KeyboardKey * KeyDownEvent * KeyHoldEvent * KeyReleaseEvent * KeyUpEvent * ScreenTouchEvent * ScreenTouchReleaseEvent * UILogic * UtilLogic * Vector3 * EntityService * [InputService를 활용한 입력과 액션](/docs?postId=209)

[task] | two_turn [pass] | ✅ 통과 [title] | InputService [question] | InputService의 마우스 및 터치 관련 이벤트(MouseMoveEvent, ScreenTouchEvent, PinchInOutEvent 등)는 화면 조작에 따라 어떻게 분류되어 발생하나요? [answer] | InputService의 마우스 및 터치 관련 이벤트는 조작의 종류와 상태(시작, 유지, 종료)에 따라 다음과 같이 분류되어 발생합니다. **1. 마우스 이동 및 스크롤** * **MouseMoveEvent**: 마우스 포인터가 화면 위를 움직일 때마다 발생하며, 연속적인 이동 감지에 사용됩니다. * **MouseScrollEvent**: 마우스 휠(스크롤)을 올리거나 내릴 때 발생하여 스크롤 입력을 처리합니다. **2. 화면 터치 및 클릭 (단일 지점)** 단일 지점의 터치나 클릭은 '누름', '누르고 있는 상태', ' [followup] | 마우스 스크롤(MouseScrollEvent)과 화면 핀치(PinchInOutEvent) 동작을 동시에 입력으로 처리해야 하는 상황에서, 두 이벤트 핸들러의 우선순위나 충돌을 방지하기 위해 어떤 로직을 구성할 수 있나요? [followup_answer] | 참고 문서에 마우스 스크롤(`MouseScrollEvent`)과 화면 핀치(`PinchInOutEvent`) 이벤트 핸들러 간의 **우선순위 설정 방법이나 충돌 방지 로직에 대한 구체적인 지침은 명시되어 있지 않습니다.** 다만, 문서에서 제공하는 두 이벤트의 정의와 mLua의 일반적인 스크립트 구조를 바탕으로, 개발자가 직접 로직을 구성할 때 고려할 수 있는 접근 방식을 설명할 수 있습니다. ### 1. 이벤트 특성 분석 * **MouseScrollEvent**: 마우스 스크롤을 올리거나 내릴 때 발생. * **Pinc [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 이벤트 정의와 분류를 정확하고 명확하게 설명하며, mLua 이벤트 핸들러 구문을 올바르게 인용했습니다. [source_doc] | - **ExitPopupClosedEvent** 종료 팝업을 닫을 때 발생하는 이벤트입니다. - **ExitPopupOpenedEvent** 종료 팝업을 열 때 발생하는 이벤트입니다. - **KeyDownEvent** Key를 눌렀을 때 1회 발생합니다. - **KeyHoldEvent** Key를 누르는 동안 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyReleaseEvent** Key를 눌렀다 뗐을 때 1회 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyUpEvent** Key를 눌렀다

[task] | single_turn [pass] | ✅ 통과 [title] | InputService [question] | RigidbodyComponent:SetForce를 통해 점프력을 부여할 때, Z키를 누른 시간의 10배만큼의 힘을 가하려면 KeyDownTime과 현재 시간(_UtilLogic.ElapsedSeconds)을 어떻게 활용해야 하나요? [answer] | Z키를 누른 시간의 10배만큼의 힘을 가하기 위해 `KeyDownTime`과 `_UtilLogic.ElapsedSeconds`를 활용하는 방식은 다음과 같습니다. 1. **누름 시점 기록 (`KeyDownEvent`)**: Z키가 눌리는 순간(`KeyDownEvent`)에 `_UtilLogic.ElapsedSeconds`의 현재 값을 `KeyDownTime` 프로퍼티에 저장합니다. 이 값은 키를 누르기 시작한 기준 시각이 됩니다. 2. **누른 시간 계산 및 힘 적용 (`KeyUpEvent`)**: Z키를 떼는 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 로직과 API를 정확히 인용하여 질문에 대한 명확하고 일관된 답변을 제공했습니다. [source_doc] | Z키를 누른 시간만큼 플레이어의 크기가 커지고, 높게 점프하는 컴포넌트를 만드는 예제입니다. 만든 컴포넌트를 **DefaultPlayer**에 추가해야 정상 작동합니다. 먼저 Z키를 눌렀을 때 웅크린 자세로 바꾸기 위해 `KeyDownEvent`를 아래와 같이 작성합니다. 누른 시간을 계산하기 위해서 **KeyDownTime** 프로퍼티를 만들고 현재 시간을 기록합니다. ```lua Property: [None] number KeyDownTime = 0 Event Handler: [service: InputService

[task] | code [pass] | ✅ 통과 [title] | InputService [question] | 터치 입력 시 해당 위치에 파티클을 활성화하고 색상을 녹색으로 변경한 뒤, 터치 해제 시 비활성화하고 흰색으로 되돌리는 스크립트를 작성해줘 [answer] | 요청하신 기능은 `InputService`의 터치 이벤트 핸들러를 사용해서 구현할 수 있습니다. 아래 스크립트는 터치한 위치에 해당하는 파티클 엔티티를 활성화하고 색상을 녹색으로 변경하며, 터치를 해제하면 비활성화하고 흰색으로 되돌리는 로직입니다. 참고로, 이 스크립트가 정상 동작하려면 미리 설정된 `EntityPath` 경로에 터치 ID(`TouchId`)와 일一对응하는 자식 엔티티들이 존재해야 합니다. 또한, 해당 자식 엔티티들은 `BasicParticleComponent`와 `TransformComponent`를 가져야 합니 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 질문에 요청한 기능을 참고 문서의 예제와 정확히 일치하는 코드로 제공하고, 전제 조건을 명확히 설명하여 완벽하게 답변했습니다. [source_doc] | #### 터치 입력 터치한 위치에 파티클을 보여주는 예제입니다. ```lua Method: [server only] void OnBeginPlay () { local root = _EntityService:GetEntityByPath(EntityPath) for i = 1, #root.Children do root.Children[i].Enable = false end } Event Handler: [service: InputService] HandleScreenTouchEvent (ScreenTouchEvent ev

[task] | two_turn [pass] | ✅ 통과 [title] | InputService [question] | InputService에서 제공하는 KeyDownEvent, KeyHoldEvent, KeyUpEvent 등의 이벤트는 각각 어떤 시점에 발생하며, 짧게 눌렀을 때의 동작 차이가 무엇인가요? [answer] | InputService에서 제공하는 키 입력 관련 이벤트의 발생 시점과 짧게 눌렀을 때의 동작 차이는 다음과 같습니다. 1. **KeyDownEvent** - **발생 시점**: 키를 눌렀을 때 1회 발생합니다. - **짧게 눌렀을 때**: 키가 눌리는 순간에 항상 1회 발생합니다. 2. **KeyUpEvent** - **발생 시점**: 키를 눌렀다 뗐을 때 1회 발생합니다. - **짧게 눌렀을 때**: 키가 뗴지는 순간에 항상 1회 발생합니다. 3. **KeyHoldEvent** - **발생 시점* [followup] | KeyHoldEvent와 KeyReleaseEvent가 '짧게 누르면 발생하지 않는다'는 조건에서, 실제 스크립트 구현 시 이 두 이벤트의 발생 타이밍을 구분하여 로직을 처리하려면 어떤 코드를 작성해야 하나요? [followup_answer] | 참고 문서에 제공된 정보에는 `KeyHoldEvent`와 `KeyReleaseEvent`가 '짧게 누르면 발생하지 않는다'는 조건만 명시되어 있을 뿐, **이 두 이벤트의 발생 타이밍을 구분하여 로직을 처리하기 위한 구체적인 코드 예제나 추가적인 API(예: 누른 시간 측정, 상태 플래그 관리 등)에 대한 설명이 없습니다.** 따라서 참고 문서에만 근거하여 두 이벤트의 발생 타이밍을 구분하는 로직을 작성하는 것은 불가능합니다. 문서에는 `KeyDownEvent`, `KeyUpEvent`, `KeyHoldEvent`, `KeyRel [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 각 키 이벤트의 발생 시점과 짧게 눌렀을 때의 동작 차이(발생/미발생)를 정확하고 명확하게 설명하고 있습니다. [source_doc] | - **ExitPopupClosedEvent** 종료 팝업을 닫을 때 발생하는 이벤트입니다. - **ExitPopupOpenedEvent** 종료 팝업을 열 때 발생하는 이벤트입니다. - **KeyDownEvent** Key를 눌렀을 때 1회 발생합니다. - **KeyHoldEvent** Key를 누르는 동안 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyReleaseEvent** Key를 눌렀다 뗐을 때 1회 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyUpEvent** Key를 눌렀다

[task] | code [pass] | ✅ 통과 [title] | InputService [question] | KeyDownEvent 를 수신하여 Space 키가 눌릴 때 EntityService 로 생성된 대상의 TransformComponent.Position 을 Vector3(0, 10, 0) 만큼 이동시키는 스크립트를 작성해줘 [answer] | KeyDownEvent 이벤트 핸들러에서 `KeyboardKey.Space` 키 입력을 감지하고, `_EntityService`를 통해 대상 엔티티를 가져와 `TransformComponent.Position`을 `Vector3(0, 10, 0)`만큼 더하는 로직을 구현했습니다. 참고로 대상 엔티티의 경로(`/maps/map01/obj` 등)는 실제 월드 설정에 따라 수정해야 합니다. ```lua Property: [None] string TargetEntityPath = "/maps/map01/obj" Event Handle [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서와 규칙에 기반하여 KeyDownEvent, EntityService, TransformComponent를 올바르게 활용한 명확하고 정확한 스크립트를 제공했습니다. [source_doc] | * BasicParticleComponent * RigidbodyComponent * StateComponent * TransformComponent * KeyboardKey * KeyDownEvent * KeyHoldEvent * KeyReleaseEvent * KeyUpEvent * ScreenTouchEvent * ScreenTouchReleaseEvent * UILogic * UtilLogic * Vector3 * EntityService * [InputService를 활용한 입력과 액션](/docs?postId=209)

[task] | two_turn [pass] | ✅ 통과 [title] | LocalizationService [question] | 런타임에 사용자가 다른 언어로 전환된 경우 처리 방법을 알고 싶습니다. [answer] | `LocalizationService`에는 사용자가 언어를 변경했을 때 발생하는 특정 이벤트(예: `LocaleChangedEvent`)가 문서에 명시되어 있지 않습니다. 따라서 런타임에 언어 전환을 감지하기 위해 사용할 수 있는 전용 이벤트 핸들러는 제공되지 않습니다. 현재 문서에 따르면 `CurrentLocaleId` 프로퍼티는 읽기 전용(`[ReadOnly]`)이며, 언어 변경 시 자동으로 통보되는 이벤트가 정의되어 있지 않습니다. ### 대안적 접근 방법 (주의: 비추천) 문서에 명시된 API만으로 언어 변경을 **자동으 [followup] | CurrentLocaleId가 읽기 전용이므로, 언어 변경 시 기존에 생성된 UI 텍스트를 갱신하기 위해 GetTranslatorForLocale을 어떻게 활용해야 하는지 코드 예시를 보여주세요. [followup_answer] | `CurrentLocaleId`가 읽기 전용이므로, 언어 변경 이벤트를 직접 구독할 수 없습니다. 따라서 언어 변경 시 기존 UI 텍스트를 갱신하려면, **언어 변경이 발생한다고 가정되는 시점**(예: 설정 UI에서 언어를 선택한 버튼 클릭 시)에 `GetTranslatorForLocale`을 호출하여 해당 언어의 `Translator` 객체를 가져오고, 이를 통해 텍스트를 다시 조회하여 UI에 반영하는 방식으로 구현해야 합니다. `GetTranslatorForLocale(string localeId)`는 특정 로케일 ID에 해당 [scores] | helpfulness=3 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 명시된 API와 제약사항을 정확히 분석하여, 존재하지 않는 이벤트를 지어내지 않고 현실적인 대안(폴링, UI 조작)을 제시하여 질문의 의도에 부합합니다. [source_doc] | 텍스트 번역 관련 기능을 제공합니다. # Properties - **string CurrentLocaleId [ReadOnly]** 클라이언트의 현재 언어 코드입니다. 출시 월드에서는 '월드 언어' 메뉴에서 선택한 언어이며, 메이커에서는 '테스트 플레이 언어' 옵션에서 설정한 언어입니다. - **Translator LocalTranslator [ReadOnly]** CurrentLocaleId에 해당하는 Translator 객체입니다. # Methods - **string GetText(string key) [Clie

[task] | two_turn [pass] | ✅ 통과 [title] | InputService [question] | InputService의 키 입력 이벤트(KeyDown/Up/Hold/Release)를 활용해 장력형 점프(누른 시간만큼 점프력 증가) 컴포넌트를 구현하려면 어떤 구조로 코드를 작성해야 하나요? [answer] | 장력형 점프 컴포넌트는 `InputService`의 키 입력 이벤트를 조합하여 구현합니다. Z키를 누르는 순간부터 놓는 순간까지의 시간을 측정하여 점프력의 크기를 결정하고, 누르는 동안 시각적 피드백(크기 변화)을 제공하며, 놓는 순간 저장된 힘으로 점프를 실행하는 구조입니다. 이 컴포넌트는 반드시 **DefaultPlayer**에 추가되어야 정상 작동합니다. 구현을 위한 핵심 구성 요소는 다음과 같습니다. 1. **Property**: Z키를 누른 시점의 시간을 저장하기 위해 `KeyDownTime` 프로퍼티를 선언합니다. [followup] | KeyHoldEvent에서 크기를 키우는 로직과 KeyReleaseEvent에서 크기를 초기화하는 로직을 함께 포함해 전체 스크립트 예제를 보여주세요. [followup_answer] | Z키를 누르는 동안 크기를 키우고, 키를 놓을 때 크기를 초기화하는 전체 스크립트 예시는 다음과 같습니다. 참고로, 제공된 문서에는 `KeyReleaseEvent` 처리 함수의 구체적인 코드 블록이 포함되어 있지 않습니다. 문서에는 "커진 크기가 유지된 채로 다른 행동을 하지 못하도록 `KeyReleaseEvent`에 아래와 같이 작성합니다"라고 언급만 되어 있고, 실제 구현 코드가 제시되지 않았습니다. 또한, 문서에 따르면 아주 짧게 눌러서 `KeyHoldEvent`가 호출되지 않은 경우 `KeyReleaseEvent`도 호출되 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 구조, API, 코드 예제를 정확히 인용하여 질문에 대한 명확하고 일관된 답변을 제공했습니다. [source_doc] | Z키를 누른 시간만큼 플레이어의 크기가 커지고, 높게 점프하는 컴포넌트를 만드는 예제입니다. 만든 컴포넌트를 **DefaultPlayer**에 추가해야 정상 작동합니다. 먼저 Z키를 눌렀을 때 웅크린 자세로 바꾸기 위해 `KeyDownEvent`를 아래와 같이 작성합니다. 누른 시간을 계산하기 위해서 **KeyDownTime** 프로퍼티를 만들고 현재 시간을 기록합니다. ```lua Property: [None] number KeyDownTime = 0 Event Handler: [service: InputService

[task] | single_turn [pass] | ✅ 통과 [title] | LocalizationService [question] | `CurrentLocaleId`가 읽기 전용이라 직접 변경할 수 없는데, 메이커 모드에서 특정 언어로만 테스트를 하고 싶을 때 어떤 방법으로 설정을 바꿔야 하나요? [answer] | `CurrentLocaleId`는 읽기 전용(ReadOnly) 프로퍼티이므로 스크립트 코드에서 직접 값을 변경하거나 할당할 수 없습니다. 메이커 모드에서 특정 언어로 테스트를 하려면 스크립트를 수정하는 것이 아니라, 메이플스토리 월드 에디터의 설정 메뉴를 통해 변경해야 합니다. 구체적으로 **메이커 모드**에서는 **'테스트 플레이 언어'** 옵션에서 원하는 언어를 선택하면, 해당 언어 코드가 `CurrentLocaleId`로 반영되어 `GetText`나 `SmartFormat` 등의 함수가 해당 언어의 번역 텍스트를 반환합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 명시된 메이커 모드 '테스트 플레이 언어' 옵션을 정확히 인용하여 읽기 전용 프로퍼티 변경 불가 문제를 해결하는 방법을 명확히 설명했음. [source_doc] | 텍스트 번역 관련 기능을 제공합니다. # Properties - **string CurrentLocaleId [ReadOnly]** 클라이언트의 현재 언어 코드입니다. 출시 월드에서는 '월드 언어' 메뉴에서 선택한 언어이며, 메이커에서는 '테스트 플레이 언어' 옵션에서 설정한 언어입니다. - **Translator LocalTranslator [ReadOnly]** CurrentLocaleId에 해당하는 Translator 객체입니다. # Methods - **string GetText(string key) [Clie

[task] | code [pass] | ✅ 통과 [title] | InputService [question] | ScreenTouchEvent 와 ScreenTouchReleaseEvent 를 처리하여 TouchId 가 1 미만일 경우 즉시 반환하고, 유효한 경우 TransformComponent.WorldPosition 을 ScreenToWorldPosition 으로 변환해 설정하는 스크립트를 작성해줘 [answer] | `InputService`의 `ScreenTouchEvent`와 `ScreenTouchReleaseEvent`를 처리하여 터치 위치에 파티클(또는 엔티티)을 표시하는 스크립트입니다. 참고: - `TouchId`가 1 미만이면 즉시 반환합니다. - `_UILogic:ScreenToWorldPosition(TouchPoint):ToVector3()`을 사용하여 화면 좌표를 월드 좌표로 변환합니다. - `TransformComponent.WorldPosition`에 변환된 좌표를 설정합니다. - `HandleScreenTouchRele [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 질문에서 요구한 로직(TouchId 검증, 좌표 변환, 이벤트 처리)을 참고 문서의 예제와 정확히 일치하도록 구현하여 제공했습니다. [source_doc] | #### 터치 입력 터치한 위치에 파티클을 보여주는 예제입니다. ```lua Method: [server only] void OnBeginPlay () { local root = _EntityService:GetEntityByPath(EntityPath) for i = 1, #root.Children do root.Children[i].Enable = false end } Event Handler: [service: InputService] HandleScreenTouchEvent (ScreenTouchEvent ev

[task] | instruction_following [pass] | ✅ 통과 [title] | DataStorageService [question] | DataStorageService에서 제공되는 데이터 저장소 종류와 각각의 생성 함수 이름을 표로 정리하세요. [answer] | DataStorageService에서 제공되는 데이터 저장소 종류와 각각의 생성(얻어오기) 함수는 다음과 같습니다. | 데이터 저장소 종류 | 생성 함수 이름 | | :--- | :--- | | GlobalDataStorage | `GetGlobalDataStorage(string name)` | | UserDataStorage | `GetUserDataStorage(string userId)` | | CreatorDataStorage | `GetCreatorDataStorage()` 또는 `GetCreatorDataStorage [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 4가지 데이터 저장소 종류와 해당 생성 함수를 정확하고 간결하게 표로 정리하였으며, 비추천 함수에 대한 주의사항도 올바르게 포함했습니다. [source_doc] | tAsync() 함수를 사용하세요. - **CreatorDataStorage GetCreatorDataStorage() [ServerOnly]** CreatorDataStorage를 얻어옵니다. - **CreatorDataStorage GetCreatorDataStorage(string name) [ServerOnly]** 특정 이름의 CreatorDataStorage를 얻어옵니다. - **int32, CreatorDataStoragePages GetCreatorDataStoragePagesAndWait() [ServerOn

[task] | instruction_following [pass] | ✅ 통과 [title] | DataStorageService [question] | 문서에 명시된 DataStorageService 메서드 중 [Yield] 태그가 붙어 있어 스크립트 실행을 중단시키는 동기 메서드만 5줄 이내의 번호 목록으로 나열하세요. [answer] | 1. DeleteCreatorDataStorageAndWait() 2. DeleteCreatorDataStorageAndWait(string name) 3. DeleteGlobalDataStorageAndWait(string name) 4. DeleteSortableDataStorageAndWait(string name) 5. DeleteUserDataStorageAndWait(string userId) [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 [Yield] 태그가 붙은 동기 메서드 5가지를 정확하고 간결하게 번호 목록으로 나열했습니다. [source_doc] | 다양한 DataStorage 접근 기능을 제공합니다. # Methods - **int32 DeleteCreatorDataStorageAndWait() [ServerOnly] [Yield]** CreatorDataStorage를 삭제하고, 에러 코드를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. - **int32 DeleteCreatorDataStorageAndWait(string name) [ServerOnly] [Yield]** 특정 이름의 CreatorDataStorage를 삭제하고, 에러 코드를 반환합니다

[task] | instruction_following [pass] | ✅ 통과 [title] | DataStorageService [question] | 비동기 함수를 사용할 때 주의해야 할 점과 동기 함수와의 차이를 3문장 이내로 설명하세요. [answer] | `[Yield]` 태그가 붙은 동기 함수(예: `GetCreatorDataStoragePagesAndWait`)는 작업 완료 시까지 스크립트 실행을 중단시키지만, `Async` 함수는 즉시 반환하여 스크립트 실행이 계속 진행됩니다. 따라서 `Async` 함수는 작업 완료 후 결과를 처리할 콜백 함수(`callbackFunction`)를 반드시 전달해야 하며, 이 콜백 내에서 에러 코드와 조회 결과를 확인해야 합니다. 비동기 처리를 사용할 때는 콜백이 실행되는 시점에 다른 로직이 개입할 수 있으므로, 상태 변경이나 의존성 있는 작 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 [Yield] 및 Async 함수 설명과 정확히 일치하며, 요구사항인 3문장 이내로 명확하게 차이점과 주의사항을 서술했습니다. [source_doc] | tAsync() 함수를 사용하세요. - **CreatorDataStorage GetCreatorDataStorage() [ServerOnly]** CreatorDataStorage를 얻어옵니다. - **CreatorDataStorage GetCreatorDataStorage(string name) [ServerOnly]** 특정 이름의 CreatorDataStorage를 얻어옵니다. - **int32, CreatorDataStoragePages GetCreatorDataStoragePagesAndWait() [ServerOn

[task] | two_turn [pass] | ✅ 통과 [title] | DataStorageService [question] | GlobalDataStorage를 가져오는 기본 방식이 어떻게 되는지 궁금합니다. [answer] | `GlobalDataStorage`를 가져오려면 `_DataStorageService`의 `GetGlobalDataStorage` 메서드를 사용합니다. 이 메서드에 저장소의 이름을 문자열로 전달하면 해당 `GlobalDataStorage` 객체를 반환합니다. 기본 사용 예제는 다음과 같습니다. ```lua local sampleStorage = _DataStorageService:GetGlobalDataStorage("sampleStorage") ``` 위 코드에서 `"sampleStorage"`는 가져오고자 하는 Global [followup] | GetGlobalDataStoragePagesAsync로 페이지를 순회하며 데이터를 처리할 때, IsLastPage 체크와 MoveToNextPageAndWait 호출 순서가 왜 그런 구조인지 설명해 주세요. [followup_answer] | `GetGlobalDataStoragePagesAsync`에서 페이지를 순회할 때 `IsLastPage` 체크와 `MoveToNextPageAndWait` 호출 순서는 **현재 페이지의 데이터를 완전히 처리한 후에야 다음 페이지로 넘어갈 수 있도록** 하기 위한 구조입니다. 참고 문서의 예제를 보면 다음과 같은 순서를 따릅니다. ```lua while true do -- 1. 현재 페이지의 데이터를 가져옴 local dataStorages = pages:GetCurrentPageDatas() -- 2. 현 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 예제 코드를 정확히 인용하여 GlobalDataStorage 가져오기 방법을 명확하고 간결하게 설명했습니다. [source_doc] | # Examples #### GetGlobalDataStorage DataStorageService를 활용해서 GlobalDataStorage를 가져오는 예제입니다. ```lua local sampleStorage = _DataStorageService:GetGlobalDataStorage("sampleStorage") ``` #### GetGlobalDataStoragePagesAsync DataStorageService를 활용해서 모든 GlobalDataStorage를 제거하는 예제입니다. ```lua _DataSto

[task] | two_turn [pass] | ✅ 통과 [title] | InputService [question] | InputService에서 팝업 관련 이벤트(ExitPopupOpenedEvent, MenuPopupClosedEvent 등)는 어떤 상황에서 트리거되며, 일반적인 키/마우스 입력 이벤트와 처리 순서에서 차이가 있나요? [answer] | InputService에서 팝업 관련 이벤트는 게임 UI의 특정 팝업 상태가 변할 때 트리거됩니다. 구체적으로 **ExitPopupOpenedEvent**는 종료 팝업을 열 때, **ExitPopupClosedEvent**는 종료 팝업을 닫을 때 발생합니다. 마찬가지로 **MenuPopupOpenedEvent**는 메뉴 팝업을 열 때, **MenuPopupClosedEvent**는 메뉴 팝업을 닫을 때 발생하며, 이는 사용자가 팝업 UI를 직접 조작하거나 게임 로직에 의해 팝업이 열리고 닫히는 시점에 발생합니다. 일반적인 키/마우 [followup] | 종료 팝업이 열려 있는 상태에서 KeyDownEvent가 발생했을 때, 팝업 UI의 동작과 배경 게임 로직의 키 입력 처리를 동시에 관리하기 위해 어떤 이벤트 핸들러 구조를 설계해야 하나요? [followup_answer] | 참고 문서에 따르면, InputService의 이벤트들은 모두 독립적으로 발생하며, 팝업 상태에 따라 키 입력이 자동으로 차단되거나 우선순위가 바뀌는 내장 메커니즘에 대한 설명은 없습니다. 또한 `ExitPopupOpenedEvent`와 `KeyDownEvent` 간의 처리 순서나 상호작용에 대한 정보도 문서에 포함되어 있지 않습니다. 따라서 "종료 팝업이 열려 있을 때 배경 게임 로직의 키 입력을 차단하고, 팝업 UI만 반응하도록 하려면"이라는 요구사항을 구현하기 위해서는 **스크립트 작성자가 스스로 팝업 상태를 추적하고, `K [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 있는 팝업 및 키/마우스 이벤트의 트리거 조건을 정확히 설명하고, 문서에 없는 처리 순서 정보는 없다고 명시하여 정확성을 유지했으며, mLua 규칙에 부합하는 예시 코드를 제공했습니다. [source_doc] | - **ExitPopupClosedEvent** 종료 팝업을 닫을 때 발생하는 이벤트입니다. - **ExitPopupOpenedEvent** 종료 팝업을 열 때 발생하는 이벤트입니다. - **KeyDownEvent** Key를 눌렀을 때 1회 발생합니다. - **KeyHoldEvent** Key를 누르는 동안 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyReleaseEvent** Key를 눌렀다 뗐을 때 1회 발생합니다. 짧게 누르면 발생하지 않습니다. - **KeyUpEvent** Key를 눌렀다

[task] | single_turn [pass] | ❌ 탈락 [title] | LocalizationService [question] | `GetTranslatorForLocale`로 다른 언어의 Translator 객체를 가져와도, 해당 객체의 텍스트가 실제로 화면에 반영되려면 추가적인 설정이나 처리가 필요한가요? [answer] | 아니요, `GetTranslatorForLocale`로 다른 언어의 Translator 객체를 가져와서 해당 객체의 메서드를 직접 호출하는 경우 추가적인 설정이나 처리는 필요하지 않습니다. `GetTranslatorForLocale`은 특정 언어 코드에 해당하는 Translator 객체를 반환하며, 이 객체는 해당 언어의 번역 데이터에 접근할 수 있는 독립적인 인스턴스입니다. 따라서 반환받은 Translator 객체의 `GetText` 또는 `GetTextFormat` 메서드를 직접 호출하면, 해당 언어로 번역된 텍스트가 즉시 반 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=1 coherence=3 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시되지 않은 Translator 객체의 GetText/GetTextFormat 메서드를 지어내어 정확도가 낮음 [source_doc] | 텍스트 번역 관련 기능을 제공합니다. # Properties - **string CurrentLocaleId [ReadOnly]** 클라이언트의 현재 언어 코드입니다. 출시 월드에서는 '월드 언어' 메뉴에서 선택한 언어이며, 메이커에서는 '테스트 플레이 언어' 옵션에서 설정한 언어입니다. - **Translator LocalTranslator [ReadOnly]** CurrentLocaleId에 해당하는 Translator 객체입니다. # Methods - **string GetText(string key) [Clie

[task] | two_turn [pass] | ✅ 통과 [title] | LocalizationService [question] | LocalizationService에서 다국어 텍스트를 불러오는 기본 방식이 궁금합니다. [answer] | `LocalizationService`를 사용하여 다국어 텍스트를 불러오는 가장 기본적이고 일반적인 방식은 `GetText` 메서드를 사용하는 것입니다. 이 메서드는 클라이언트에서만 사용할 수 있으며, 번역 테이블에서 특정 키(key)에 해당하는 현재 언어(`CurrentLocaleId`)의 텍스트를 찾아 반환합니다. 기본적인 사용 예시는 다음과 같습니다. ```lua Method: [client only] void OnBeginPlay() { -- 번역 테이블에 "GREETING"이라는 키가 있다고 가정 loca [followup] | GetText와 GetTextFormat의 차이점과, GetTextFormat에서 args로 전달할 때 주의할 점이 있나요? [followup_answer] | `GetText`와 `GetTextFormat`의 차이점과 `GetTextFormat` 사용 시 주의할 점은 다음과 같습니다. ### 1. GetText와 GetTextFormat의 차이 | 메서드 | 설명 | 사용 시나리오 | | :--- | :--- | :--- | | **GetText(key)** | 번역 테이블에서 `key`에 해당하는 **고정된 텍스트**만 반환합니다. | 변수가 없는 고정된 문구(예: "Start Game", "Settings")를 불러올 때 | | **GetTextFormat(key, args...) [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 LocalizationService API(특히 GetText, GetTextFormat)와 제약 조건([ClientOnly])을 정확히 설명하고, mLua 문법 규칙에 부합하는 명확한 코드 예시를 제공하여 질문에 완벽하게 답하고 있음. [source_doc] | 텍스트 번역 관련 기능을 제공합니다. # Properties - **string CurrentLocaleId [ReadOnly]** 클라이언트의 현재 언어 코드입니다. 출시 월드에서는 '월드 언어' 메뉴에서 선택한 언어이며, 메이커에서는 '테스트 플레이 언어' 옵션에서 설정한 언어입니다. - **Translator LocalTranslator [ReadOnly]** CurrentLocaleId에 해당하는 Translator 객체입니다. # Methods - **string GetText(string key) [Clie

[task] | two_turn [pass] | ✅ 통과 [title] | LocalizationService [question] | 동적 데이터(예: 아이템 수량, 시간)를 포함하는 문장을 번역하고 싶을 때 최적의 방법은 무엇인가요? [answer] | 동적 데이터를 포함하는 문장을 번역할 때는 `LocalizationService`의 `GetTextFormat` 메서드를 사용하는 것이 최적의 방법입니다. `GetTextFormat`은 번역 테이블에서 지정된 `key`에 해당하는 텍스트를 가져온 후, 전달된 `args` 인자들을 해당 텍스트의 형식 자리표시자에 맞게 채워 넣어서 최종 문자열을 반환합니다. 이는 각 언어의 문장 구조(예: 영어의 "You have {0} items"와 같은 언어의 "아이템이 {0}개 있습니다")에 맞게 번역된 문장 안에서 동적 데이터를 자연스럽게 삽 [followup] | SmartFormat과 GetTextFormat 중 어떤 것을 선택해야 하며, 번역 테이블 키를 어떻게 관리해야 효율적인지 설명해 주세요. [followup_answer] | `SmartFormat`과 `GetTextFormat`의 선택 기준과 번역 테이블 키 관리 방법은 다음과 같습니다. ### 1. SmartFormat vs GetTextFormat 선택 기준 **`GetTextFormat`을 사용해야 하는 경우 (권장)** * **목적:** 번역 테이블에 등록된 특정 키(`key`)에 해당하는 번역된 문장에 동적 데이터를 삽입할 때 사용합니다. * **장점:** 각 언어의 문장 구조(어순, 복수형 규칙 등)에 맞게 번역된 텍스트를 기반으로 형식을 적용하므로, 자연스러운 다국어 지원을 할 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 명시된 GetTextFormat 메서드의 용도, 시그니처, ClientOnly 제약사항을 정확히 이해하고 적절히 설명했으며, 예제 코드도 mLua 문법과 API 사용법에 부합합니다. [source_doc] | 텍스트 번역 관련 기능을 제공합니다. # Properties - **string CurrentLocaleId [ReadOnly]** 클라이언트의 현재 언어 코드입니다. 출시 월드에서는 '월드 언어' 메뉴에서 선택한 언어이며, 메이커에서는 '테스트 플레이 언어' 옵션에서 설정한 언어입니다. - **Translator LocalTranslator [ReadOnly]** CurrentLocaleId에 해당하는 Translator 객체입니다. # Methods - **string GetText(string key) [Clie

[task] | single_turn [pass] | ✅ 통과 [title] | Service [question] | `SendEvent` 메서드로 이벤트를 발생시켰을 때, 해당 이벤트를 수신하는 핸들러가 존재하지 않으면 에러가 발생하나요? [answer] | 제공된 문서에는 `SendEvent` 메서드가 "이벤트를 발생시킵니다"라고만 설명되어 있으며, 수신하는 핸들러가 존재하지 않을 경우의 동작(에러 발생 여부 등)에 대한 구체적인 정보는 없습니다. 따라서 문서에 근거하여 에러가 발생하는지 여부를 단정할 수 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 동작을 추측하지 않고 문서 한계를 명확히 지적하여 정확하고 일관되게 답변했습니다. [source_doc] | 모든 서비스의 부모 서비스입니다. 서비스의 기본 기능들을 제공합니다. # Methods - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤

[task] | instruction_following [pass] | ✅ 통과 [title] | DataStorageService [question] | DataStoragePagesAsync 함수의 비동기 처리 흐름을 단계별 번호 목록으로 작성하되, 각 단계는 10자 이내로 제한하세요. [answer] | 1. 함수 호출 2. 페이지 조회 3. 비동기 대기 4. 작업 완료 5. 콜백 실행 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 비동기 처리 흐름을 10자 이내 제약에 맞춰 정확하고 간결하게 단계별로 정리했습니다. [source_doc] | taStoragePagesAsync(func<int32, UserDataStoragePages> callbackFunction) [ServerOnly]** UserDataStorage를 페이지 단위로 조회합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 조회용 객체와 함께 callbackFunction으로 전달된 함수가 호출됩니다. - **boolean SetAndWait(string storageName, string key, string value) [Deprecated] [ServerOnly] [Yield

[task] | single_turn [pass] | ✅ 통과 [title] | Service [question] | `ConnectEvent` 메서드에서 `string key` 인자를 사용할 때, 이벤트 타입의 이름이 아닌 다른 값을 넣으면 어떤 문제가 발생하나요? [answer] | `ConnectEvent` 메서드의 `string key` 인자에는 **이벤트 타입의 이름**만 넣어야 합니다. 문서에 따르면, 이 메서드는 "이 서비스에서 **타입의 이름이 key인 이벤트**가 발생하면" 핸들러로 통지받도록 설계되어 있습니다. 따라서 이벤트 타입의 실제 이름과 다른 값을 넣으면, 해당 값에 해당하는 이벤트가 발생하지 않으므로 핸들러가 절대 호출되지 않는 문제가 발생합니다. 즉, 이벤트 연결이 정상적으로 이루어지지 않게 됩니다. 정확한 이벤트 타입 이름을 알 수 없다면, 문자열 대신 **이벤트 타입 객체 자체* [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 설명과 일치하며, 잘못된 key 사용 시 핸들러가 호출되지 않는다는 논리적 결론과 대안 제시가 적절합니다. [source_doc] | 모든 서비스의 부모 서비스입니다. 서비스의 기본 기능들을 제공합니다. # Methods - **EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)** 이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다. - **EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)** 이벤

[task] | instruction_following [pass] | ❌ 탈락 [title] | DataStorageService [question] | DataStorageService의 SetAndWait와 SetAsync 함수가 비추천(Deprecated)인 이유와 대체 방법을 2문장 이내로 설명하세요. [answer] | `SetAndWait`와 `SetAsync`는 더 이상 사용하지 않는 함수로, 용도에 맞는 DataStorage의 해당 함수를 사용해야 합니다. 따라서 `_DataStorageService:GetUserDataStorage(userId)`로 얻은 UserDataStorage 객체의 `SetAndWait()` 또는 `SetAsync()` 메서드를 호출하는 것이 대체 방법입니다. [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 없는 '_DataStorageService:GetUserDataStorage' API를 지어내어 대체 방법을 구체적으로 설명하는 과정에서 정확도가 떨어집니다. [source_doc] | taStoragePagesAsync(func<int32, UserDataStoragePages> callbackFunction) [ServerOnly]** UserDataStorage를 페이지 단위로 조회합니다. 이 작업은 비동기로 수행되며, 작업이 완료되면 에러 코드, 조회용 객체와 함께 callbackFunction으로 전달된 함수가 호출됩니다. - **boolean SetAndWait(string storageName, string key, string value) [Deprecated] [ServerOnly] [Yield

[task] | instruction_following [pass] | ✅ 통과 [title] | LocalizationService [question] | 문서의 코드 예제에서 `TEXT_TEST3` 키를 사용하여 `koTranslator:GetTextFormat`을 호출할 때, 첫 번째 인수로 "세상"과 "세계"를 각각 전달한 결과 문자열 2개를 표(입력값 | 출력값) 형태로만 정리하세요. [answer] | | 입력값 | 출력값 | | :--- | :--- | | "세상" | 안녕, 세상아! | | "세계" | 안녕, 세계야! | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 코드 주석과 결과 로그에 명시된 입력값과 출력값을 정확히 표로만 정리하여 질문에 완벽히 부응했습니다. [source_doc] | LocaleDataSet에서 텍스트를 조회하고 포맷에 맞게 변환하는 예제입니다. LocaleDataSet에 아래와 같이 내용을 작성해 예제를 사용할 수 있습니다. | Key | Source | Note | ko | en | | --- | --- | --- | --- | --- | | TEXT_TEST1 | Default Text | 일반 텍스트 예제 | 안녕 | Hello | | TEXT_TEST2 | Default Text | 간단한 포맷 예제 | 안녕, {0}! | Hello, {0}! | | TEXT_TEST3 | Defau

[task] | instruction_following [pass] | ✅ 통과 [title] | DataStorageService [question] | _GetGlobalDataStorage_ 메서드의 호출 문법과 인자 구성을 1줄 코드로만 출력하세요. [answer] | ```lua local storage = _DataStorageService:GetGlobalDataStorage("storageName") ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 질문에서 요구한 1줄 코드 형식으로 참고 문서의 예제와 일치하는 올바른 문법을 제시했습니다. [source_doc] | # Examples #### GetGlobalDataStorage DataStorageService를 활용해서 GlobalDataStorage를 가져오는 예제입니다. ```lua local sampleStorage = _DataStorageService:GetGlobalDataStorage("sampleStorage") ``` #### GetGlobalDataStoragePagesAsync DataStorageService를 활용해서 모든 GlobalDataStorage를 제거하는 예제입니다. ```lua _DataSto

[task] | instruction_following [pass] | ✅ 통과 [title] | DataStorageService [question] | DeleteCreatorDataStorage 계열 메서드 4개를 시그니처, 실행 공간, 비동기 여부, 반환값/콜백 인자 순서로 비교한 표로 정리하세요. [answer] | DataStorageService의 `DeleteCreatorDataStorage` 계열 메서드 4개를 비교한 표는 다음과 같습니다. | 메서드 시그니처 | 실행 공간 | 비동기 여부 | 반환값 / 콜백 인자 순서 | | :--- | :--- | :--- | :--- | | `int32 DeleteCreatorDataStorageAndWait()` | ServerOnly | 동기 (Yield) | 에러 코드 (int32) 반환 | | `int32 DeleteCreatorDataStorageAndWait(string name)` | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 DeleteCreatorDataStorage 계열 4개 메서드의 시그니처, 실행 공간, 비동기 여부, 반환값 및 콜백 인자 순서를 정확하고 명확한 표로 정리하여 질문에 완벽히 부응합니다. [source_doc] | 다양한 DataStorage 접근 기능을 제공합니다. # Methods - **int32 DeleteCreatorDataStorageAndWait() [ServerOnly] [Yield]** CreatorDataStorage를 삭제하고, 에러 코드를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. - **int32 DeleteCreatorDataStorageAndWait(string name) [ServerOnly] [Yield]** 특정 이름의 CreatorDataStorage를 삭제하고, 에러 코드를 반환합니다

[task] | code [pass] | ❌ 탈락 [title] | InputService [question] | StateComponent 를 통해 상태를 관리하며, KeyDownEvent 로 Q 키 입력 시 상태가 "Idle" 에서 "Moving" 으로 전환되고, "Moving" 상태일 때만 TransformComponent 의 로테이션을 업데이트하는 스크립트를 작성해줘 [answer] | StateComponent의 상태 관리 API(`ChangeState`, 현재 상태 확인 메서드 등)가 제공된 참고 문서에 포함되어 있지 않습니다. 따라서 "Moving" 상태일 때만 로테이션을 업데이트하는 로직을 mLua로 작성할 수 없습니다. 참고 문서에 `StateComponent`가 나열되어 있으나, 상태 변경이나 상태 확인에 사용할 수 있는 구체적인 메서드(예: `ChangeState`, `GetState` 등)가 명시되지 않았으므로, 해당 기능을 구현하는 코드를 생성하는 것은 불가능합니다. 대신, **KeyDownEv [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=2 coherence=3 complexity=3 verbosity=2 [judge_reason] | StateComponent API 부재를 이유로 요청된 상태 관리 로직을 구현하지 않아 도움이 적고, 문서에 없는 메서드 이름을 예시로 언급하는 등 정확도가 다소 떨어지며, 제공된 코드도 질문 의도와 다릅니다. [source_doc] | * BasicParticleComponent * RigidbodyComponent * StateComponent * TransformComponent * KeyboardKey * KeyDownEvent * KeyHoldEvent * KeyReleaseEvent * KeyUpEvent * ScreenTouchEvent * ScreenTouchReleaseEvent * UILogic * UtilLogic * Vector3 * EntityService * [InputService를 활용한 입력과 액션](/docs?postId=209)

← → 방향키로 페이지 이동 · 숫자 입력 후 Enter로 점프