[task] | single_turn [pass] | ✅ 통과 [title] | BadgeInfoPages [question] | BadgeService로 검색을 시작하지 않고 BadgeInfoPages 컴포넌트만 단독으로 사용할 수 있나요? [answer] | 아니요, `BadgeInfoPages` 컴포넌트를 단독으로 사용할 수 없습니다. `BadgeInfoPages`는 `_BadgeService`의 메서드(예: `GetBadgeInfosAndWait`)를 호출하여 검색을 수행했을 때 반환되는 결과 객체입니다. 이 객체는 검색 컨텍스트와 함께 생성되며, `BadgeService`를 통해 검색을 시작하지 않으면 `BadgeInfoPages` 인스턴스를 얻거나 초기화할 방법이 없습니다. 따라서 `BadgeInfoPages`의 `GetCurrentPageDatas()`, `MoveToNex [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 명시되지 않은 메서드 예시를 포함했으나, '검색 결과 조회용 객체'라는 문서의 맥락에 기반하여 단독 사용 불가라는 논리적 결론을 내렸으므로 핵심 내용은 정확하고 유용합니다. [source_doc] | BadgeService에서 검색한 배지 목록을 페이지 단위로 조회합니다. # Properties - **boolean IsLastPage [ReadOnly]** 현재 페이지가 검색 결과의 마지막 페이지인지 여부를 구합니다. # Methods - **table<BadgeInfo> GetCurrentPageDatas()** 검색 결과 중 현재 페이지의 배지 정보 목록을 구합니다. 한 페이지에 최대 25개의 검색 결과가 포함됩니다. - **void MoveToNextPageAndWait() [Yield]** 검색 결과의
[task] | single_turn [pass] | ❌ 탈락 [title] | SpriteAnimPlayerStartFrameEvent [question] | 이벤트 핸들러에서 TotalFrameCount 속성을 읽어 애니메이션 진행도를 계산할 수 있나요? [answer] | 네, 가능합니다. `SpriteAnimPlayerStartFrameEvent` 이벤트 핸들러에서 `event.TotalFrameCount` 속성을 읽을 수 있습니다. `TotalFrameCount`는 스프라이트 애니메이션을 구성하는 총 프레임 수를 나타내는 `int32` 타입의 읽기 전용(ReadOnly) 속성입니다. 이 값과 함께 이벤트에 포함된 `FrameIndex` (현재 재생 중인 첫 번째 프레임 번호)를 사용하여 애니메이션의 진행도를 계산할 수 있습니다. 아래는 `SpriteAnimPlayerStartFrameEvent [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=3 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 HandleSpriteAnimPlayerStartFrameEvent 핸들러를 지어내었고, StartFrame 이벤트만으로 애니메이션 진행도를 계산할 수 있다는 논리적 오류가 있습니다. [source_doc] | 스프라이트 애니메이션이 첫번째 프레임을 재생할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * ClimbableSpriteRendererComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SpriteRendererComponent <img src="https://img.shiel
[task] | code [pass] | ✅ 통과 [title] | InteractionLeaveEvent [question] | InteractionComponent의 InteractionLeaveEvent 이벤트 핸들러에서 InteractionEntity가 서버 엔티티인지 확인하여, 서버 엔티티라면 _EntityService:GetEntityByPath("/maps/map01/obj")로 가져온 객체의 TransformComponent.Position을 InteractionEntity의 이전 위치로 설정하는 스크립트를 작성해줘. [answer] | `InteractionLeaveEvent` 이벤트 핸들러에서 `InteractionEntity`가 서버 엔티티인지 확인하는 구체적인 API나 메서드가 제공된 문서에는 포함되어 있지 않습니다. 따라서 "서버 엔티티인지 확인"하는 로직을 작성할 수 없습니다. 참고 문서에 명시된 정보에 따르면 `InteractionLeaveEvent`는 `InteractionComponent`에 의해 발생하며, 해당 이벤트 객체에는 `InteractionEntity` 프로퍼티만 존재합니다. 요청하신 "서버 엔티티 확인" 로직을 제외한 나머지 부분(구 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 없는 '서버 엔티티 확인' API를 지어내지 않고 정직하게 한계를 지적했으며, 제공된 정보 범위 내에서 합리적인 대체 코드를 제시하여 질문 의도에 부합합니다. [source_doc] | Interaction 영역 밖으로 벗어날 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * InteractionComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> # Properties - **Entity InteractionEntity [ReadOnly
[task] | code [pass] | ✅ 통과 [title] | RectTileLeaveEvent [question] | RectTileLeaveEvent의 event.TileInfo와 event.TileMap을 사용하여 타일 정보를 확인하고, event.Entity가 특정 경로에 존재하는지 _EntityService:GetEntityByPath로 검증하는 스크립트를 작성해줘. [answer] | `RectTileLeaveEvent`는 특정 사각형 타일에서 벗어났을 때 발생하는 이벤트입니다. 이 이벤트 핸들러에서 `event.TileInfo`와 `event.TileMap`을 통해 타일 정보를 조회하고, `event.Entity`의 경로가 `_EntityService:GetEntityByPath`로 유효한지 확인하는 스크립트는 다음과 같습니다. ```lua Event Handler: [server only] [self] HandleRectTileLeaveEvent (RectTileLeaveEvent event) { ---- [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=3 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 Entity.Name을 경로로 가정하여 _EntityService:GetEntityByPath에 전달하는 로직이 포함되어 있어 정확도가 낮지만, 문서에 없는 API를 지어내지 않았고 구조는 일관됩니다. [source_doc] | 특정 사각형 타일에서 벗어났을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * KinematicbodyComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * SideviewbodyComponent <img src="https://img.shields.io/
[task] | code [pass] | ❌ 탈락 [title] | SpriteAnimPlayerStartEvent [question] | SpriteRendererComponent에 SpriteAnimPlayerStartEvent를 구독하여 이벤트 발생 시 ClipPlayRate와 ClipPlayType 값을 log()로 출력하는 스크립트를 작성해줘 [answer] | `SpriteAnimPlayerStartEvent`는 `SpriteRendererComponent`에서 **클라이언트(Clients)** 공간에서만 발생합니다. 따라서 해당 이벤트를 수신하는 핸들러는 `[client only]` 실행 공간으로 선언해야 합니다. 요청하신 대로 `ClipPlayRate`와 `ClipPlayType` 값을 로그로 출력하는 스크립트는 다음과 같습니다. ```lua Event Handler: [client only] HandleSpriteAnimPlayerStartEvent(SpriteAnimPlayer [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=2 verbosity=2 [judge_reason] | 이벤트가 컴포넌트에서 발생하는 것이 아닌 API 호출에 의해 발생하는 것이며, [client only] 수식어는 이벤트 핸들러가 아닌 메서드에만 사용되는 문법으로 문서 및 규칙과 어긋난 부분이 있음 [source_doc] | 스프라이트 애니메이션 재생이 시작될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * ClimbableSpriteRendererComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SpriteRendererComponent <img src="https://img.shields.io/
[task] | single_turn [pass] | ❌ 탈락 [title] | RectTileLeaveEvent [question] | 이벤트 핸들러에서 RectTileLeaveEvent 를 처리할 때, self.Entity.TransformComponent 와 이벤트의 Entity 프로퍼티 간 관계나 충돌 감지 로직에서 주의해야 할 점은 무엇인가요? [answer] | `RectTileLeaveEvent`를 처리할 때 `self.Entity.TransformComponent`와 이벤트의 `Entity` 프로퍼티 간 관계 및 충돌 감지 로직에서 주의해야 할 점은 다음과 같습니다. ### 1. `self.Entity`와 `event.Entity`의 관계 * **`self.Entity`**: 스크립트가 부착되어 있는 엔티티를 가리킵니다. * **`event.Entity`**: 타일과 충돌하여 이벤트가 발생한 엔티티를 가리킵니다. * **주의점**: 이 이벤트가 `self.Entity`가 타 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | 이벤트 핸들러가 부착된 컴포넌트의 엔티티에 대해만 발생한다는 기본 원리를 무시하고, '모든 엔티티에 대해 발생할 수 있으므로 event.Entity와 self.Entity 비교가 필수'라고 서술하여 잘못된 가이드라인을 제시함. [source_doc] | 특정 사각형 타일에서 벗어났을 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * KinematicbodyComponent <img src="https://img.shields.io/static/v1?label=Space&message=Server,Client&color=c4a484" alt="custom" title="Server, Client에서 이벤트가 발생합니다." data-nodeid="4"> * SideviewbodyComponent <img src="https://img.shields.io/
[task] | two_turn [pass] | ✅ 통과 [title] | SpriteAnimPlayerStartFrameEvent [question] | SpriteAnimPlayerStartFrameEvent를 직접 초기화하는 생성자의 매개변수와 기본값은 어떻게 되나요? [answer] | `SpriteAnimPlayerStartFrameEvent`를 직접 생성하는 생성자의 매개변수와 기본값은 다음과 같습니다. * **animPlayer**: `IEmbeddedSpriteAnimPlayer` 타입으로, 기본값은 `nil`입니다. * **frameIndex**: `int32` 타입으로, 기본값은 `-1`입니다. * **reversePlaying**: `boolean` 타입으로, 기본값은 `false`입니다. * **totalFrameCount**: `int32` 타입으로, 기본값은 `0`입니다. 해당 [followup] | 테스트나 시뮬레이션 목적의 `SpriteAnimPlayerStartFrameEvent` 인스턴스를 생성하는 mLua 코드 예시를 보여주세요. [followup_answer] | 테스트나 시뮬레이션 목적으로 `SpriteAnimPlayerStartFrameEvent` 인스턴스를 직접 초기화하는 mLua 코드 예시는 다음과 같습니다. 생성자 매개변수에 따라 애니메이션 플레이어, 프레임 인덱스, 역재생 여부, 총 프레임 수를 지정할 수 있습니다. ```lua Method: [client only] void OnBeginPlay() { -- SpriteAnimPlayerStartFrameEvent 인스턴스 생성 -- 매개변수: animPlayer, frameIndex, reversePlaying [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 생성자 시그니처와 매개변수 기본값을 정확히 추출하여 질문에 완벽하게 답했습니다. [source_doc] | 스프라이트 애니메이션이 첫번째 프레임을 재생할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * ClimbableSpriteRendererComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SpriteRendererComponent <img src="https://img.shiel
[task] | two_turn [pass] | ✅ 통과 [title] | BoxShape [question] | BoxShape 객체의 Position 프로퍼티는 월드 좌표 기준의 값으로 설정되는 것이 맞나요? [answer] | 네, 맞습니다. `BoxShape` 객체의 `Position` 프로퍼티는 월드 좌표상 위치를 나타냅니다. `BoxShape`는 `Shape`를 상속받으며, `Shape`의 프로퍼티로 정의된 `Vector2 Position`은 "모양의 월드 좌표상 위치"라고 명시되어 있습니다. 따라서 `BoxShape` 인스턴스에서 `Position`에 값을 설정하거나 참조할 때 월드 좌표 기준의 값을 사용해야 합니다. ```lua Method: [server only] void SetBoxPosition () { -- BoxShape의 [followup] | BoxShape의 Position이 변경될 때 충돌 감지 결과가 즉시 갱신되는지, 아니면 OnUpdate 주기마다 처리되는지 확인하고 싶습니다. [followup_answer] | 제공된 참고 문서에는 `BoxShape`의 `Position` 프로퍼티가 변경될 때 충돌 감지 결과가 즉시 갱신되는지, 아니면 `OnUpdate` 주기마다 처리되는지에 대한 정보가 포함되어 있지 않습니다. 문서에는 `Position`이 "모양의 월드 좌표상 위치"임을 정의하고 있고, `BoxShape`가 "충돌과 관련된 기능에 활용할 수 있는 직사각형 모양"임을 설명할 뿐, 충돌 처리의 타이밍이나 갱신 주기에 대한 설명은 없습니다. 따라서 이 질문에 대해 답변드릴 수 없습니다. [scores] | helpfulness=4 correctness=3 coherence=4 complexity=3 verbosity=2 [judge_reason] | Position이 월드 좌표임을 정확히 설명했으나, 코드 예시에서 문서에 없는 CollisionComponent.Shape 접근 경로를 지어내어 정확성에서 감점됩니다. [source_doc] | 충돌과 관련된 기능에 활용할 수 있는 직사각형 모양을 나타냅니다. # Properties - **float Angle** 회전된 각도입니다. - **Vector2 Size** 직사각형의 폭과 높이입니다. ##### inherited from Shape: - **Vector2 Position** 모양의 월드 좌표상 위치입니다. # Constructors - **BoxShape(Vector2 size, float angle) [Deprecated]** 더는 사용하지 않는 생성자입니다. - **BoxShape(V
[task] | code [pass] | ✅ 통과 [title] | SpriteAnimPlayerStartEvent [question] | ClimbableSpriteRendererComponent에 SpriteAnimPlayerStartEvent 핸들러를 구현하여 ClipPlayType이 Onetime일 때만 log("Climb Anim Start")를 출력하는 스크립트를 작성해줘 [answer] | ClimbableSpriteRendererComponent에서 발생하는 `SpriteAnimPlayerStartEvent`는 Client 공간에서만 트리거되는 이벤트입니다. 따라서 해당 이벤트 핸들러는 `[client only]` 또는 `[client]` 실행 공간에 배치해야 합니다. 요구사항에 따라 이벤트의 `ClipPlayType` 프로퍼티가 `SpriteAnimClipPlayType.Onetime`일 때에만 로그를 출력하도록 구현했습니다. ```lua Event Handler: [self] HandleSpriteAnimPl [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 API 및 시스템 규칙에 충실하여 요구된 조건을 정확히 구현한 스크립트를 제공했습니다. [source_doc] | 스프라이트 애니메이션 재생이 시작될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * ClimbableSpriteRendererComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SpriteRendererComponent <img src="https://img.shields.io/
[task] | code [pass] | ✅ 통과 [title] | SpriteAnimPlayerStartFrameEvent [question] | SpriteAnimPlayerStartFrameEvent 를 처리하여 FrameIndex 가 TotalFrameCount 의 절반 이상인 경우에만 특정 메시지를 log 로 출력하는 조건부 로깅 스크립트를 작성해줘 [answer] | SpriteAnimPlayerStartFrameEvent는 클라이언트 공간에서 발생하는 이벤트이므로, 해당 이벤트를 처리하는 핸들러는 [self] 블록으로 작성해야 합니다. 요구사항에 따라 `FrameIndex`가 `TotalFrameCount`의 절반 이상인 경우에만 메시지를 출력하는 조건부 로깅 스크립트는 다음과 같습니다. ```lua Event Handler: [self] HandleSpriteAnimPlayerStartFrameEvent(SpriteAnimPlayerStartFrameEvent event) { lo [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 이벤트 속성(FrameIndex, TotalFrameCount)과 생성 공간(Client/self) 정보를 정확히 활용하여 요구된 조건부 로깅 로직을 오류 없이 구현했습니다. [source_doc] | 스프라이트 애니메이션이 첫번째 프레임을 재생할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * ClimbableSpriteRendererComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SpriteRendererComponent <img src="https://img.shiel
[task] | single_turn [pass] | ✅ 통과 [title] | BoxShape [question] | 직사각형 충돌체를 특정 각도로 회전하려면 Angle 값은 라디안인지 도 단위인지 어떻게 지정해야 하나요? [answer] | 제공된 문서에는 `BoxShape`의 `Angle` 프로퍼티가 "회전된 각도"라고만 정의되어 있을 뿐, **라디안인지 도(degree) 단위인지에 대한 명시적인 정보가 없습니다.** 따라서 문서만으로는 해당 값이 어떤 단위로 지정되어야 하는지 판단할 수 없습니다. [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 단위 정보가 없음을 정확히 지적하여 오답을 방지했으나, mLua 표준 관습을 언급하지 않아 실질적 도움은 제한적입니다. [source_doc] | 충돌과 관련된 기능에 활용할 수 있는 직사각형 모양을 나타냅니다. # Properties - **float Angle** 회전된 각도입니다. - **Vector2 Size** 직사각형의 폭과 높이입니다. ##### inherited from Shape: - **Vector2 Position** 모양의 월드 좌표상 위치입니다. # Constructors - **BoxShape(Vector2 size, float angle) [Deprecated]** 더는 사용하지 않는 생성자입니다. - **BoxShape(V
[task] | code [pass] | ✅ 통과 [title] | SpriteAnimPlayerStartEvent [question] | SpriteRendererComponent에서 SpriteAnimPlayerStartEvent를 처리하여 ClipPlayRate가 1.0보다 클 경우 Entity의 TransformComponent.Position을 Vector3(0, 10, 0)으로 이동시키는 스크립트를 작성해줘 [answer] | SpriteRendererComponent에서 발생하는 SpriteAnimPlayerStartEvent를 처리하려면, 해당 컴포넌트가 있는 Entity에 스크립트를 붙이고 `[self]` 이벤트 핸들러를 구현해야 합니다. 참고 문서에 따르면 `SpriteAnimPlayerStartEvent`는 `ClipPlayRate` 프로퍼티를 가지며, 이는 읽기 전용(ReadOnly)입니다. 이벤트 핸들러 내에서 `event.ClipPlayRate`에 접근하여 1.0보다 큰지 확인하고, 조건이 맞으면 `self.Entity.TransformC [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서와 규칙에 근거하여 정확한 이벤트 핸들러와 조건부 위치 변경 로직을 제공했으며, 지어낸 API 없이 명료하게 작성되었습니다. [source_doc] | 스프라이트 애니메이션 재생이 시작될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * ClimbableSpriteRendererComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SpriteRendererComponent <img src="https://img.shields.io/
[task] | code [pass] | ✅ 통과 [title] | SpriteAnimPlayerStartFrameEvent [question] | ClimbableSpriteRendererComponent 에서 SpriteAnimPlayerStartFrameEvent 발생 시 ReversePlaying 이 true 인 경우에만 애니메이션이 역재생되고 있음을 나타내는 로그를 출력하는 스크립트를 작성해줘 [answer] | ClimbableSpriteRendererComponent에서 SpriteAnimPlayerStartFrameEvent가 발생했을 때, ReversePlaying 속성이 true인지 확인하고 true인 경우에만 로그를 출력하는 스크립트입니다. ```lua Event Handler: [self] HandleSpriteAnimPlayerStartFrameEvent(SpriteAnimPlayerStartFrameEvent event) { --------------- Native Event Sender Info ---------- [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 이벤트 속성과 mLua 규칙에 부합하여 질문한 로직을 정확하고 간결하게 구현했습니다. [source_doc] | 스프라이트 애니메이션이 첫번째 프레임을 재생할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * ClimbableSpriteRendererComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SpriteRendererComponent <img src="https://img.shiel
[task] | code [pass] | ✅ 통과 [title] | SpriteAnimPlayerStartFrameEvent [question] | ClimbableSpriteRendererComponent 에서 SpriteAnimPlayerStartFrameEvent 를 수신하여 FrameIndex 가 0 이고 ReversePlaying 이 false 인 경우에만 log 로 첫 프레임 시작을 출력하는 스크립트를 작성해줘 [answer] | `SpriteAnimPlayerStartFrameEvent`는 `ClimbableSpriteRendererComponent` 또는 `SpriteRendererComponent`에서 발생하며, 클라이언트 공간에서 처리됩니다. 요청하신 조건(`FrameIndex == 0` 이고 `ReversePlaying == false`)을 만족할 때만 로그를 출력하도록 아래 스크립트를 작성했습니다. ```lua Event Handler: [self] HandleSpriteAnimPlayerStartFrameEvent(SpriteAnimPlayer [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 이벤트 프로퍼티와 발생 컴포넌트를 정확히 반영하여 요청한 조건에 맞는 mLua 스크립트를 명확하고 간결하게 제시했습니다. [source_doc] | 스프라이트 애니메이션이 첫번째 프레임을 재생할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * ClimbableSpriteRendererComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SpriteRendererComponent <img src="https://img.shiel
[task] | code [pass] | ✅ 통과 [title] | BoxShape [question] | BoxShape 생성자에 Vector2 위치, 크기, 각도를 전달하여 지정한 값으로 충돌 박스를 초기화하는 스크립트를 작성해줘 [answer] | `BoxShape`는 충돌 기능에 사용되는 직사각형 모양을 나타내며, 지정한 위치, 크기, 각도로 초기화하려면 3개 인자를 받는 생성자를 사용합니다. ```lua Method: [server only] void InitializeCollisionBox() { local position = Vector2(0, 0) local size = Vector2(2, 2) local angle = 0 local box = BoxShape(position, size, angle) } ``` 위 코드에서 `BoxS [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서의 생성자 서식(Vector2 position, Vector2 size, float angle)과 타입 설명이 정확히 일치하며, mLua 스크립트 규칙에 따라 적절하게 작성되었다. [source_doc] | 충돌과 관련된 기능에 활용할 수 있는 직사각형 모양을 나타냅니다. # Properties - **float Angle** 회전된 각도입니다. - **Vector2 Size** 직사각형의 폭과 높이입니다. ##### inherited from Shape: - **Vector2 Position** 모양의 월드 좌표상 위치입니다. # Constructors - **BoxShape(Vector2 size, float angle) [Deprecated]** 더는 사용하지 않는 생성자입니다. - **BoxShape(V
[task] | code [pass] | ❌ 탈락 [title] | BadgeInfo [question] | BadgeInfo의 Status와 Grade를 확인하여 획득 가능 상태에 따라 메시지를 표시하는 스크립트를 작성해줘 [answer] | `BadgeInfo`의 `Status`와 `Grade` 프로퍼티는 읽기 전용(`ReadOnly`) 값입니다. 이 값을 확인하여 획득 가능 상태에 따라 메시지를 표시하는 스크립트는 다음과 같이 작성할 수 있습니다. 참고 문서에 포함된 `_BadgeService:GetBadgeInfosAndWait` 메서드를 사용하여 특정 등급의 배지 목록을 가져온 뒤, 각 배지의 `Status`와 `Grade`를 확인하는 로직입니다. ```lua Method: [server only] void CheckBadgeStatusAndGrade () { [followup] | [followup_answer] | [scores] | helpfulness=0 correctness=0 coherence=3 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 없는 _BadgeService 및 관련 API, 매개변수를 지어내어 정확도가 0점이며, 질문의 핵심인 스크립트 작성 요구를 문서 기반 정보로 충족하지 못했습니다. [source_doc] | 배지의 정보를 나타냅니다. # Properties - **string Description [ReadOnly]** 배지의 설명입니다. - **DateTime EndAcquisitionPeriod [ReadOnly]** 획득 종료 일시입니다. HasAcquisitionPeriod가 true일 때만 유효한 값을 가집니다. - **BadgeGrade Grade [ReadOnly]** 배지의 등급입니다. - **boolean HasAcquisitionPeriod [ReadOnly]** 획득 기간이 존재하는지 확인합니다.
[task] | single_turn [pass] | ✅ 통과 [title] | BoxShape [question] | 기존에 사용하던 BoxShape(Vector2 size, float angle) 생성자가 Deprecated 처리된 이유는 무엇이며, 대체로 어떤 생성자를 사용해야 하나요? [answer] | 기존에 사용하던 `BoxShape(Vector2 size, float angle)` 생성자는 더 이상 사용되지 않도록(Deprecated) 처리되었습니다. 대신 `BoxShape(Vector2 position, Vector2 size, float angle)` 생성자를 사용해야 합니다. 이 생성자는 직사각형의 월드 좌표상 위치(`position`), 폭과 높이(`size`), 그리고 회전된 각도(`angle`)를 모두 지정하여 BoxShape를 초기화할 수 있도록 합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서에 명시된 Deprecated 생성자의 대안과 매개변수 설명을 정확하고 간결하게 전달하여 질문에 완벽하게 답하고 있습니다. [source_doc] | 충돌과 관련된 기능에 활용할 수 있는 직사각형 모양을 나타냅니다. # Properties - **float Angle** 회전된 각도입니다. - **Vector2 Size** 직사각형의 폭과 높이입니다. ##### inherited from Shape: - **Vector2 Position** 모양의 월드 좌표상 위치입니다. # Constructors - **BoxShape(Vector2 size, float angle) [Deprecated]** 더는 사용하지 않는 생성자입니다. - **BoxShape(V
[task] | single_turn [pass] | ✅ 통과 [title] | BoxShape [question] | BoxShape의 Size 프로퍼티에 폭과 높이를 각각 어떤 순서대로 전달해야 하는지 궁금합니다. [answer] | `BoxShape`의 `Size` 프로퍼티는 `Vector2` 타입이며, **첫 번째 값이 폭(Width), 두 번째 값이 높이(Height)** 입니다. 생성자 `BoxShape(Vector2 position, Vector2 size, float angle)`를 사용할 때 `size` 인자로 `Vector2(폭, 높이)` 순서로 값을 전달하면 됩니다. ```lua -- 예시: 폭 5, 높이 10인 직사각형 충돌 상자 생성 local myBox = BoxShape(Vector2(0, 0), Vector2(5, 10), 0) `` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 Size 프로퍼티 설명(폭과 높이)과 생성자 서명을 정확히 반영하여 순서를 명확히 설명했으며, 규칙에 따른 코드 예시도 적절합니다. [source_doc] | 충돌과 관련된 기능에 활용할 수 있는 직사각형 모양을 나타냅니다. # Properties - **float Angle** 회전된 각도입니다. - **Vector2 Size** 직사각형의 폭과 높이입니다. ##### inherited from Shape: - **Vector2 Position** 모양의 월드 좌표상 위치입니다. # Constructors - **BoxShape(Vector2 size, float angle) [Deprecated]** 더는 사용하지 않는 생성자입니다. - **BoxShape(V
[task] | instruction_following [pass] | ✅ 통과 [title] | CollisionSimulator [question] | 직사각형 충돌 검사를 수행하는 OverlapBoxAllFast 메서드 호출 시 필요한 매개변수 5개를 순서대로 나열하는 코드 블록만 출력하세요. [answer] | ```lua simulator:OverlapBoxAllFast(string collisionGroupName, Vector2 position, Vector2 size, float angle, table outputList) ``` [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 요청된 매개변수 5개를 순서대로 정확하게 제시했으나, 코드 블록 내 선언문 형식이 아닌 함수 호출 문법으로 출력하여 약간의 불일치가 있음 [source_doc] | 여러가지 충돌 검사 기능을 제공합니다. # Methods - **Component Overlap(CollisionGroup collisionGroup, Shape shape)** 입력한 모양과 겹치는 첫 번째 컴포넌트를 찾아 반환합니다. - **Component Overlap(string collisionGroupName, Shape shape)** 입력한 모양과 겹치는 첫 번째 컴포넌트를 찾아 반환합니다. - **Component Overlap(table groups, Shape shape)** 입력한 모양과 겹치는
[task] | single_turn [pass] | ❌ 탈락 [title] | BadgeInfoPages [question] | GetCurrentPageDatas()에서 반환된 테이블에서 특정 배지의 정보를 가져오려면 어떻게 해야 하나요? [answer] | `GetCurrentPageDatas()`는 현재 페이지에 포함된 배지 정보(`BadgeInfo`) 목록을 테이블로 반환합니다. 각 배지 정보는 테이블의 원소로 존재하며, `for` 루프를 통해 반복하면서 각 원소의 필드(예: `Id`, `Name`, `Grade` 등)에 직접 접근하여 정보를 가져올 수 있습니다. 특정 배지를 찾거나 정보를 처리하려면 `ipairs`를 사용하여 테이블을 순회하고, 각 `badge` 객체의 속성을 확인하면 됩니다. ```lua Method: void GetSpecificBadgeInfo() { [followup] | [followup_answer] | [scores] | helpfulness=2 correctness=1 coherence=3 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 API(_BadgeService:GetBadgeInfosAndWait)와 BadgeInfo의 구체적 필드(Id, Name, Grade)를 지어내어 정확도가 낮음. [source_doc] | BadgeService에서 검색한 배지 목록을 페이지 단위로 조회합니다. # Properties - **boolean IsLastPage [ReadOnly]** 현재 페이지가 검색 결과의 마지막 페이지인지 여부를 구합니다. # Methods - **table<BadgeInfo> GetCurrentPageDatas()** 검색 결과 중 현재 페이지의 배지 정보 목록을 구합니다. 한 페이지에 최대 25개의 검색 결과가 포함됩니다. - **void MoveToNextPageAndWait() [Yield]** 검색 결과의
[task] | single_turn [pass] | ❌ 탈락 [title] | BadgeInfoPages [question] | MoveToNextPageAndWait()를 호출한 후 바로 다음 로직을 실행할 수 없나요? [answer] | 네, `MoveToNextPageAndWait()`를 호출한 후 바로 다음 로직을 실행할 수 있습니다. `MoveToNextPageAndWait()`는 **Yield** 속성을 가진 메서드입니다. 이는 해당 메서드가 실행되는 동안 스크립트 실행이 일시 중단되지만, 다음 페이지 이동이 완료되면 자동으로 실행이 재개되어 그 뒤에 작성된 코드가 순차적으로 실행된다는 의미입니다. 따라서 `MoveToNextPageAndWait()`를 호출한 후 추가 처리가 필요한 경우, 해당 메서드 아래에 로직을 그대로 작성하면 됩니다. 예를 들어, [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | Yield 메서드의 동작 원리를 올바르게 설명했으나, 참고 문서에 없는 `_BadgeService` API와 `badge.Name` 프로퍼티를 지어내어 코드의 정확성이 떨어집니다. [source_doc] | BadgeService에서 검색한 배지 목록을 페이지 단위로 조회합니다. # Properties - **boolean IsLastPage [ReadOnly]** 현재 페이지가 검색 결과의 마지막 페이지인지 여부를 구합니다. # Methods - **table<BadgeInfo> GetCurrentPageDatas()** 검색 결과 중 현재 페이지의 배지 정보 목록을 구합니다. 한 페이지에 최대 25개의 검색 결과가 포함됩니다. - **void MoveToNextPageAndWait() [Yield]** 검색 결과의
[task] | code [pass] | ✅ 통과 [title] | SpriteAnimPlayerStartEvent [question] | SpriteRendererComponent의 SpriteAnimPlayerStartEvent에서 AnimPlayer 참조를 확인하고 ClipPlayRate를 변수에 저장해 OnUpdate()에서 매 프레임마다 log()로 출력하는 스크립트를 작성해줘 [answer] | `SpriteAnimPlayerStartEvent`는 클라이언트에서 발생하는 이벤트이며, `SpriteAnimPlayerStartEvent` 객체에는 `AnimPlayer`와 `ClipPlayRate` 프로퍼티가 존재합니다. 요청하신 기능은 `HandleSpriteAnimPlayerStartEvent` 이벤트 핸들러에서 `ClipPlayRate` 값을 로컬 변수에 저장하고, `OnUpdate` 메서드에서 매 프레임마다 해당 값을 로그로 출력하는 것입니다. ```lua Property: [None] number currentCli [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서와 mLua 규칙에 따라 이벤트 핸들러 및 OnUpdate 로직이 정확하고 명확하게 구현되어 있습니다. [source_doc] | 스프라이트 애니메이션 재생이 시작될 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * ClimbableSpriteRendererComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SpriteRendererComponent <img src="https://img.shields.io/
[task] | single_turn [pass] | ✅ 통과 [title] | CircleShape [question] | CircleShape를 만들 때 반지름과 위치를 어떤 순서로 전달해야 하나요? [answer] | `CircleShape` 생성자(Constructor)를 사용할 때, 먼저 **위치(Position)**를 전달하고 그 다음에 **반지름(Radius)**을 전달해야 합니다. 순서는 다음과 같습니다: 1. `Vector2 position`: 원의 월드 좌표상 위치 2. `float radius`: 원의 반지름 즉, `CircleShape(Vector2 position, float radius)` 형식입니다. 예시 코드: ```lua local myCircle = CircleShape(Vector2(10, 20), 5) ``` [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 명시된 생성자 순서(Vector2 position, float radius)를 정확히 설명하고 올바른 예시를 제공했습니다. [source_doc] | 충돌과 관련된 기능에 활용할 수 있는 원 모양을 나타냅니다. # Properties - **float Radius** 원의 반지름입니다. ##### inherited from Shape: - **Vector2 Position** 모양의 월드 좌표상 위치입니다. # Constructors - **CircleShape(Vector2 position, float radius)** 지정한 값으로 CircleShape를 초기화합니다.
[task] | instruction_following [pass] | ✅ 통과 [title] | CollisionSimulator [question] | OverlapCircle과 OverlapCircleAll, OverlapCircleAllFast 메서드의 반환 타입 차이점을 3문장 이내로 설명하세요. [answer] | `OverlapCircle`은 겹치는 첫 번째 컴포넌트만 `Component` 타입으로 반환합니다. `OverlapCircleAll`은 겹치는 모든 컴포넌트를 담은 `table<Component>`를 반환합니다. `OverlapCircleAllFast`는 결과를 출력 테이블에 저장하고 겹친 컴포넌트의 개수를 `int32`로 반환합니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 참고 문서의 메서드 서명과 반환 타입 설명이 정확하며, 요구된 3문장 이내로 간결하게 답변했습니다. [source_doc] | 여러가지 충돌 검사 기능을 제공합니다. # Methods - **Component Overlap(CollisionGroup collisionGroup, Shape shape)** 입력한 모양과 겹치는 첫 번째 컴포넌트를 찾아 반환합니다. - **Component Overlap(string collisionGroupName, Shape shape)** 입력한 모양과 겹치는 첫 번째 컴포넌트를 찾아 반환합니다. - **Component Overlap(table groups, Shape shape)** 입력한 모양과 겹치는
[task] | single_turn [pass] | ✅ 통과 [title] | CircleShape [question] | 충돌 감지 시 CircleShape의 Radius 값이 0 이하로 설정되면 게임 런타임에서 어떤 문제가 발생하나요? [answer] | 제공된 참고 문서에는 `CircleShape`의 `Radius` 값이 0 이하로 설정되었을 때 게임 런타임에서 발생하는 구체적인 문제나 에러 사항에 대한 정보가 없습니다. 문서에는 `Radius`가 "원의 반지름"임을 정의하고, `CircleShape(Vector2 position, float radius)` 생성자를 통해 초기화할 수 있다는 사실만 명시되어 있을 뿐, 값의 유효성 검증이나 0 이하 값에 대한 동작 규정은 포함되어 있지 않습니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=1 verbosity=2 [judge_reason] | 참고 문서에 해당 정보가 없음을 정확히 지적하고 지어내지 않아 정직하고 명확합니다. [source_doc] | 충돌과 관련된 기능에 활용할 수 있는 원 모양을 나타냅니다. # Properties - **float Radius** 원의 반지름입니다. ##### inherited from Shape: - **Vector2 Position** 모양의 월드 좌표상 위치입니다. # Constructors - **CircleShape(Vector2 position, float radius)** 지정한 값으로 CircleShape를 초기화합니다.
[task] | single_turn [pass] | ✅ 통과 [title] | BoxShape [question] | BoxShape 생성 시 Position을 지정하지 않으면 기본값이 어떻게 설정되는지, 아니면 반드시 전달해야 하는지 알고 싶습니다. [answer] | 제공된 문서에 따르면, `BoxShape`의 생성자는 다음과 같습니다: 1. `BoxShape(Vector2 size, float angle)` : **Deprecated**(더 이상 사용하지 않는 생성자) 2. `BoxShape(Vector2 position, Vector2 size, float angle)` : 지정한 값으로 초기화 문서에는 `Position`을 지정하지 않는 경우의 기본값(기본 생성자 또는 옵셔널 파라미터)에 대한 설명이 **없습니다**. 또한, 현재 유효한 생성자로 명시된 `BoxShape(Vector2 [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 문서에 없는 기본값 정보를 지어내지 않고, 문서에 명시된 생성자 서식과 Deprecated 상태를 정확히 근거로 답변하여 질문자의 혼란을 해소했습니다. [source_doc] | 충돌과 관련된 기능에 활용할 수 있는 직사각형 모양을 나타냅니다. # Properties - **float Angle** 회전된 각도입니다. - **Vector2 Size** 직사각형의 폭과 높이입니다. ##### inherited from Shape: - **Vector2 Position** 모양의 월드 좌표상 위치입니다. # Constructors - **BoxShape(Vector2 size, float angle) [Deprecated]** 더는 사용하지 않는 생성자입니다. - **BoxShape(V
[task] | two_turn [pass] | ✅ 통과 [title] | SpriteAnimPlayerStartFrameEvent [question] | SpriteAnimPlayerStartFrameEvent는 어떤 상황에서 발생하며, 어떤 프로퍼티 정보를 포함하나요? [answer] | `SpriteAnimPlayerStartFrameEvent`는 스프라이트 애니메이션이 첫 번째 프레임을 재생할 때 발생하는 이벤트입니다. 이 이벤트는 `ClimbableSpriteRendererComponent` 또는 `SpriteRendererComponent`에서 발생하며, 클라이언트( Client) 공간에서 처리됩니다. 이 이벤트 핸들러에서 접근할 수 있는 프로퍼티 정보는 다음과 같습니다. * **FrameIndex** (`int32`, 읽기 전용): 현재 프레임 번호를 나타냅니다. * **ReversePlaying [followup] | 이 이벤트 핸들러를 작성할 때 `FrameIndex`와 `ReversePlaying` 값을 어떻게 조합하여 사용해야 하나요? [followup_answer] | `SpriteAnimPlayerStartFrameEvent`의 `FrameIndex`와 `ReversePlaying`은 스프라이트 애니메이션이 **첫 번째 프레임을 재생할 때**에만 발생하는 이벤트의 값이므로, 일반적인 프레임 단위 판정(예: "7프레임에 공격")과는 용도가 다릅니다. 이 이벤트는 애니메이션 재생이 **시작**되는 시점을 감지하기 위해 사용되며, `FrameIndex`와 `ReversePlaying` 조합은 다음과 같은 의미를 가집니다: ### 1. `FrameIndex`의 의미 - 첫 번째 프레임을 재생할 때 [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 발생 조건, 컴포넌트, 프로퍼티 정보를 정확히 요약하고 표준 구문에 맞는 예제를 제시하여 질문에 완벽하게 부응합니다. [source_doc] | 스프라이트 애니메이션이 첫번째 프레임을 재생할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * ClimbableSpriteRendererComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SpriteRendererComponent <img src="https://img.shiel
[task] | instruction_following [pass] | ✅ 통과 [title] | CollisionSimulator [question] | OverlapPointAll과 OverlapPointAllFast 메서드의 차이점을 3문장 이내로 설명하세요. [answer] | `OverlapPointAll`은 입력한 점을 포함하는 모든 컴포넌트를 테이블 형태로 직접 반환합니다. 반면 `OverlapPointAllFast`는 결과를 별도의 `outputList` 테이블에 삽입하고, 찾은 컴포넌트의 개수를 정수(int32)로 반환합니다. 따라서 반환값이 테이블인지 개수인지에 따라 두 메서드의 사용 방식이 다릅니다. [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=2 verbosity=2 [judge_reason] | 문서에 명시된 두 메서드의 반환 타입과 동작 방식 차이를 정확하고 간결하게 설명했습니다. [source_doc] | oupName, Vector2 point1, Vector2 point2)** 입력한 선과 겹치는 모든 컴포넌트를 찾아 반환합니다. - **int32 OverlapLineAllFast(string collisionGroupName, Vector2 point1, Vector2 point2, table outputList)** 입력한 선과 겹치는 모든 컴포넌트를 찾고, 그 결과를 outputList에 삽입합니다. 결과의 개수를 반환합니다. - **Component OverlapPoint(CollisionGroup collision
[task] | code [pass] | ✅ 통과 [title] | BoxShape [question] | BoxShape의 Angle 프로퍼티를 설정하여 45도 회전된 직사각형 충돌 모양을 초기화하는 스크립트를 작성해줘 [answer] | BoxShape는 `Vector2 Size`와 `float Angle` 프로퍼티를 가지며, `BoxShape(Vector2 position, Vector2 size, float angle)` 생성자를 통해 초기화할 수 있습니다. 45도 회전된 직사각형 충돌 모양을 초기화하는 스크립트는 다음과 같습니다. ```lua Property: [None] BoxShape MyBoxShape = BoxShape(Vector2(0, 0), Vector2(1, 1), 45) ``` **설명:** 1. `Property:` 블록을 사용하여 `M [followup] | [followup_answer] | [scores] | helpfulness=4 correctness=4 coherence=4 complexity=3 verbosity=2 [judge_reason] | 참고 문서의 생성자 서명과 프로퍼티를 정확히 활용하여 요구사항을 충족하는 명확한 코드를 제시했습니다. [source_doc] | 충돌과 관련된 기능에 활용할 수 있는 직사각형 모양을 나타냅니다. # Properties - **float Angle** 회전된 각도입니다. - **Vector2 Size** 직사각형의 폭과 높이입니다. ##### inherited from Shape: - **Vector2 Position** 모양의 월드 좌표상 위치입니다. # Constructors - **BoxShape(Vector2 size, float angle) [Deprecated]** 더는 사용하지 않는 생성자입니다. - **BoxShape(V
[task] | code [pass] | ❌ 탈락 [title] | SpriteAnimPlayerStartFrameEvent [question] | SpriteRendererComponent 의 SpriteAnimPlayerStartFrameEvent 핸들러에서 TotalFrameCount 를 저장하고, 해당 값이 0 이 아닌 경우에만 AnimPlayer 를 통해 애니메이션 상태를 확인하는 로직을 포함하는 스크립트를 작성해줘 [answer] | `SpriteAnimPlayerStartFrameEvent`는 `SpriteRendererComponent`에서 **Client** 공간에서 발생합니다. 따라서 이벤트 핸들러는 `[client only]` 속성을 가져야 합니다. 요청하신 로직은 다음과 같습니다. 1. `SpriteAnimPlayerStartFrameEvent`가 발생하면 `TotalFrameCount`를 로컬 변수로 가져옵니다. 2. `TotalFrameCount`가 0이 아닌지 확인합니다. 3. 조건이 충족되면 `event.AnimPlayer`를 통해 애니메이션 [followup] | [followup_answer] | [scores] | helpfulness=3 correctness=2 coherence=4 complexity=3 verbosity=2 [judge_reason] | 이벤트 속성 정의와 핸들러 구조는 정확하지만, 질문에 명시된 'TotalFrameCount 저장' 요구사항을 로컬 변수로만 처리하여 충족하지 못했고, AnimPlayer 상태 확인 메서드가 없음을 인정하면서도 구체적인 대안을 제시하지 못해 유용성이 다소 떨어집니다. [source_doc] | 스프라이트 애니메이션이 첫번째 프레임을 재생할 때 발생하는 이벤트입니다. 이 Event는 아래 API에 의해 발생합니다. * ClimbableSpriteRendererComponent <img src="https://img.shields.io/static/v1?label=Space&message=Client&color=c4a484" alt="custom" title="Client에서 이벤트가 발생합니다." data-nodeid="4"> * SpriteRendererComponent <img src="https://img.shiel