[task] | code [pass] | ❌ 탈락 [title] | RegexGroup [question] | RegexGroup 컴포넌트의 Name 속성을 읽어 해당 그룹 이름이 "user_id"인 경우에만 GetCaptures() 결과를 처리하는 조건부 로직을 구현한 스크립트를 작성해줘 [answer] | `RegexGroup`은 컴포넌트가 아니라 정규식 매칭 결과에서 사용하는 객체입니다. 따라서 `Property` 블록 없이, 정규식을 매칭한 후 `RegexGroup`의 `Name` 속성을 확인하여 "user_id"와 일치하는 경우에만 `GetCaptures()`를 호출하는 로직을 `Method` 블록 안에 구현할 수 있습니다. 아래는 `OnBeginPlay` 생명주기 메서드에서 정규식 매칭을 시뮬레이션하여 `RegexGroup`의 조건부 처리를 보여주는 스크립트 예시입니다. ```lua Method: [server only] [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=3 verbosity=2 [judge_reason] | RegexGroup이 컴포넌트가 아닌 객체임을 지적한 점은 적절하나, 문서에 없는 Regex 클래스, Match 메서드, GetGroups 메서드 및 firstCapture.Text 속성을 지어내어 정확도가 낮음. [source_doc] | 단일 캡처링 그룹의 결과입니다. # Properties - **string Name [ReadOnly]** 그룹의 이름입니다. - **boolean Success [ReadOnly]** 일치 작업의 성공 여부를 나타냅니다. # Methods - **table<RegexCapture> GetCaptures()** 캡처링 그룹을 사용해 일치한 모든 캡처를 가져옵니다. # SeeAlso * [정규식](/docs?postId=1041) * [정규식 언어](/docs?postId=1043)
[task] | single_turn [pass] | ✅ 통과 [title] | ChildAlignmentType [question] | 스크립트에서 숫자 3을 ChildAlignmentType으로 변환하려면 어떤 정적 메서드를 호출해야 하나요? [answer] | 숫자 3을 `ChildAlignmentType`으로 변환하려면 `ChildAlignmentType.CastFrom(number value)` 정적 메서드를 호출해야 합니다. 숫자 3은 `MiddleLeft` (정렬 기준 위치가 부모의 왼쪽 중앙)에 해당합니다. ```lua local alignment = ChildAlignmentType.CastFrom(3) log(alignment) ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 API 정의와 멤버 값(MiddleLeft=3)을 정확히 인용하여 질문을 명확하게 해결했습니다. [source_doc] | 자식 엔티티 정렬 타입입니다. # Members | 이름 | 값 | 설명 | |---|---|---| | UpperLeft | 0 | 정렬 기준 위치가 부모의 왼쪽 상단입니다. | | UpperCenter | 1 | 정렬 기준 위치가 부모의 중앙 상단입니다. | | UpperRight | 2 | 정렬 기준 위치가 부모의 오른쪽 상단입니다. | | MiddleLeft | 3 | 정렬 기준 위치가 부모의 왼쪽 중앙입니다. | | MiddleCenter | 4 | 정렬 기준 위치가 부모의 중앙입니다. | | MiddleRight |
[task] | single_turn [pass] | ✅ 통과 [title] | User [question] | _UserService를 통해 특정 유저 정보를 가져오기 위해 Users 테이블을 참조할 때, 존재하지 않는 유저의 UserId로 접근하면 어떤 결과가 발생하며 이를 어떻게 처리해야 하나요? [answer] | 존재하지 않는 유저의 `UserId`로 `_UserService.Users` 테이블을 참조하면 해당 값은 `nil`이 반환됩니다. 따라서 유저 객체를 가져온 후 반드시 `nil` 여부를 확인하는 방어 코드를 작성해야 합니다. `nil`인 경우 해당 로직을 중단하거나(`return`) 적절한 에러 처리를 수행하는 것이 안전합니다. 아래는 존재하지 않는 유저를 참조했을 때 `nil`을 확인하고 처리하는 mLua 코드 예시입니다. ```lua Method: void Server(string userId) { ---@type tab [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제와 API 명세(_UserService.Users, user.Nickname, nil 체크)를 정확히 인용하여 질문한 nil 처리 방식을 명확하고 간결하게 설명했습니다. [source_doc] | 유저의 정보입니다. # Properties - **NexonOtpStateType NexonOtpState [ReadOnly]** 유저의 넥슨 OTP 사용 여부입니다. - **string Nickname [ReadOnly]** 유저의 닉네임입니다. - **string Nugu [ReadOnly]** 동일한 네트워크 환경에서 메이플스토리 월드 서비스에 접근한 사용자를 식별하기 위한 임의의 값입니다. Nugu 값은 일정 시간이 지나면 임의로 재생성되며, 이전에 생성된 값이 재사용 될 수 있습니다. 재사용되는 값의 경우 다
[task] | code [pass] | ✅ 통과 [title] | InputLineType [question] | UIInput 컴포넌트의 LineType 속성을 InputLineType.MultiLineSubmit 으로 설정하고, InputLineType.CastFrom(1) 이 반환하는 값과 동일한지 확인하는 스크립트를 작성해줘 [answer] | UIInput 컴포넌트의 `LineType` 속성은 `InputLineType` 타입의 열거형(enum)을 사용합니다. `InputLineType.MultiLineSubmit`의 값은 1이며, 정적 메서드 `InputLineType.CastFrom(1)`은 숫자 1을 해당 타입으로 변환하여 `MultiLineSubmit`을 반환합니다. 따라서 두 값은 동일합니다. 아래 스크립트는 `OnBeginPlay()` 시점에 `InputLineType.MultiLineSubmit`과 `InputLineType.CastFrom(1)`의 결과를 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 열거형 값과 메서드 정의에 정확히 부합하며, 표준 mLua 구문을 사용하여 질문에 대한 답을 명확하고 간결하게 제공합니다. [source_doc] | 입력 방식을 지정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | SingleLine | 0 | 한 줄로 입력합니다. | | MultiLineSubmit | 1 | 여러 줄 입력이 가능하고, Enter 키 입력 시 종료됩니다. | | MultiLineNewline | 2 | 여러 줄 입력이 가능하고, Enter 키 입력 시 개행됩니다. | # Methods - **InputLineType CastFrom(number value) [Static]** 숫자를 해당 타입으로 변환합니다. - *
[task] | instruction_following [pass] | ✅ 통과 [title] | SoundPlayStateChangedEvent [question] | SoundPlayStateChangedEvent의 생성자 시그니처와 기본 인자값을 코드 블록으로만 출력하세요. [answer] | ```lua SoundPlayStateChangedEvent(SoundPlayState state = SoundPlayState.Stop) ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 생성자 시그니처와 기본 인자값을 정확히 코드 블록으로만 제시했습니다. [source_doc] | SoundService의 BGM, SoundComponent의 효과음 재생 상태가 변경될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * SoundComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SoundService <img src="https://img.shields.io
[task] | instruction_following [pass] | ✅ 통과 [title] | PolygonRendererComponent [question] | PolygonRendererComponent의 ChangeMaterial(string materialId) 메서드 시그니처와 OrderInLayer 프로퍼티의 정렬 규칙(수가 클수록 앞에 보임)을 코드 블록으로만 출력하고, 설명은 주석으로 처리하세요. [answer] | ```lua Property: [Sync] int32 OrderInLayer = 0 Method: [server only] void ApplyMaterial(string materialId) { -- ChangeMaterial(string materialId): 렌더러에 적용할 머티리얼을 교체합니다. self.Entity.PolygonRendererComponent:ChangeMaterial(materialId) } Method: [server only] void SetOrderInLayer(int32 order) [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에서 요구한 시그니처와 규칙을 주석과 코드로 정확히 제시했으나, '코드 블록으로만'이라는 지시를 어기고 메서드 이름(ChangeMaterial 대신 ApplyMaterial)을 임의로 변경하여 불필요하게 감점되었다. [source_doc] | 다각형을 그리는 기능입니다. # Properties - **Color Color [Sync]** 다각형의 색상입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **string MaterialId [Sync]** 렌더러에 사용할 머티리얼 Id를 지정합니다. - **int32 OrderInLayer [Sync]** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. -
[task] | code [pass] | ❌ 탈락 [title] | InputLineType [question] | UIInput 컴포넌트의 LineType 속성을 InputLineType.SingleLine 으로 설정하는 스크립트를 작성해줘 [answer] | 참고 문서에는 `InputLineType` 열거형의 멤버와 변환 메서드만 제공되어 있습니다. `UIInput` 컴포넌트 자체의 존재 여부나 `LineType` 속성의 정확한 이름 및 타입, 그리고 해당 컴포넌트를 어떻게 접근하는지(self.Entity.UIInputComponent 등)에 대한 정보는 문서에 포함되어 있지 않습니다. 따라서 `UIInput` 컴포넌트와 `LineType` 속성이 실제로 존재한다고 가정할 때, `InputLineType.SingleLine`을 사용하여 설정하는 **예시** 스크립트는 다음과 같습니다. [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=3 coherence=3 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 UIInput 컴포넌트와 LineType 속성을 가정하여 예시를 제공하되, 정보 부재와 접근 방식의 불확실성을 명확히 고지하여 혼란을 최소화했습니다. [source_doc] | 입력 방식을 지정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | SingleLine | 0 | 한 줄로 입력합니다. | | MultiLineSubmit | 1 | 여러 줄 입력이 가능하고, Enter 키 입력 시 종료됩니다. | | MultiLineNewline | 2 | 여러 줄 입력이 가능하고, Enter 키 입력 시 개행됩니다. | # Methods - **InputLineType CastFrom(number value) [Static]** 숫자를 해당 타입으로 변환합니다. - *
[task] | single_turn [pass] | ✅ 통과 [title] | ChildAlignmentType [question] | ChildAlignmentType CastFrom 메서드에 숫자 대신 문자열을 전달할 수 있나요? [answer] | 네, 가능합니다. `ChildAlignmentType`에는 문자열을 인수로 받는 정적 메서드 `CastFrom`가 존재합니다. `ChildAlignmentType.CastFrom(string value)` 메서드를 사용하면 문자열 값을 해당 정렬 타입으로 변환할 수 있습니다. ```lua Method: [server only] void OnBeginPlay() { -- "UpperLeft" 문자열을 ChildAlignmentType으로 변환 local alignment = ChildAlignmentType.Cast [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 명시된 문자열 인수 CastFrom 메서드의 존재와 용도를 정확히 설명하고, 표준 mLua 문법으로 적절한 예제를 제시하여 질문에 완벽히 부합합니다. [source_doc] | 자식 엔티티 정렬 타입입니다. # Members | 이름 | 값 | 설명 | |---|---|---| | UpperLeft | 0 | 정렬 기준 위치가 부모의 왼쪽 상단입니다. | | UpperCenter | 1 | 정렬 기준 위치가 부모의 중앙 상단입니다. | | UpperRight | 2 | 정렬 기준 위치가 부모의 오른쪽 상단입니다. | | MiddleLeft | 3 | 정렬 기준 위치가 부모의 왼쪽 중앙입니다. | | MiddleCenter | 4 | 정렬 기준 위치가 부모의 중앙입니다. | | MiddleRight |
[task] | code [pass] | ❌ 탈락 [title] | RegexMatch [question] | RegexMatch의 GetGroups 메서드로 가져온 그룹 정보 중 Name 속성이 "year"인 항목을 찾아 해당 Text 값을 숫자로 변환하여 반환하는 스크립트를 작성해줘 [answer] | 제공된 문서에서 `RegexMatch`의 `GetGroups()` 메서드와 `RegexGroup`/`RegexCapture` 객체의 `Name`, `Text` 프로퍼티에 대한 정보는 확인됩니다. 하지만 **문서에는 `RegexGroup` 객체가 직접 `Text` 프로퍼티를 가지고 있는지, 아니면 `GetCaptures()`를 호출해야 하는지에 대한 명시적인 API 정의가 부족합니다.** 실제 mLua 예제 코드(`[실제 mLua 예제]`)를 보면 다음과 같은 접근 방식을 사용합니다: 1. `match:GetGroups()`로 그룹 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=2 verbosity=3 [judge_reason] | 문서에 없는 RegexGroup 객체와 그 GetCaptures 메서드를 지어내어 API 명세와 어긋나며, GetGroups 반환 타입을 잘못 가정함 [source_doc] | 정규식으로 찾은 단일 일치 항목의 결과입니다. # Properties - **int32 Index [ReadOnly]** 원 문자열에서 캡처된 부분 문자열의 첫 번째 위치 인덱스를 가져옵니다. - **int32 Length [ReadOnly]** 캡처된 부분 문자열의 길이를 가져옵니다. - **string Name [ReadOnly]** 그룹의 이름입니다. - **boolean Success [ReadOnly]** 일치 작업의 성공 여부를 반환합니다. - **string Text [ReadOnly]** 캡처된
[task] | single_turn [pass] | ✅ 통과 [title] | PolygonRendererComponent [question] | IgnoreMapLayerCheck를 true로 설정하면 SortingLayer에 Map Layer 이름을 넣었을 때 어떤 동작이 달라지나요? [answer] | `IgnoreMapLayerCheck`를 `true`로 설정하면, `SortingLayer`에 Map Layer 이름을 지정했을 때 발생하는 **자동 치환 동작이 수행되지 않습니다.** 즉, 이 속성을 `true`로 하면 시스템이 Map Layer 이름을 자동으로 변환하거나 치환하는 로직을 건너뛰고, `SortingLayer`에 설정된 값을 그대로 사용하게 됩니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 설명과 정확히 일치하며 질문에 대한 답을 간결하고 명확하게 제시했습니다. [source_doc] | 다각형을 그리는 기능입니다. # Properties - **Color Color [Sync]** 다각형의 색상입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **string MaterialId [Sync]** 렌더러에 사용할 머티리얼 Id를 지정합니다. - **int32 OrderInLayer [Sync]** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. -
[task] | instruction_following [pass] | ✅ 통과 [title] | SoundPlayStateChangedEvent [question] | SoundPlayStateChangedEvent의 Properties를 단계별 번호 목록으로 작성하세요. [answer] | SoundPlayStateChangedEvent의 Properties는 다음과 같습니다. 1. `SoundPlayState State` : 변경된 사운드의 재생 상태입니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 있는 유일한 프로퍼티를 정확하고 간결하게 요청된 형식으로 답변했습니다. [source_doc] | SoundService의 BGM, SoundComponent의 효과음 재생 상태가 변경될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * SoundComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SoundService <img src="https://img.shields.io
[task] | instruction_following [pass] | ✅ 통과 [title] | SoundPlayStateChangedEvent [question] | SoundPlayStateChangedEvent의 발생 주체와 실행 공간을 표로 정리해서 나열하세요. [answer] | SoundPlayStateChangedEvent의 발생 주체와 실행 공간은 다음과 같습니다. | 발생 주체 (Emitter) | 실행 공간 (Space) | | :--- | :--- | | SoundComponent | Client | | SoundService | Client | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 발생 주체(SoundComponent, SoundService)와 실행 공간(Client)을 정확하고 간결하게 표로 정리했습니다. [source_doc] | SoundService의 BGM, SoundComponent의 효과음 재생 상태가 변경될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * SoundComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SoundService <img src="https://img.shields.io
[task] | two_turn [pass] | ✅ 통과 [title] | InputLineType [question] | 숫자나 문자열을 InputLineType으로 변환할 때 사용할 수 있는 정적 메서드는 무엇입니까? [answer] | InputLineType으로 변환할 때 사용할 수 있는 정적 메서드는 **CastFrom**입니다. 이 메서드는 두 가지 오버로드로 제공되며, 각각 숫자(number)와 문자열(string)을 InputLineType으로 변환합니다. ```lua -- 숫자를 InputLineType으로 변환 local lineType1 = InputLineType.CastFrom(0) -- SingleLine -- 문자열을 InputLineType으로 변환 local lineType2 = InputLineType.CastFrom("MultiL [followup] | CastFrom 메서드를 사용하여 숫자 1과 문자열 "MultiLineNewline"을 변환하는 mLua 코드 예시를 작성해 주세요. [followup_answer] | ```lua Method: [client only] void OnBeginPlay() { local typeFromNumber = InputLineType.CastFrom(1) local typeFromString = InputLineType.CastFrom("MultiLineNewline") log(typeFromNumber) log(typeFromString) } ``` [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 정적 메서드 CastFrom의 두 가지 오버로드(number, string)를 정확히 설명하고, 문서에 없는 내용을 지어내지 않았습니다. [source_doc] | 입력 방식을 지정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | SingleLine | 0 | 한 줄로 입력합니다. | | MultiLineSubmit | 1 | 여러 줄 입력이 가능하고, Enter 키 입력 시 종료됩니다. | | MultiLineNewline | 2 | 여러 줄 입력이 가능하고, Enter 키 입력 시 개행됩니다. | # Methods - **InputLineType CastFrom(number value) [Static]** 숫자를 해당 타입으로 변환합니다. - *
[task] | code [pass] | ❌ 탈락 [title] | RegexGroup [question] | RegexGroup 컴포넌트의 Success 속성이 true일 때만 GetCaptures() 결과를 테이블로 변환하여 self 로컬 변수에 저장하는 초기화 로직을 OnBeginPlay()에서 수행하는 스크립트를 작성해줘 [answer] | `RegexGroup`은 정규식 매칭(`RegexMatch`)의 결과에서 특정 캡처링 그룹을 참조하기 위한 자료 구조이며, 스크립트 컴포넌트가 아닙니다. 따라서 `OnBeginPlay()`에서 단독으로 `RegexGroup` 객체를 생성하거나 초기화할 수 없습니다. `RegexGroup` 객체는 `Regex` 클래스의 `Matches` 메서드로 매칭 결과를 얻은 후, `RegexMatch` 객체의 `GetGroups()` 메서드를 통해 접근할 수 있습니다. 질문하신 "Success 속성이 true일 때만 GetCaptures() [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=2 coherence=3 complexity=3 verbosity=2 [judge_reason] | RegexGroup이 컴포넌트가 아닌 자료구조라는 설명은 적절하나, Regex, RegexMatch, GetGroups, RegexOption 등 문서에 없는 API를 지어내어 코드의 정확성을 해쳤다. [source_doc] | 단일 캡처링 그룹의 결과입니다. # Properties - **string Name [ReadOnly]** 그룹의 이름입니다. - **boolean Success [ReadOnly]** 일치 작업의 성공 여부를 나타냅니다. # Methods - **table<RegexCapture> GetCaptures()** 캡처링 그룹을 사용해 일치한 모든 캡처를 가져옵니다. # SeeAlso * [정규식](/docs?postId=1041) * [정규식 언어](/docs?postId=1043)
[task] | two_turn [pass] | ✅ 통과 [title] | InputLineType [question] | InputLineType 열거형은 어떤 값들을 가지며 각각 어떤 입력 방식을 나타냅니까? [answer] | `InputLineType` 열거형은 입력 방식을 지정하는 데 사용되며, 다음 세 가지 값을 가집니다. 1. **SingleLine (0)**: 한 줄로만 입력하는 방식을 나타냅니다. 2. **MultiLineSubmit (1)**: 여러 줄 입력이 가능하며, Enter 키를 누르면 입력이 종료되는 방식을 나타냅니다. 3. **MultiLineNewline (2)**: 여러 줄 입력이 가능하며, Enter 키를 누르면 줄바꿈(개행)이 발생하는 방식을 나타냅니다. 또한, 숫자나 문자열 값을 `InputLineType`으로 변 [followup] | MultiLineSubmit과 MultiLineNewline의 차이점에서 Enter 키 동작이 어떻게 다른지 구체적으로 설명해 주세요. [followup_answer] | `MultiLineSubmit`과 `MultiLineNewline`은 모두 여러 줄 입력이 가능하지만, Enter 키를 눌렀을 때의 동작 방식이 다릅니다. * **MultiLineSubmit**: Enter 키를 입력하면 텍스트 입력이 **종료**됩니다. * **MultiLineNewline**: Enter 키를 입력하면 **개행**(줄바꿈)이 발생하며, 입력은 계속 유지됩니다. [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 모든 멤버 값과 설명, 메서드 정보를 정확하고 간결하게 전달하여 질문에 완벽히 부응합니다. [source_doc] | 입력 방식을 지정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | SingleLine | 0 | 한 줄로 입력합니다. | | MultiLineSubmit | 1 | 여러 줄 입력이 가능하고, Enter 키 입력 시 종료됩니다. | | MultiLineNewline | 2 | 여러 줄 입력이 가능하고, Enter 키 입력 시 개행됩니다. | # Methods - **InputLineType CastFrom(number value) [Static]** 숫자를 해당 타입으로 변환합니다. - *
[task] | single_turn [pass] | ✅ 통과 [title] | PolygonRendererComponent [question] | 같은 SortingLayer 안에 여러 엔티티가 겹쳤을 때 OrderInLayer 값이 큰 쪽이 앞으로 보이는데, 이 우선순위를 코드에서 변경하면 어떤 이벤트가 발생하나요? [answer] | `PolygonRendererComponent`의 `OrderInLayer` 값이 변경되면 **`OrderInLayerChangedEvent`** 이벤트가 발생합니다. 이 이벤트는 동일한 `SortingLayer` 내에서 겹친 엔티티들의 앞/뒤 표시 우선순위가 바뀌었을 때 트리거됩니다. ```lua Property: [Sync] string SortingLayer = "Default" [Sync] int32 OrderInLayer = 0 Event Handler: [self] HandleOrderInLayerChangedEve [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 질문에 정확히 답하고 문서의 API와 규칙에 부합하는 올바른 코드 예시를 제공했습니다. [source_doc] | 다각형을 그리는 기능입니다. # Properties - **Color Color [Sync]** 다각형의 색상입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **string MaterialId [Sync]** 렌더러에 사용할 머티리얼 Id를 지정합니다. - **int32 OrderInLayer [Sync]** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. -
[task] | single_turn [pass] | ❌ 탈락 [title] | RegexMatch [question] | GetGroups와 GetCaptures가 반환하는 테이블의 구조적 차이가 무엇이며, 각각 어떤 상황에서 활용하는 것이 효율적인가요? [answer] | 제공된 참고 문서에 따르면, `GetGroups()`와 `GetCaptures()`는 반환하는 테이블의 구조와 용도에서 명확한 차이가 있습니다. ### 1. 반환 테이블의 구조적 차이 * **`GetGroups()`**: * **반환 타입**: `table` (문서 예제 주석에 따르면 `table<any, RegexGroup>`) * **구조**: 정규식에서 정의된 **그룹 이름(Named Group)을 키(Key)**로 가지는 테이블입니다. * **값**: 각 키에 해당하는 `RegexGro [followup] | [followup_answer] | [scores] | helpfulness=1 correctness=0 coherence=3 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 없는 RegexGroup, RegexOption, Matches 메서드 및 GetGroups의 키-값 구조를 지어내어 정답이 아님 [source_doc] | 정규식으로 찾은 단일 일치 항목의 결과입니다. # Properties - **int32 Index [ReadOnly]** 원 문자열에서 캡처된 부분 문자열의 첫 번째 위치 인덱스를 가져옵니다. - **int32 Length [ReadOnly]** 캡처된 부분 문자열의 길이를 가져옵니다. - **string Name [ReadOnly]** 그룹의 이름입니다. - **boolean Success [ReadOnly]** 일치 작업의 성공 여부를 반환합니다. - **string Text [ReadOnly]** 캡처된
[task] | single_turn [pass] | ✅ 통과 [title] | PolygonRendererComponent [question] | ChangeMaterial() 메서드로 머티리얼을 교체할 때 MaterialId 프로퍼티와 직접적인 연결이 있는지, 아니면 단순히 런타임에 적용만 되는 건가요? [answer] | `ChangeMaterial(string materialId)` 메서드는 런타임에 렌더러에 적용할 머티리얼을 직접 교체하는 함수입니다. 참고 문서에는 `ChangeMaterial()` 호출 시 `MaterialId` 프로퍼티 값이 자동으로 변경되거나 동기화되는지에 대한 설명이 명시되어 있지 않습니다. 따라서 이 메서드가 단순히 렌더링 상태를 런타임에 변경하는 것일 뿐, `MaterialId` 프로퍼티 자체와 직접적인 데이터 연결(예: 프로퍼티 자동 갱신)이 있는지 여부는 문서 기준으로 확인이 불가능합니다. 만약 `Material [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시되지 않은 내적 동작(프로퍼티 동기화 여부)을 과장하지 않고, 문서 근거 범위 내에서 신중하게 답변하며 필요한 경우 수동 동기화 팁을 제시하여 질문자의 의도를 정확히 충족합니다. [source_doc] | 다각형을 그리는 기능입니다. # Properties - **Color Color [Sync]** 다각형의 색상입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **string MaterialId [Sync]** 렌더러에 사용할 머티리얼 Id를 지정합니다. - **int32 OrderInLayer [Sync]** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. -
[task] | two_turn [pass] | ✅ 통과 [title] | PolicyInfo [question] | 정책 정보(PolicyInfo)에서 지역별 제공 가능한 정책 정보는 어떤 내용으로 구성되어 있나요? [answer] | 정책 정보(PolicyInfo)는 지역별로 제공 가능한 정책 정보를 두 가지 읽기 전용(ReadOnly) 부울(boolean) 속성으로 구성합니다. 1. **ArePaidRandomItemsRestricted** - 이 값이 참(true)이면, 유저는 현금 구매를 요구하는 뽑기(랜덤) 콘텐츠를 이용할 수 없습니다. 2. **IsPaidItemTradingAllowed** - 이 값이 참(true)이면, 유저는 현금으로 구매한 아이템을 타인과 교환할 수 있습니다. 이 두 속성은 모두 읽기 전용으로, 해당 지역의 정책 설 [followup] | ArePaidRandomItemsRestricted와 IsPaidItemTradingAllowed가 true 또는 false일 때 각각 어떤 게임 플레이 제한이나 허용 사항이 발생하나요? [followup_answer] | 두 속성은 모두 읽기 전용(ReadOnly)이며, 값에 따라 다음과 같은 게임 플레이 제한 또는 허용 사항이 적용됩니다. ### 1. ArePaidRandomItemsRestricted 현금 구매를 요구하는 뽑기 콘텐츠 이용 가능 여부를 결정합니다. * **true**: 유저는 현금 구매를 요구하는 뽑기 콘텐츠를 **이용할 수 없습니다**. * **false**: 문서에 명시된 제한 사항이 없으므로, 현금 구매를 요구하는 뽑기 콘텐츠 이용에 대한 정책상 제한이 적용되지 않습니다. ### 2. IsPaidItemTradi [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 속성 이름, 타입, 읽기 전용 제약 및 의미를 정확하고 명확하게 설명하고 있어 질문에 완벽하게 부합합니다. [source_doc] | 제공 가능한 정책 정보를 지역별로 나타냅니다. # Properties - **boolean ArePaidRandomItemsRestricted [ReadOnly]** 유저는 현금 구매를 요구하는 뽑기 콘텐츠를 이용할 수 없습니다. - **boolean IsPaidItemTradingAllowed [ReadOnly]** 유저는 현금으로 구매한 아이템을 타인과 교환할 수 있습니다.
[task] | instruction_following [pass] | ✅ 통과 [title] | PolicyInfo [question] | `ArePaidRandomItemsRestricted` 프로퍼티의 타입과 읽기 전용 속성을 포함하여 2문장 이내로 설명하세요. [answer] | `ArePaidRandomItemsRestricted` 프로퍼티는 `boolean` 타입이며 읽기 전용([ReadOnly])입니다. 이 값이 참이면 유저가 현금 구매를 요구하는 뽑기 콘텐츠를 이용할 수 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 타입, 읽기 전용 속성, 및 의미 설명을 정확하고 간결하게 2문장으로 전달했습니다. [source_doc] | 제공 가능한 정책 정보를 지역별로 나타냅니다. # Properties - **boolean ArePaidRandomItemsRestricted [ReadOnly]** 유저는 현금 구매를 요구하는 뽑기 콘텐츠를 이용할 수 없습니다. - **boolean IsPaidItemTradingAllowed [ReadOnly]** 유저는 현금으로 구매한 아이템을 타인과 교환할 수 있습니다.
[task] | instruction_following [pass] | ✅ 통과 [title] | PolicyInfo [question] | `IsPaidItemTradingAllowed` 프로퍼티의 이름과 기능을 표로 정리해서 출력하세요. [answer] | | 프로퍼티 이름 | 기능 | | :--- | :--- | | `IsPaidItemTradingAllowed` | 유저가 현금으로 구매한 아이템을 타인과 교환할 수 있는지 여부를 나타냅니다. (ReadOnly) | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 프로퍼티 이름, 기능, 읽기 전용 속성을 정확하고 간결하게 표로 정리하여 질문에 완벽히 부합합니다. [source_doc] | 제공 가능한 정책 정보를 지역별로 나타냅니다. # Properties - **boolean ArePaidRandomItemsRestricted [ReadOnly]** 유저는 현금 구매를 요구하는 뽑기 콘텐츠를 이용할 수 없습니다. - **boolean IsPaidItemTradingAllowed [ReadOnly]** 유저는 현금으로 구매한 아이템을 타인과 교환할 수 있습니다.
[task] | two_turn [pass] | ✅ 통과 [title] | SoundPlayStateChangedEvent [question] | SoundPlayStateChangedEvent는 어떤 상황에서 발생하며, State 속성에는 어떤 값이 들어오나요? [answer] | `SoundPlayStateChangedEvent`는 **SoundService의 BGM** 또는 **SoundComponent의 효과음** 재생 상태가 변경될 때 발생하는 이벤트입니다. ### 발생 상황 이 이벤트는 클라이언트(Client) 공간에서 발생하며, 다음 API를 통해 트리거됩니다. * `SoundComponent` * `SoundService` ### State 속성의 값 이벤트 객체의 `State` 속성에는 `SoundPlayState` 타입의 값이 들어옵니다. 이 값은 변경된 사운드의 현재 재생 상태를 [followup] | SoundPlayState.Stop으로 초기화되는 기본 동작이 있고, BGM과 효과음의 재생 상태 변경을 동시에 처리하려면 Event Handler를 어떻게 작성해야 하나요? [followup_answer] | 참고 문서에 따르면, `SoundPlayStateChangedEvent`는 `SoundService`의 BGM과 `SoundComponent`의 효과음 재생 상태가 변경될 때 모두 발생하는 단일 이벤트입니다. 따라서 BGM과 효과음을 구분하여 동시에 처리하기 위해 별도의 Event Handler를 작성할 필요 없이, **하나의 Event Handler**에서 `event.State`를 확인하여 로직을 분기하면 됩니다. ### 핵심 사항 1. **발생 공간**: Client 공간에서 발생하므로 Event Handler의 실행 공간 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 있는 발생 조건, 공간, 속성 타입 및 생성자 기본값을 정확히 인용하고 문서에 없는 열거형 값을 지어내지 않아 정확하고 유용합니다. [source_doc] | SoundService의 BGM, SoundComponent의 효과음 재생 상태가 변경될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * SoundComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SoundService <img src="https://img.shields.io
[task] | code [pass] | ✅ 통과 [title] | PolygonRendererComponent [question] | PolygonRendererComponent의 OrderInLayer 프로퍼티를 1씩 증가시켜 다른 엔티티들 사이에서 항상 맨 위에 보이도록 설정하는 스크립트를 작성해줘 [answer] | PolygonRendererComponent의 `OrderInLayer`는 같은 `SortingLayer` 내에서 값이 클수록 앞에(맨 위에) 보이는 우선순위를 결정합니다. 따라서 `OrderInLayer`를 1씩 증가시키면 다른 엔티티들 사이에서 항상 맨 위에 보이도록 설정할 수 있습니다. 아래 스크립트는 `OnBeginPlay()` 생명주기 메서드에서 `PolygonRendererComponent`의 `OrderInLayer`를 1 증가시킵니다. ```lua Method: [server only] void OnBeginPla [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문의 요구사항(1씩 증가)은 충족했으나, '항상' 맨 위에 보이려면 OnUpdate 등에서 지속 처리하거나 초기 값을 최대값으로 설정하는 등 로직 보완이 필요하지만, API 사용법과 문법은 정확하고 간결함. [source_doc] | 다각형을 그리는 기능입니다. # Properties - **Color Color [Sync]** 다각형의 색상입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **string MaterialId [Sync]** 렌더러에 사용할 머티리얼 Id를 지정합니다. - **int32 OrderInLayer [Sync]** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. -
[task] | single_turn [pass] | ✅ 통과 [title] | PolygonRendererComponent [question] | Points 프로퍼티에 꼭짓점을 넣었는데 화면에 다각형이 안 보일 때 IsDrawable()을 확인해야 하는 이유는 무엇인가요? [answer] | `PolygonRendererComponent`의 `Points` 프로퍼티에 꼭짓점 목록을 설정해도, 그 꼭짓점들을 연결했을 때 변(edge)이 서로 교차하면 유효한 다각형이 형성되지 않기 때문에 화면에 그려지지 않습니다. `IsDrawable()` 메서드는 `Points`에 저장된 꼭짓점들을 이어 다각형이 실제로 그려질 수 있는지(즉, 교차하는 변이 없는지)를 확인하는 기능입니다. 따라서 다각형이 안 보일 때 이 메서드를 호출하여 꼭짓점의 순서가 잘못된지, 변이 교차하는지 진단할 수 있습니다. 아래는 `OnBeginPlay`에 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 IsDrawable() 설명(교차하는 변이 있으면 그려지지 않음)을 정확히 인용하여 질문을 잘 설명했으며, mLua 규칙에 따른 코드 예시도 적절합니다. [source_doc] | 다각형을 그리는 기능입니다. # Properties - **Color Color [Sync]** 다각형의 색상입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **string MaterialId [Sync]** 렌더러에 사용할 머티리얼 Id를 지정합니다. - **int32 OrderInLayer [Sync]** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. -
[task] | instruction_following [pass] | ✅ 통과 [title] | PolygonRendererComponent [question] | PolygonRendererComponent의 Points와 UVs 프로퍼티가 SyncList<Vector2> 타입이며, UVs의 길이는 Points와 반드시 같아야 한다는 제약 조건을 명시하여 두 프로퍼티의 구조를 설명하세요. [answer] | PolygonRendererComponent의 `Points`와 `UVs` 프로퍼티는 모두 `SyncList<Vector2>` 타입을 가집니다. 이 타입은 서버와 클라이언트 간에 동기화되는 `Vector2` 값들의 목록을 의미하며, 각 요소는 2차원 좌표(x, y)를 나타냅니다. **1. Points 프로퍼티** * **역할**: 다각형을 구성하는 꼭짓점들의 집합을 정의합니다. * **구조**: 목록에 저장된 각 `Vector2` 값은 다각형의 한 꼭짓점 좌표를 나타냅니다. 이 꼭짓점들이 순서대로 연결되어 다각형 도형이 그 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 Points와 UVs의 타입, 역할, 그리고 길이 일치 제약 조건을 정확하고 명확하게 설명했습니다. [source_doc] | 다각형을 그리는 기능입니다. # Properties - **Color Color [Sync]** 다각형의 색상입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **string MaterialId [Sync]** 렌더러에 사용할 머티리얼 Id를 지정합니다. - **int32 OrderInLayer [Sync]** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. -
[task] | instruction_following [pass] | ❌ 탈락 [title] | PolicyInfo [question] | 두 프로퍼티 모두에 대해 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Property: [None] boolean ArePaidRandomItemsRestricted = false boolean IsPaidItemTradingAllowed = false Method: [server only] void OnBeginPlay() { -- ArePaidRandomItemsRestricted: 유저는 현금 구매를 요구하는 뽑기 콘텐츠를 이용할 수 없습니다. -- IsPaidItemTradingAllowed: 유저는 현금으로 구매한 아이템을 타인과 교환할 수 있습니다. } ``` [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 [ReadOnly] 속성을 무시하고 일반 Property로 선언하여 API 제약과 어긋나며, 정책 정보는 시스템에서 조회하는 것이므로 코드만 출력하라는 질문에 부합하지 않습니다. [source_doc] | 제공 가능한 정책 정보를 지역별로 나타냅니다. # Properties - **boolean ArePaidRandomItemsRestricted [ReadOnly]** 유저는 현금 구매를 요구하는 뽑기 콘텐츠를 이용할 수 없습니다. - **boolean IsPaidItemTradingAllowed [ReadOnly]** 유저는 현금으로 구매한 아이템을 타인과 교환할 수 있습니다.
[task] | two_turn [pass] | ❌ 탈락 [title] | RegexMatch [question] | RegexMatch 객체의 Success, Index, Length 프로퍼티는 각각 어떤 역할을 하며, 정규식 매칭 성공 여부를 확인하는 기본 구조는 어떻게 되나요? [answer] | `RegexMatch` 객체의 각 프로퍼티는 정규식 매칭 결과에 대한 구체적인 정보를 제공합니다. * **Success**: 정규식 일치 작업이 성공했는지 여부를 나타내는 `boolean` 타입의 읽기 전용 프로퍼티입니다. `true`이면 매칭이 성공했고, `false`이면 실패했음을 의미합니다. * **Index**: 원 문자열 내에서 캡처된 부분 문자열이 시작되는 첫 번째 위치 인덱스를 `int32` 타입으로 반환하는 읽기 전용 프로퍼티입니다. * **Length**: 캡처된 부분 문자열의 길이를 `int32` 타입 [followup] | 매칭이 성공했을 때 NextMatch()를 반복 호출하며 모든 일치 항목을 수집하는 코드 예제를 작성해 주세요. [followup_answer] | `RegexMatch` 객체의 `NextMatch()` 메서드를 사용하여 모든 일치 항목을 수집하는 코드 예제는 다음과 같습니다. `regex:Match(input)`으로 첫 번째 매칭을 시도한 후, 반환된 `RegexMatch` 객체의 `Success` 프로퍼티가 `true`인 동안 루프를 수행합니다. 루프 내에서 현재 매칭 정보를 처리한 후 `match:NextMatch()`를 호출하여 다음 매칭 결과를 가져옵니다. `NextMatch()`는 매칭에 실패할 경우 `nil`을 반환하므로, 반환값이 `nil`이 되면 루프가 종료됩 [scores] | helpfulness=4 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | RegexMatch 프로퍼티 설명은 정확하나, 코드 예시에서 문서에 없는 Regex 생성자, RegexOption, Match 메서드 및 while 루프 내 nil 참조 오류를 범함. [source_doc] | 정규식으로 찾은 단일 일치 항목의 결과입니다. # Properties - **int32 Index [ReadOnly]** 원 문자열에서 캡처된 부분 문자열의 첫 번째 위치 인덱스를 가져옵니다. - **int32 Length [ReadOnly]** 캡처된 부분 문자열의 길이를 가져옵니다. - **string Name [ReadOnly]** 그룹의 이름입니다. - **boolean Success [ReadOnly]** 일치 작업의 성공 여부를 반환합니다. - **string Text [ReadOnly]** 캡처된
[task] | single_turn [pass] | ✅ 통과 [title] | User [question] | Nugu 값은 일정 시간이 지나면 재생성될 수 있는데, 이전에 생성된 Nugu 값이 재사용될 경우 다른 식별 정보를 가리킬 수 있다는 점은 어떤 주의 사항을 의미하나요? [answer] | Nugu 값이 재사용될 때 다른 식별 정보를 가리킬 수 있다는 점은 **Nugu 값을 영구적 또는 고유한 사용자 식별자로 사용하지 않아야 한다**는 주의 사항을 의미합니다. 구체적인 주의 사항은 다음과 같습니다: 1. **유일성 보장 불가**: Nugu 값이 시간 경과에 따라 재생성되고, 이전 값이 재사용될 때 다른 사용자를 가리킬 수 있으므로, 동일한 Nugu 값이 항상 동일한 물리적 사용자(또는 네트워크 환경)를 나타내지 않습니다. 2. **데이터 저장 시 위험**: Nugu 값을 키(Key)로 사용하여 데이터를 저장하거나 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서의 Nugu 특성(재생성, 재사용 시 식별 변경, 서버 전용)을 정확히 인용하여 주의사항을 명확히 설명하고, 예제 코드도 문법 및 API 사용이 정확합니다. [source_doc] | 유저의 정보입니다. # Properties - **NexonOtpStateType NexonOtpState [ReadOnly]** 유저의 넥슨 OTP 사용 여부입니다. - **string Nickname [ReadOnly]** 유저의 닉네임입니다. - **string Nugu [ReadOnly]** 동일한 네트워크 환경에서 메이플스토리 월드 서비스에 접근한 사용자를 식별하기 위한 임의의 값입니다. Nugu 값은 일정 시간이 지나면 임의로 재생성되며, 이전에 생성된 값이 재사용 될 수 있습니다. 재사용되는 값의 경우 다
[task] | code [pass] | ✅ 통과 [title] | PolygonRendererComponent [question] | PolygonRendererComponent의 IsDrawable 메서드를 사용하여 현재 꼭짓점 배열이 유효한 다각형을 형성하는지 검사하고 로그로 출력하는 스크립트를 작성해줘 [answer] | PolygonRendererComponent의 `IsDrawable()` 메서드는 `Points` 프로퍼티에 저장된 꼭짓점들을 이어 다각형이 정상적으로 그려지는지 확인합니다. 만약 변이 서로 교차하면 `false`를 반환하고, 유효한 다각형을 형성하면 `true`를 반환합니다. 요청하신 검사 및 로그 출력 기능을 수행하는 스크립트는 다음과 같습니다. ```lua Property: [None] number TestInterval = 1.0 Method: [server only] void OnBeginPlay() { loc [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서의 API 명세와 시스템 규칙에 부합하며, 요청된 기능을 정확하고 간결하게 구현했습니다. [source_doc] | 다각형을 그리는 기능입니다. # Properties - **Color Color [Sync]** 다각형의 색상입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. - **string MaterialId [Sync]** 렌더러에 사용할 머티리얼 Id를 지정합니다. - **int32 OrderInLayer [Sync]** 같은 Layer 내의 우선순위를 결정합니다. 수가 클수록 앞에 보입니다. -
[task] | two_turn [pass] | ✅ 통과 [title] | InputLineType [question] | 입력 방식에 따라 UI 동작이 어떻게 달라지는지 궁금합니다. [answer] | `InputLineType`은 텍스트 입력 UI에서 사용자가 텍스트를 입력하는 방식을 지정하는 상수(Enumerator)입니다. 이 값에 따라 Enter 키를 눌렀을 때의 동작이 달라집니다. 구체적인 동작 차이는 다음과 같습니다. | InputLineType | 값 | 동작 설명 | | :--- | :---: | :--- | | `SingleLine` | 0 | **한 줄**로만 입력이 가능합니다. Enter 키를 누르면 입력이 종료됩니다. | | `MultiLineSubmit` | 1 | **여러 줄** 입력이 가능합니다. E [followup] | 한 줄 입력(SingleLine)과 여러 줄 입력(MultiLineSubmit)을 선택할 때 스크립트에서 어떤 값을 전달해야 하는지 코드로 보여주세요. [followup_answer] | `InputLineType`의 멤버를 직접 참조하거나, 정적 메서드 `CastFrom`을 사용하여 값을 전달할 수 있습니다. 아래 두 가지 방식 모두 `SingleLine`과 `MultiLineSubmit`을 선택하는 방법을 보여줍니다. ```lua Method: [client only] void OnBeginPlay() { -- 방법 1: InputLineType 멤버를 직접 참조 local singleLineType = InputLineType.SingleLine -- 값: 0 local mult [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 정의, 값, 메서드를 정확히 인용하고 문서에 없는 UI 연결 코드는 명시적으로 배제하여 사실에 부합하며, Enter 키 동작 차이를 명확히 설명하여 질문에 충실히 답변합니다. [source_doc] | 입력 방식을 지정합니다. # Members | 이름 | 값 | 설명 | |---|---|---| | SingleLine | 0 | 한 줄로 입력합니다. | | MultiLineSubmit | 1 | 여러 줄 입력이 가능하고, Enter 키 입력 시 종료됩니다. | | MultiLineNewline | 2 | 여러 줄 입력이 가능하고, Enter 키 입력 시 개행됩니다. | # Methods - **InputLineType CastFrom(number value) [Static]** 숫자를 해당 타입으로 변환합니다. - *