[task] | instruction_following [pass] | ✅ 통과 [title] | UITransformComponent [question] | 문서 예제 코드에서 `OnUpdate` 메서드 내부 로직만 코드 블록으로 추출하되, 모든 설명은 주석으로만 작성하세요. [answer] | ```lua -- UI 엔티티의 크기를 StretchAll 정렬 옵션과 OffsetMin/OffsetMax 값을 활용하여 주기적으로 변경합니다. -- self.dir 값에 따라 축소(빨간색) 또는 확장(초록색) 방향으로 offset이 증가/감소하며, -- SpriteGUIRendererComponent의 색상도 해당 방향에 따라 동적으로 변경됩니다. local offsetPerDelta = delta * 100.0 * self.dir self.offset = self.offset + offsetPerDelta if self.dir [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서 예제의 OnUpdate 메서드 본문만 정확히 추출하고, 요청대로 설명을 주석으로만 작성하여 질문에 완벽히 부합합니다. [source_doc] | UI 엔티티 크기를 `StrecthAll`를 활용해 변경하는 예제입니다. `OffsetMin`, `OffsetMax` 값을 이용하여 상하좌우의 값의 편차를 줄 수 있습니다. 사이즈가 주는 상태일 때는 빨간색, 사이즈가 커질 떄는 초록색으로 색상이 변경됩니다. ```lua Property: [None] number offset = 0 [None] number dir = 1.0 Method: [client only] void OnUpdate (number delta) { local offsetPerDelta = delta * 10
[task] | code [pass] | ✅ 통과 [title] | SpriteRendererComponent [question] | UtilLogic 서비스의 RandomIntegerRange 메서드를 호출하여 생성된 값에 따라 SpriteRendererComponent의 SpriteRUID를 조건부로 설정하는 스크립트를 작성해줘 [answer] | `_UtilLogic:RandomIntegerRange`로 랜덤 값을 생성한 뒤, 그 값의 범위에 따라 `SpriteRendererComponent`의 `SpriteRUID`를 변경하는 스크립트입니다. ```lua Property: [Sync] number RandomValue = 0 Method: [server only] void OnBeginPlay() { self.RandomValue = _UtilLogic:RandomIntegerRange(1, 100) local sprite = self.Entity.Spr [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제 구조와 mLua 문법을 정확히 준수하여 질문에 부합하는 코드를 제공했습니다. [source_doc] | - **OrderInLayerChangedEvent** Component의 OrderInLayer가 변경되었을 때 발생하는 이벤트입니다. - **SortingLayerChangedEvent** 컴포넌트의 SortingLayer가 변경되었을 때 발생하는 이벤트입니다. - **SpriteAnimPlayerChangeFrameEvent** 스프라이트 애니메이션의 프레임이 바뀔 때 발생하는 이벤트입니다. - **SpriteAnimPlayerEndEvent** 스프라이트 애니메이션 재생이 끝날 때 발생하는 이벤트입니다. - *
[task] | single_turn [pass] | ✅ 통과 [title] | SpriteRendererComponent [question] | 스프라이트를 여러 개 겹쳐서 보여줄 때, OrderInLayer 와 SortingLayer 중 어떤 값이 우선순위를 결정하는지 어떻게 구별해야 하나요? [answer] | `OrderInLayer`와 `SortingLayer`는 겹치는 스프라이트의 표시 우선순위를 결정하는 데 서로 다른 역할을 합니다. 이 두 값이 어떻게 상호작용하는지 이해하려면 우선순위 계층 구조를 살펴야 합니다. 1. **SortingLayer (주요 우선순위)** * 2개 이상의 엔티티가 겹쳤을 때, **SortingLayer**가 가장 큰 우선순위를 결정합니다. * 서로 다른 `SortingLayer` 값이 지정된 스프라이트끼리 겹치면, `SortingLayer`의 설정 값에 따라 앞/뒤가 정해집니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | OrderInLayer가 같은 레이어 내 우선순위를 결정하고 SortingLayer가 레이어 간 우선순위를 결정한다는 문서 내용을 정확히 반영하여, 두 프로퍼티의 구별 기준과 적용 방식을 명확하고 일관되게 설명했습니다. [source_doc] | 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **Dictionary<string, string> ActionSheet [Deprecated] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **string ClipName [Deprecated] [ReadOnly] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **Color Color [Sync]** 스프라이트에 색깔을 덧씌웁니다. - **SpriteDrawMode DrawMod
[task] | single_turn [pass] | ❌ 탈락 [title] | SpriteRendererComponent [question] | DrawMode 를 Tiled 로 설정했는데 TiledSize 를 변경해도 화면에 원하는 크기대로 나오지 않는데, 이 두 프로퍼티가 함께 작용하는 원리가 무엇인가요? [answer] | 참고 문서에 제시된 정보에 따르면, `DrawMode`와 `TiledSize`의 관계는 다음과 같이 설명할 수 있습니다. `TiledSize` 프로퍼티의 정의는 "DrawMode가 Tiled, Sliced일 때 스프라이트를 그릴 영역의 크기를 설정합니다"입니다. 이는 `DrawMode`가 `Tiled`로 설정되었을 때, `TiledSize` 값이 스프라이트가 차지할 화면 영역의 크기를 직접 결정한다는 의미입니다. 따라서 `DrawMode`가 `Tiled`로 올바르게 설정되어 있고, `TiledSize` 값도 원하는 크기로 변경했 [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=3 coherence=4 complexity=3 verbosity=3 [judge_reason] | 문서에 없는 '픽셀 단위' 변환 원리를 단정하거나, 스크립트 속성이 아닌 에디터 컴포넌트 프로퍼티를 스크립트 코드처럼 제시하는 오류가 있으나, 핵심 정의는 정확히 인용했습니다. [source_doc] | 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **Dictionary<string, string> ActionSheet [Deprecated] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **string ClipName [Deprecated] [ReadOnly] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **Color Color [Sync]** 스프라이트에 색깔을 덧씌웁니다. - **SpriteDrawMode DrawMod
[task] | code [pass] | ❌ 탈락 [title] | PlayerControllerComponent [question] | GetActionName을 통해 현재 눌려진 키에 매핑된 액션 이름을 조회하고, ChangedLookAtEvent 발생 시 캐릭터의 시선 변경과 액션 이름을 함께 기록하는 스크립트를 작성해줘. [answer] | 요청하신 기능은 `PlayerControllerComponent`의 `GetActionName(KeyboardKey key)` 메서드와 `ChangedLookAtEvent` 이벤트 핸들러를 조합하여 구현할 수 있습니다. 참고 문서에 따르면 `GetActionName`은 **클라이언트에서만 실행되는 `[ClientOnly]`** 메서드입니다. 또한 `ChangedLookAtEvent`는 캐릭터의 바라보는 방향이 변경될 때 발생합니다. 아래 스크립트는 `ChangedLookAtEvent`가 발생할 때마다 현재 입력된 키(예: 이동 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 없는 KeyboardKey.Right 상수를 지어내고, [self] 이벤트 핸들러 내에서 [ClientOnly] 메서드 호출을 위해 IsClient()를 명시적으로 체크하는 불필요하고 오해의 소리가 있는 코드를 포함했으며, '현재 눌려진 키'를 조회할 API가 없음을 지적하되 해결책을 제시하지 못해 유용성이 제한적입니다. [source_doc] | - **void ActionAttack() [ScriptOverridable]** Attack Key를 입력했을 때 동작입니다. - **void ActionClimb(Vector2 moveOffset, float climbHeight) [ScriptOverridable]** MoveUp, MoveDown Key를 입력했을 때 동작입니다. 사다리나 로프를 오르는 액션을 수행합니다. 지정된 위치 오프셋과 높이를 기준으로 등반 가능한 Entity가 있는지 확인하고, 등반 상태로 전환을 시도합니다. - **boolean Action
[task] | two_turn [pass] | ✅ 통과 [title] | SpriteRendererComponent [question] | 같은 SortingLayer 내에 여러 스프라이트가 겹쳤을 때 어떤 프로퍼티로 겹침 순서를 조정할 수 있는지 궁금합니다. [answer] | 같은 SortingLayer 내에서 여러 스프라이트가 겹쳤을 때 겹침 순서(깊이)를 조정하기 위해 사용할 수 있는 프로퍼티는 `OrderInLayer`입니다. 이 프로퍼티는 정수(int32) 타입이며, 값이 클수록 스프라이트가 더 앞으로(위쪽에) 보이도록 우선순위가 결정됩니다. ```lua Property: [Sync] int32 OrderInLayer = 0 [Sync] string SortingLayer = "Default" [Sync] string SpriteRUID = "" ``` 위 예시에서 `OrderInLayer` [followup] | OrderInLayer 프로퍼티 값을 10과 20으로 설정했을 때 어느 쪽이 앞에 보이는지, 그리고 이 값을 런타임에 변경하여 순서를 바꾸는 코드를 보여주세요. [followup_answer] | `OrderInLayer` 프로퍼티는 값이 클수록 스프라이트가 더 앞에 보이도록 우선순위를 결정합니다. 따라서 `OrderInLayer` 값이 20인 스프라이트가 10인 스프라이트보다 앞에 보입니다. 아래 코드는 런타임에 `OrderInLayer` 값을 변경하여 두 스프라이트의 겹침 순서를 바꾸는 예제입니다. ```lua Property: [Sync] int32 OrderInLayer = 10 [Sync] string SpriteRUID = "" Method: [server only] void OnBeginPlay() { [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에서 OrderInLayer의 타입(int32)과 '수가 클수록 앞에 보인다'는 설명을 정확히 인용하여 질문에 완벽하게 답했습니다. [source_doc] | 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **Dictionary<string, string> ActionSheet [Deprecated] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **string ClipName [Deprecated] [ReadOnly] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **Color Color [Sync]** 스프라이트에 색깔을 덧씌웁니다. - **SpriteDrawMode DrawMod
[task] | code [pass] | ✅ 통과 [title] | CostumeManagerComponent [question] | 다른 Entity와 닿았을 때 서버에서는 아무 동작도 하지 않고, 클라이언트에서는 해당 Entity의 헤어를 "999999"로 변경하는 스크립트를 작성해줘. (사용 컴포넌트: CostumeManagerComponent) [answer] | ```lua Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --Parameters local TriggerBodyEntity = event.TriggerBodyEntity -------------------------------------------------------- if self:IsServer() == true then return end local costumeManager = TriggerBodyEnti [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 예제 구조를 정확히 따르면서 요청한 헤어 ID를 올바르게 적용하여 정답을 제시했습니다. [source_doc] | 다음 예제는 플레이어와 다른 Entity가 닿았을 때 플레이어의 헤어를 변경하고 RUID를 출력합니다. ```lua Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --Parameters local TriggerBodyEntity = event.TriggerBodyEntity -------------------------------------------------------- if self:IsServer() == true then
[task] | code [pass] | ✅ 통과 [title] | CostumeManagerComponent [question] | 다른 Entity와 충돌 시 해당 Entity의 헤어를 "123456"으로 변경하고, 변경된 RUID를 로그로 출력하는 스크립트를 작성해줘. (사용 컴포넌트: CostumeManagerComponent) [answer] | 다른 Entity와 충돌(Triggers 영역에 진입) 시 해당 Entity의 헤어를 지정된 RUID로 변경하고, 변경된 RUID를 로그로 출력하는 스크립트는 다음과 같습니다. ```lua Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --Parameters local TriggerBodyEntity = event.TriggerBodyEntity -------------------------------------------- [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서 예제와 API 사용법이 정확히 일치하며, 질문에 요구된 헤어 변경 및 로그 출력 기능을 간결하고 명확하게 구현했습니다. [source_doc] | 다음 예제는 플레이어와 다른 Entity가 닿았을 때 플레이어의 헤어를 변경하고 RUID를 출력합니다. ```lua Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --Parameters local TriggerBodyEntity = event.TriggerBodyEntity -------------------------------------------------------- if self:IsServer() == true then
[task] | code [pass] | ✅ 통과 [title] | CostumeManagerComponent [question] | 클라이언트에서만 실행되며, 트리거 진입 시 다른 Entity의 헤어를 "000001"으로 설정하는 스크립트를 작성해줘. (사용 컴포넌트: CostumeManagerComponent) [answer] | 클라이언트에서만 실행되도록 `self:IsServer()` 체크 후 반환하고, `TriggerEnterEvent`에서 다른 Entity의 `CostumeManagerComponent`를 통해 헤어를 설정하는 스크립트입니다. ```lua Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --Parameters local TriggerBodyEntity = event.TriggerBodyEntity --------------------------- [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 예제를 정확히 참고하여 클라이언트 전용 로직과 요청된 헤어 ID 변경을 모두 올바르게 구현했습니다. [source_doc] | 다음 예제는 플레이어와 다른 Entity가 닿았을 때 플레이어의 헤어를 변경하고 RUID를 출력합니다. ```lua Event Handler: [self] HandleTriggerEnterEvent (TriggerEnterEvent event) { --Parameters local TriggerBodyEntity = event.TriggerBodyEntity -------------------------------------------------------- if self:IsServer() == true then
[task] | instruction_following [pass] | ✅ 통과 [title] | UITransformComponent [question] | UITransformComponent에 포함된 12개의 고유 프로퍼티와 TransformComponent에서 상속된 8개 프로퍼티의 이름을 표로 정리하세요. [answer] | UITransformComponent의 고유 프로퍼티 12개와 TransformComponent에서 상속된 프로퍼티 8개를 아래 표와 같이 정리했습니다. ### UITransformComponent 고유 프로퍼티 | 프로퍼티 이름 | 타입 | 설명 | | :--- | :--- | :--- | | `ActivePlatform` | `PlatformType` | 이 UI가 활성화되는 플랫폼을 설정합니다. (읽기 전용) | | `AlignmentOption` | `AlignmentType` | 앵커의 참조 포인트를 나타냅니다. | | [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 12개의 고유 프로퍼티와 8개의 상속 프로퍼티를 이름, 타입, 설명이 정확히 일치하도록 표로 잘 정리했습니다. [source_doc] | UI Entity를 표시하는 필수 Component입니다. # Properties - **PlatformType ActivePlatform [ReadOnly]** 이 UI가 활성화되는 플랫폼을 설정합니다. - **AlignmentType AlignmentOption** 앵커의 참조 포인트를 나타냅니다. - **Vector2 anchoredPosition** 앵커 참조 포인트를 기준으로 한 UITransform의 중심 위치입니다. - **Vector2 AnchorsMax** 오른쪽 상단 모서리가 고정되는 부모의 UI
[task] | instruction_following [pass] | ✅ 통과 [title] | SpriteGUIRendererComponent [question] | SpriteGUIRendererComponent에서 애니메이션 재생 속도와 시작/마지막 프레임 범위를 제어하는 프로퍼티 이름과 타입을 3줄 이내로 나열하세요. [answer] | - `PlayRate` (float) - `StartFrameIndex` (int32) - `EndFrameIndex` (int32) [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에서 요구한 프로퍼티 3개의 이름과 타입을 참고 문서와 정확히 일치하게 3줄 이내로 간결하게 제시했습니다. [source_doc] | UI에 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **SpriteAnimClipPlayType AnimClipPlayType** 애니메이션 클립의 재생 방식을 설정합니다. 한 번만 재생, 반복 재생 등을 설정할 수 있습니다. - **int32 EndFrameIndex** 애니메이션 출력 시의 마지막 프레임 번호입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. -
[task] | instruction_following [pass] | ✅ 통과 [title] | SpriteGUIRendererComponent [question] | SpriteGUIRendererComponent에서 FillAmount 프로퍼티의 유효 범위를 1문장 이내로 설명하세요. [answer] | FillAmount 프로퍼티는 0부터 1 사이의 값을 사용합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=1 [judge_reason] | 참고 문서의 FillAmount 설명(0부터 1 사이의 값)과 정확히 일치하며, 질문의 제약(1문장 이내)을 준수합니다. [source_doc] | - **Color Color** 이미지의 기본 색상을 설정합니다 - **boolean DropShadow** 이미지의 그림자 출력 여부를 설정합니다. - **float DropShadowAngle** 그림자를 출력할 각도를 설정합니다 - **Color DropShadowColor** 그림자 색상을 설정합니다. - **float DropShadowDistance** 이미지와 그림자의 거리입니다. - **float FillAmount** Type이 Filled로 설정되어 있을 때 표시되는 이미지의 비율입니다. 0부
[task] | two_turn [pass] | ✅ 통과 [title] | SpriteRendererComponent [question] | 애니메이션 클립의 재생 범위와 속도를 제어하기 위해 사용할 수 있는 프로퍼티 목록을 알려주세요. [answer] | 애니메이션 클립의 재생 범위와 속도를 제어하기 위해 `SpriteRendererComponent`에서 사용할 수 있는 프로퍼티는 다음과 같습니다. 1. **StartFrameIndex** (`int32`, `[Sync]`) * 재생될 애니메이션의 **시작 프레임** 인덱스를 지정합니다. 2. **EndFrameIndex** (`int32`, `[Sync]`) * 재생될 애니메이션의 **마지막 프레임** 인덱스를 지정합니다. 3. **PlayRate** (`float`, `[Sync]`) * 애 [followup] | StartFrameIndex, EndFrameIndex, PlayRate 프로퍼티를 조합하여 애니메이션을 특정 구간만 빠르게 재생하도록 설정하는 mLua 스크립트 예시를 작성해 주세요. [followup_answer] | `SpriteRendererComponent`의 `StartFrameIndex`, `EndFrameIndex`, `PlayRate` 프로퍼티를 설정하여 애니메이션의 특정 구간만 빠르게 재생하는 mLua 스크립트 예시는 다음과 같습니다. ```lua Property: [Sync] number StartFrameIndex = 0 [Sync] number EndFrameIndex = 10 [Sync] number PlayRate = 2.0 Method: [server only] void OnBeginPlay() { -- 애니메 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 질문에 필요한 StartFrameIndex, EndFrameIndex, PlayRate 프로퍼티를 문서와 일치하는 정확한 타입 및 설명과 함께 간결하게 제시했습니다. [source_doc] | 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **Dictionary<string, string> ActionSheet [Deprecated] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **string ClipName [Deprecated] [ReadOnly] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **Color Color [Sync]** 스프라이트에 색깔을 덧씌웁니다. - **SpriteDrawMode DrawMod
[task] | two_turn [pass] | ❌ 탈락 [title] | UITransformComponent [question] | UITransformComponent의 GetWorldCorners() 메서드는 어떤 상황에서 주로 사용되며, 반환되는 좌표 배열의 순서와 좌표계 특징은 무엇인가요? [answer] | UITransformComponent의 `GetWorldCorners()` 메서드는 UI 요소의 실제 화면 내 위치를 월드 좌표계 기준으로 파악해야 할 때 주로 사용됩니다. 예를 들어, UI 버튼이나 패널의 특정 지점(가장자리, 중심 등)에 다른 월드 객체를 배치하거나, UI와 월드 객체 간의 상호작용(클릭 영역 판별, 레이캐스트 시작점 설정 등)을 구현할 때 이 메서드를 통해 정확한 월드 좌표를 가져옵니다. 반환되는 좌표 배열의 특징은 다음과 같습니다. 1. **좌표계**: 모든 좌표는 **월드 좌표계(World Coordi [followup] | GetWorldCorners()로 얻은 좌표를 사용하여 UI 영역이 특정 월드 좌표와 겹치는지 확인하는 충돌 판정 로직을 구현할 때, 좌하단부터 우하단 순서로 어떻게 계산해야 하는지 구체적인 코드 예시를 보여주세요. [followup_answer] | 참고 문서에 명시된 `GetWorldCorners()` 메서드의 반환 순서(좌하단, 좌상단, 우상단, 우하단)를 바탕으로, UI 영역이 특정 월드 좌표에 포함되는지(AABB 충돌 판정) 확인하는 로직을 구현할 수 있습니다. 2D 평면 상에서 사각형 영역 내 점 포함 여부를 확인하려면, 해당 점의 X 좌표가 사각형의 최소 X 좌표와 최대 X 좌표 사이에 있고, Y 좌표가 최소 Y 좌표와 최대 Y 좌표 사이에 있는지 검사하면 됩니다. `GetWorldCorners()`가 반환하는 배열 인덱스는 다음과 같습니다: - `corners[ [scores] | helpfulness=4 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | 메서드의 순서와 좌표계 설명은 정확하나, 코드 예시에서 Lua 테이블 인덱스가 1부터 시작함을 무시하고 0부터 사용하여 잘못된 접근을 보여주었으며, 메서드 호출 문법도 문서/규칙과 어긋날 수 있어 정확성에서 감점되었습니다. [source_doc] | - **table<Vector2> GetWorldCorners()** UI의 사각 영역에 해당하는 4개의 꼭지점의 좌표를 좌하단, 좌상단, 우상단, 우하단 순으로 월드 좌표계로 변환하여 배열로 가져옵니다. ##### inherited from TransformComponent: - **FastVector3 PositionAsFastVector3()** Position값을 FastVector3 타입으로 반환합니다. - **void Rotate(float angle)** 이 엔티티를 angle만큼 반시계 방향으로 회전시킵
[task] | two_turn [pass] | ❌ 탈락 [title] | PlayerControllerComponent [question] | PlayerControllerComponent에서 발생하는 PlayerActionEvent와 ChangedLookAtEvent를 구독하여 플레이어의 행동과 시선 변경을 로깅하거나 다른 컴포넌트에 전달하려면 어떻게 해야 하나요? [answer] | `PlayerControllerComponent`에 등록된 이벤트 핸들러를 통해 `PlayerActionEvent`와 `ChangedLookAtEvent`를 구독할 수 있습니다. 두 이벤트 모두 `[self]` 블록 안에 `Handle` 접두사가 붙은 함수를 정의하여 처리합니다. 1. **PlayerActionEvent**: 플레이어가 액션(공격, 점프 등)을 사용할 때 발생하며, 이벤트 객체에서 `ActionName`과 `PlayerEntity`를 접근할 수 있습니다. 2. **ChangedLookAtEvent**: 캐릭터가 바 [followup] | PlayerActionEvent 핸들러 안에서 이벤트에서 전달되는 액션 이름을 GetActionName 메서드와 연관 지어 판별하고, 클라이언트 환경([client only])에서만 실행되도록 제한하는 Event Handler 코드 블록을 만들어 주세요. [followup_answer] | `PlayerActionEvent` 핸들러 내부에서 `GetActionName` 메서드를 호출하기 위해서는 해당 키보드를 눌렀을 때의 `KeyboardKey` 값이 필요합니다. 그러나 `PlayerActionEvent`의 매개변수(`event`)에는 `ActionName`과 `PlayerEntity`만 제공되며, 이벤트 발생 시점의 `KeyboardKey` 정보는 제공되지 않습니다. 따라서 `PlayerActionEvent` 핸들러 **안에서** `GetActionName`을 직접 호출하여 액션을 역추적하는 것은 불가능합니다. ` [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | 이벤트 핸들러 구조는 정확하나, 문서에 정의되지 않은 PlayerActionEvent의 프로퍼티(ActionName, PlayerEntity)를 지어내어 정확도가 낮습니다. [source_doc] | - **void ActionAttack() [ScriptOverridable]** Attack Key를 입력했을 때 동작입니다. - **void ActionClimb(Vector2 moveOffset, float climbHeight) [ScriptOverridable]** MoveUp, MoveDown Key를 입력했을 때 동작입니다. 사다리나 로프를 오르는 액션을 수행합니다. 지정된 위치 오프셋과 높이를 기준으로 등반 가능한 Entity가 있는지 확인하고, 등반 상태로 전환을 시도합니다. - **boolean Action
[task] | code [pass] | ❌ 탈락 [title] | SpriteRendererComponent [question] | SpriteRendererComponent의 OrderInLayerChangedEvent와 SortingLayerChangedEvent 핸들러를 구현하여 레이어 변경 시 log()로 새 값을 출력하는 스크립트를 작성해줘 [answer] | SpriteRendererComponent의 `OrderInLayerChangedEvent`와 `SortingLayerChangedEvent`는 해당 컴포넌트의 값이 변경될 때 발생하는 이벤트입니다. 이 두 이벤트 핸들러를 구현하여 이벤트 발생 시 `log()` 함수를 통해 변경된 값을 출력하는 스크립트입니다. 참고로 제공된 문서에는 이벤트 핸들러의 정확한 파라미터 구조(예: 이벤트 객체가 어떤 필드를 가지는지)가 명시되어 있지 않습니다. 따라서 아래 예제에서는 이벤트 객체를 `event`로 받아들이고, 일반적으로 예상되는 필드 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=2 verbosity=3 [judge_reason] | 이벤트 명칭은 문서와 일치하나, 필드 이름(NewOrderInLayer 등)을 지어내어 사용하면서도 이를 '가정'으로 명시하지 않고 예제 코드로 제시했으므로 정확성에 감점이 필요합니다. [source_doc] | - **OrderInLayerChangedEvent** Component의 OrderInLayer가 변경되었을 때 발생하는 이벤트입니다. - **SortingLayerChangedEvent** 컴포넌트의 SortingLayer가 변경되었을 때 발생하는 이벤트입니다. - **SpriteAnimPlayerChangeFrameEvent** 스프라이트 애니메이션의 프레임이 바뀔 때 발생하는 이벤트입니다. - **SpriteAnimPlayerEndEvent** 스프라이트 애니메이션 재생이 끝날 때 발생하는 이벤트입니다. - *
[task] | instruction_following [pass] | ✅ 통과 [title] | SpriteGUIRendererComponent [question] | SpriteGUIRendererComponent의 DropShadow 관련 프로퍼티 4가지를 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Property: [None] boolean DropShadow = false -- 이미지의 그림자 출력 여부를 설정합니다. [None] float DropShadowAngle = 0 -- 그림자를 출력할 각도를 설정합니다. [None] Color DropShadowColor = Color.black -- 그림자 색상을 설정합니다. [None] float DropShadowDistance = 0 -- 이미지와 그림자의 거리입니다. ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 DropShadow 관련 프로퍼티 4가지를 정확한 타입과 설명 주석과 함께 코드 블록으로만 출력하여 요구사항을 완벽히 충족했습니다. [source_doc] | - **Color Color** 이미지의 기본 색상을 설정합니다 - **boolean DropShadow** 이미지의 그림자 출력 여부를 설정합니다. - **float DropShadowAngle** 그림자를 출력할 각도를 설정합니다 - **Color DropShadowColor** 그림자 색상을 설정합니다. - **float DropShadowDistance** 이미지와 그림자의 거리입니다. - **float FillAmount** Type이 Filled로 설정되어 있을 때 표시되는 이미지의 비율입니다. 0부
[task] | two_turn [pass] | ✅ 통과 [title] | SpriteRendererComponent [question] | 스프라이트 렌더링 시 색상과 투명도를 제어하는 방법과 관련된 프로퍼티와 메서드가 무엇인지 알려주세요. [answer] | SpriteRendererComponent에서 스프라이트의 색상과 투명도를 제어하는 데 사용할 수 있는 프로퍼티와 메서드는 다음과 같습니다. **1. 프로퍼티** * **Color**: `[Sync]` 속성을 가진 `Color` 타입의 프로퍼티입니다. 스프라이트에 색깔을 덧씌우는 역할을 합니다. **2. 메서드** * **SetAlpha(float alpha)**: 스프라이트의 알파(투명도) 값을 설정하는 메서드입니다. **사용 예시 코드** ```lua Property: [None] string SpriteRUID [followup] | Color 프로퍼티와 SetAlpha 메서드를 함께 사용하여 스프라이트의 색을 변경하고 투명도를 조절하는 mLua 코드 예시를 작성해 주세요. [followup_answer] | SpriteRendererComponent의 `Color` 프로퍼티와 `SetAlpha` 메서드를 사용하여 스프라이트의 색과 투명도를 제어하는 mLua 코드 예시는 다음과 같습니다. ```lua Property: [None] string SpriteRUID = "" Method: [client only] void UpdateSpriteAppearance() { -- Color 프로퍼티를 통해 색상 및 알파(투명도)를 동시에 설정 -- 형식: Color(R, G, B, A) - 값은 0.0 ~ 1.0 범위 s [scores] | helpfulness=4 correctness=3 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 Color 생성자 문법을 예제에 포함시켰으나, 핵심 프로퍼티와 메서드 설명은 정확하며 질문에 충실하게 답변했습니다. [source_doc] | 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **Dictionary<string, string> ActionSheet [Deprecated] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **string ClipName [Deprecated] [ReadOnly] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **Color Color [Sync]** 스프라이트에 색깔을 덧씌웁니다. - **SpriteDrawMode DrawMod
[task] | code [pass] | ✅ 통과 [title] | SpriteRendererComponent [question] | SpriteRendererComponent 의 PlayRate 프로퍼티를 통해 애니메이션 재생 속도를 0.5로 설정하고, Enable 프로퍼티가 false일 경우에만 재생 속도를 0으로 변경하는 스크립트를 작성해줘 [answer] | SpriteRendererComponent의 `PlayRate` 프로퍼티는 애니메이션 리소스의 재생 속도를 조절하며, 0 이상의 값을 지원합니다. `Enable` 프로퍼티는 컴포넌트 활성화 여부를 나타냅니다. 요청하신 조건(PlayRate를 0.5로 설정하고, Enable이 false일 때만 0으로 변경)를 만족하는 스크립트는 다음과 같습니다. ```lua Method: void OnBeginPlay() { local sprite = self.Entity.SpriteRendererComponent if sprite [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=3 complexity=2 verbosity=2 [judge_reason] | 요청된 조건을 만족하는 로직을 제시했으나, 코드 블록이 mLua 스크립트 구조(Property/Method/Event Handler)를 무시하고 단순히 'Method:' 라벨만 붙여진 형태이며, 컴포넌트 접근 방식이 self.SpriteRendererComponent가 아닌 self.Entity.SpriteRendererComponent로 적혀 있어 문서의 컴포넌트 접근 규칙(self.Entity.TransformComponent 등)과 일관성이 떨어지거나 오류일 가능성이 있습니다. [source_doc] | 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **Dictionary<string, string> ActionSheet [Deprecated] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **string ClipName [Deprecated] [ReadOnly] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **Color Color [Sync]** 스프라이트에 색깔을 덧씌웁니다. - **SpriteDrawMode DrawMod
[task] | instruction_following [pass] | ✅ 통과 [title] | SpriteGUIRendererComponent [question] | SpriteGUIRendererComponent의 FillOrigin 프로퍼티에서 FillMethod별 사용 가능한 값 범위를 표로 정리하세요. [answer] | SpriteGUIRendererComponent의 `FillOrigin` 프로퍼티는 `Type`이 `Filled`로 설정되어 있을 때 채우기 시작점을 지정하는 데 사용됩니다. `FillMethod`에 따라 사용 가능한 값 범위가 달라집니다. `FillMethod`별 `FillOrigin` 사용 가능 값 범위는 다음과 같습니다. | FillMethod | FillOrigin 사용 가능 값 범위 | | :--- | :--- | | Horizontal / Vertical | 0 ~ 1 | | Radial90 / Radial180 / [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 FillOrigin 프로퍼티 설명과 정확히 일치하며, 요청한 표 형식으로 명확하게 답변했습니다. [source_doc] | - **Color Color** 이미지의 기본 색상을 설정합니다 - **boolean DropShadow** 이미지의 그림자 출력 여부를 설정합니다. - **float DropShadowAngle** 그림자를 출력할 각도를 설정합니다 - **Color DropShadowColor** 그림자 색상을 설정합니다. - **float DropShadowDistance** 이미지와 그림자의 거리입니다. - **float FillAmount** Type이 Filled로 설정되어 있을 때 표시되는 이미지의 비율입니다. 0부
[task] | code [pass] | ✅ 통과 [title] | SpriteRendererComponent [question] | SpriteRendererComponent 의 FlipX 및 FlipY 프로퍼티를 각각 true로 설정하고, DrawMode를 Tiled로 변경한 후 TiledSize를 Vector2(100, 100)으로 설정하는 초기화 스크립트를 작성해줘 [answer] | SpriteRendererComponent의 `FlipX`, `FlipY`, `DrawMode`, `TiledSize` 프로퍼티는 모두 `[Sync]` 속성이 있어 서버에서 설정하면 클라이언트로 동기화됩니다. 이를 초기화하는 스크립트는 `OnBeginPlay()` 생명주기 메서드 내에서 실행하도록 작성하면 됩니다. ```lua Method: [server only] void OnBeginPlay() { local spriteRenderer = self.Entity.SpriteRendererComponent [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 프로퍼티 정의와 mLua 스크립트 규칙을 정확히 준수하여 요청된 초기화 로직을 간결하고 명확하게 구현했습니다. [source_doc] | 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **Dictionary<string, string> ActionSheet [Deprecated] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **string ClipName [Deprecated] [ReadOnly] [HideFromInspector]** 더는 사용하지 않는 프로퍼티입니다. - **Color Color [Sync]** 스프라이트에 색깔을 덧씌웁니다. - **SpriteDrawMode DrawMod
[task] | single_turn [pass] | ✅ 통과 [title] | UITransformComponent [question] | UITransformComponent의 Pivot과 TransformComponent에서 상속받은 Rotation 속성은 UI의 회전 동작에 어떤 차이가 있나요? [answer] | UITransformComponent의 `Pivot`과 TransformComponent에서 상속받은 `Rotation`은 UI의 회전에 서로 다른 방식으로 영향을 미칩니다. **1. `Pivot` (UITransformComponent)** * **역할:** UI가 회전할 때 기준이 되는 점(중심점)을 정의합니다. * **속성:** `Vector2` 타입으로, 정규화된 좌표(0.0 ~ 1.0)를 사용합니다. * **동작:** `Pivot` 값이 UI의 어떤 부분이 회전축이 될지 결정합니다. 예를 들어 `Vector2( [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서에 명시된 Pivot(회전 기준점)과 Rotation(오일러 각도)의 정의 및 관계를 정확하고 명확하게 설명하여 질문에 완벽히 부합합니다. [source_doc] | UI Entity를 표시하는 필수 Component입니다. # Properties - **PlatformType ActivePlatform [ReadOnly]** 이 UI가 활성화되는 플랫폼을 설정합니다. - **AlignmentType AlignmentOption** 앵커의 참조 포인트를 나타냅니다. - **Vector2 anchoredPosition** 앵커 참조 포인트를 기준으로 한 UITransform의 중심 위치입니다. - **Vector2 AnchorsMax** 오른쪽 상단 모서리가 고정되는 부모의 UI
[task] | instruction_following [pass] | ✅ 통과 [title] | SpriteGUIRendererComponent [question] | SortingLayer와 OrderInLayer가 겹친 엔티티의 표시 우선순위를 결정하는 방식을 표로 정리하세요. [answer] | 제공된 참고 문서에 따르면, `SortingLayer`와 `OrderInLayer`는 다음과 같은 방식으로 겹친 엔티티의 표시 우선순위를 결정합니다. | 프로퍼티 | 역할 및 동작 방식 | | :--- | :--- | | **SortingLayer** | 2개 이상의 엔티티가 겹쳤을 때, 해당 레이어(Sorting Layer)에 따라 보이는 우선순위가 결정됩니다. | | **OrderInLayer** | 같은 Layer 내에서 우선순위를 결정합니다. **수가 클수록** 앞에 보입니다. | 즉, 먼저 `SortingLayer`가 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 정의와 일치하며, 요청된 표 형식으로 명확하게 정리되어 있습니다. [source_doc] | UI에 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **SpriteAnimClipPlayType AnimClipPlayType** 애니메이션 클립의 재생 방식을 설정합니다. 한 번만 재생, 반복 재생 등을 설정할 수 있습니다. - **int32 EndFrameIndex** 애니메이션 출력 시의 마지막 프레임 번호입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. -
[task] | single_turn [pass] | ✅ 통과 [title] | SpriteGUIRendererComponent [question] | OrderInLayer 값이 커지는 방향으로 스프라이트가 앞으로 나오는지, 아니면 뒤로 가는지 방향이 어떻게 되나요? [answer] | OrderInLayer 값이 클수록 스프라이트가 앞으로(맨 위에) 보입니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 '수가 클수록 앞에 보입니다'라는 설명과 정확히 일치하며, 질문에 간결하고 정확하게 답변했습니다. [source_doc] | UI에 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **SpriteAnimClipPlayType AnimClipPlayType** 애니메이션 클립의 재생 방식을 설정합니다. 한 번만 재생, 반복 재생 등을 설정할 수 있습니다. - **int32 EndFrameIndex** 애니메이션 출력 시의 마지막 프레임 번호입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. -
[task] | two_turn [pass] | ✅ 통과 [title] | UITransformComponent [question] | UITransformComponent의 OffsetMin과 OffsetMax를 활용하여 UI 엔티티의 크기를 변경하는 기본 원리와 AlignmentOption 설정은 무엇인가요? [answer] | `UITransformComponent`의 `OffsetMin`과 `OffsetMax`를 활용하여 UI 엔티티의 크기를 변경하는 기본 원리와 `AlignmentOption` 설정은 다음과 같습니다. ### 1. 기본 원리: `OffsetMin`과 `OffsetMax` UI 엔티티의 크기는 앵커(anchor) 기준점으로부터의 오프셋 값으로 결정됩니다. * **`OffsetMin`**: UI 요소의 **좌측 및 하단** 경계까지의 오프셋을 정의합니다. * **`OffsetMax`**: UI 요소의 **우측 및 상단** 경계까지 [followup] | StretchAll 상태가 아닌 경우 UITransformComponent를 초기화하고, SpriteGUIRendererComponent의 Color를 dir 값에 따라 변경하는 구체적인 코드 로직을 알려주세요. [followup_answer] | 참고 문서에 제시된 예제 코드에서 `StretchAll` 상태가 아닐 때 `UITransformComponent`를 초기화하고, `SpriteGUIRendererComponent`의 `Color`를 `dir` 값에 따라 변경하는 로직은 다음과 같습니다. ### 1. `StretchAll` 상태가 아닐 때 `UITransformComponent` 초기화 `uiTransform.AlignmentOption`이 `AlignmentType.StretchAll`이 아닌 경우, 해당 옵션을 `StretchAll`로 변경하고 위치 및 오프셋 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 원리를 정확히 설명하고, 문서에 있는 예제 코드를 충실히 인용하여 질문한 기본 원리와 설정 방법을 명확하게 답변했습니다. [source_doc] | UI 엔티티 크기를 `StrecthAll`를 활용해 변경하는 예제입니다. `OffsetMin`, `OffsetMax` 값을 이용하여 상하좌우의 값의 편차를 줄 수 있습니다. 사이즈가 주는 상태일 때는 빨간색, 사이즈가 커질 떄는 초록색으로 색상이 변경됩니다. ```lua Property: [None] number offset = 0 [None] number dir = 1.0 Method: [client only] void OnUpdate (number delta) { local offsetPerDelta = delta * 10
[task] | single_turn [pass] | ✅ 통과 [title] | UITransformComponent [question] | PositionAsFastVector3와 WorldPositionAsFastVector3 메서드의 반환 타입이 모두 FastVector3인데, 이 둘은 어떤 값의 차이를 나타내나요? [answer] | `PositionAsFastVector3`와 `WorldPositionAsFastVector3`는 모두 `FastVector3` 타입을 반환하지만, 좌표계가 다릅니다. * **`PositionAsFastVector3()`**: 엔티티의 **로컬 좌표(Position)** 값을 `FastVector3` 타입으로 반환합니다. 이는 부모 엔티티를 기준으로 한 상대 위치입니다. * **`WorldPositionAsFastVector3()`**: 엔티티의 **월드 좌표(WorldPosition)** 값을 `FastVector3` 타 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 Position과 WorldPosition의 차이를 정확히 설명하여 질문에 충분히 답하고 있으며, 지어낸 API가 없습니다. [source_doc] | - **table<Vector2> GetWorldCorners()** UI의 사각 영역에 해당하는 4개의 꼭지점의 좌표를 좌하단, 좌상단, 우상단, 우하단 순으로 월드 좌표계로 변환하여 배열로 가져옵니다. ##### inherited from TransformComponent: - **FastVector3 PositionAsFastVector3()** Position값을 FastVector3 타입으로 반환합니다. - **void Rotate(float angle)** 이 엔티티를 angle만큼 반시계 방향으로 회전시킵
[task] | instruction_following [pass] | ✅ 통과 [title] | SpriteGUIRendererComponent [question] | OverrideSorting 프로퍼티가 [ReadOnly] 태그를 가진 이유와 IgnoreMapLayerCheck의 [Sync] 속성을 고려한 스크립트 예제를 코드만 출력하고 설명은 주석으로 작성하세요. [answer] | ```lua Property: [None] boolean IsOverrideSortingEnabled = true [Sync] boolean IsIgnoreMapLayer = false Method: [client only] void OnBeginPlay () { -- OverrideSorting은 [ReadOnly] 태그를 가지고 있어 런타임에 스크립트로 값을 변경할 수 없습니다. -- 따라서 이 프로퍼티는 에디터에서 미리 설정되어 있어야 하며, 스크립트에서는 읽기만 가능하거나 단순히 상태를 확인하는 용도로 사용됩니다. - [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | [ReadOnly] 속성의 의미와 [Sync] 프로퍼티의 동기화 특성을 정확히 이해하고, 이를 반영한 합리적인 스크립트 예제와 주석을 제공하여 질문에 충실히 답했습니다. [source_doc] | UI에 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **SpriteAnimClipPlayType AnimClipPlayType** 애니메이션 클립의 재생 방식을 설정합니다. 한 번만 재생, 반복 재생 등을 설정할 수 있습니다. - **int32 EndFrameIndex** 애니메이션 출력 시의 마지막 프레임 번호입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. -
[task] | two_turn [pass] | ❌ 탈락 [title] | UITransformComponent [question] | UITransformComponent의 앵커(Anchors)와 위치 관련 프로퍼티는 어떤 역할과 차이를 가집니까? [answer] | `UITransformComponent`에서 앵커(Anchor)와 위치(Position) 관련 프로퍼티는 UI의 레이아웃을 결정하는 데 서로 다른 역할을 합니다. 각 프로퍼티의 역할과 차이는 다음과 같습니다. **1. 앵커(Anchor) 관련 프로퍼티** 앵커는 UI가 부모 요소의 어디를 기준으로 고정될지를 정의합니다. * **`AnchorsMin` (Vector2)** * **역할:** UI의 **왼쪽 하단 모서리**가 고정되는 부모의 정규화된 위치를 나타냅니다. * **차이:** UI의 하단/좌측 기 [followup] | AnchorsMin과 AnchorsMax가 부모의 정규화된 위치를 나타낼 때, anchoredPosition과 OffsetMin/OffsetMax가 실제로 UI의 최종 좌표 계산에 어떻게 관여하는지 구체적인 수식이나 예시를 알려주세요. [followup_answer] | 제공된 참고 문서에는 `AnchorsMin`, `AnchorsMax`, `anchoredPosition`, `OffsetMin`, `OffsetMax`가 UI의 최종 좌표 계산에 관여하는 **구체적인 수식이나 계산 로직이 명시되어 있지 않습니다.** 문서에는 각 프로퍼티의 정의만 제공되며, 최종 좌표가 어떻게 산출되는지에 대한 공식은 찾을 수 없습니다. 따라서 참고 문서를 근거로 구체적인 수식이나 계산 예시를 제시할 수 없습니다. 다만, 문서에 정의된 각 프로퍼티의 역할은 다음과 같습니다. * **`AnchorsMin` / [scores] | helpfulness=3 correctness=1 coherence=3 complexity=2 verbosity=3 [judge_reason] | 참고 문서와 일치하지 않는 구체적인 예시 값(StretchAll, Vector2.zero)과 코드 로직을 지어냈으며, OffsetMin/Max의 설명에서 문서의 '오른쪽 상단 모서리'라는 정의를 무시하고 '왼쪽 하단 모서리'로 서술하는 오류가 있습니다. [source_doc] | UI Entity를 표시하는 필수 Component입니다. # Properties - **PlatformType ActivePlatform [ReadOnly]** 이 UI가 활성화되는 플랫폼을 설정합니다. - **AlignmentType AlignmentOption** 앵커의 참조 포인트를 나타냅니다. - **Vector2 anchoredPosition** 앵커 참조 포인트를 기준으로 한 UITransform의 중심 위치입니다. - **Vector2 AnchorsMax** 오른쪽 상단 모서리가 고정되는 부모의 UI
[task] | single_turn [pass] | ✅ 통과 [title] | UITransformComponent [question] | UITransformComponent의 UIMode가 변경될 때 스크립트에서 이를 감지하기 위해 어떤 이벤트를 핸들러로 등록해야 하나요? [answer] | UITransformComponent의 UIMode가 변경될 때 발생하는 이벤트는 `UIModeTypeChangedEvent`입니다. 이를 감지하기 위해 해당 이벤트 핸들러를 등록해야 합니다. mLua 스크립트 형식에 맞춰 이벤트 핸들러를 작성하면 다음과 같습니다. ```lua Event Handler: [self] HandleUIModeTypeChangedEvent(UIModeTypeChangedEvent event) { -- UIMode가 변경되었을 때 실행될 로직 log("UIMode has been chan [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 UIModeTypeChangedEvent를 정확히 인용하고, mLua 규칙에 부합하는 이벤트 핸들러 구문을 올바르게 제시하여 질문에 완벽히 부응합니다. [source_doc] | - **table<Vector2> GetWorldCorners()** UI의 사각 영역에 해당하는 4개의 꼭지점의 좌표를 좌하단, 좌상단, 우상단, 우하단 순으로 월드 좌표계로 변환하여 배열로 가져옵니다. ##### inherited from TransformComponent: - **FastVector3 PositionAsFastVector3()** Position값을 FastVector3 타입으로 반환합니다. - **void Rotate(float angle)** 이 엔티티를 angle만큼 반시계 방향으로 회전시킵
[task] | single_turn [pass] | ✅ 통과 [title] | SpriteGUIRendererComponent [question] | 이미지 비율이나 피봇을 유지하는 방식인 PreserveSprite 프로퍼티는 어떤 값들을 설정할 수 있나요? [answer] | `PreserveSprite` 프로퍼티는 `PreserveSpriteType` 타입을 가지며, 원본 이미지의 비율, 피봇, 크기 등을 어떻게 보존할지에 대한 방식을 설정합니다. 참고 문서에는 `PreserveSpriteType`의 구체적인 열거형 값(예: KeepAspect, KeepSize 등) 목록이 포함되어 있지 않습니다. 따라서 이 프로퍼티에 정확히 어떤 값들을 설정할 수 있는지는 확인이 어렵습니다. [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 열거형 값이 명시되어 있지 않다는 점을 정확히 인지하여 지어내지 않고, 프로퍼티의 타입과 용도만 사실적으로 설명하여 신뢰성을 유지했습니다. [source_doc] | UI에 스프라이트 또는 애니메이션 클립을 출력합니다. # Properties - **SpriteAnimClipPlayType AnimClipPlayType** 애니메이션 클립의 재생 방식을 설정합니다. 한 번만 재생, 반복 재생 등을 설정할 수 있습니다. - **int32 EndFrameIndex** 애니메이션 출력 시의 마지막 프레임 번호입니다. - **boolean IgnoreMapLayerCheck [Sync]** SortingLayer에 Map Layer 이름을 지정했을 때 자동 치환을 수행하지 않습니다. -