← 목록

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

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

[task] | code [pass] | ⏳ 미판정 [title] | 여러 개의 카드 보여주기 [question] | 카드 엔티티 스크립트에서 `card.Card.SpriteRUID` 프로퍼티에 접근하여 값을 설정할 수 있도록 Card 컴포넌트 내 `SpriteRUID` 프로퍼티를 정의하고, `SpriteGUIRendererComponent` 의 `ImageRUID` 속성에도 동일한 값을 동기화하는 로직을 작성하세요. [answer] | 참고 문서에 따르면, `Card` 컴포넌트(스크립트)에 `SpriteRUID` 프로퍼티를 정의하고, 이 값을 `SpriteGUIRendererComponent.ImageRUID` 에도 동일하게 설정하는 로직을 작성해야 합니다. 문서에 제시된 `Card` 컴포넌트 스크립트 예제와 "여러 개의 카드 보여주기" 가이드를 종합하면, `Card` 컴포넌트에는 `SpriteRUID` 프로퍼티가 존재하며, 외부에서 이 값을 설정할 때 `SpriteGUIRendererComponent.ImageRUID` 도 함께 업데이트되도록 처리하거나, 해당 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua local cardCount = #cardTable for i = 1, cardCount do local spriteRUID = cardTable[i] ``` 6. `CreateCardEntities()` 함수에서 `local card = _SpawnService:SpawnByModelId(cardModelId, "Card", Vector3(0,0,0), self.CardSpawnRoot)`를 찾습니다. `"Card"` 부분을 `"Card " .. tostring(i)`로 변경하며 아

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | SpriteRendererComponent의 Color.a 값을 0으로 설정하는 문장을 1문장 이내로 요약하세요. [answer] | SpriteRendererComponent의 Color.a 값을 0으로 설정하면 해당 스프라이트가 투명해집니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua [self] HandleSpriteAnimPlayerEndFrameEvent(SpriteAnimPlayerEndFrameEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: ClimbableSpriteRendererComponent -- Space: Client ------------------------------------------------

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | HandleSpriteAnimPlayerEndFrameEvent에서 TotalFrameCount가 1보다 클 때 실행되는 코드만 주석 설명 없이 출력하세요. [answer] | ```lua if TotalFrameCount > 1 then self.Entity.SpriteRendererComponent.Color.a = 0 end ``` [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua [self] HandleSpriteAnimPlayerEndFrameEvent(SpriteAnimPlayerEndFrameEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: ClimbableSpriteRendererComponent -- Space: Client ------------------------------------------------

[task] | two_turn [pass] | ⏳ 미판정 [title] | 아틀라스 활용하기 [question] | 아틀라스 언패커에서 단일 이미지 자르기의 최대 해상도 및 조각 수 제한이 어떻게 적용되나요? [answer] | 아틀라스 언패커에서 단일 아틀라스 이미지를 자를 때 적용되는 제한은 다음과 같습니다. * **최대 해상도:** 2048 x 2048 px * **최대 조각 수:** 256 조각 이 제한은 아틀라스를 개별 스프라이트로 자르는 과정에 적용되며, 이 범위를 초과하는 이미지나 과도하게 많은 셀로 자르는 것은 불가능합니다. [followup] | 오프셋과 패딩을 조절할 때 여백이 스프라이트 저장에 미치는 구체적인 예외 상황과 처리 방법은 무엇인가요? [followup_answer] | 오프셋과 패딩 조절 시 여백이 스프라이트 저장에 미치는 영향과 처리 방법은 다음과 같습니다. **1. 오프셋 조절 시 여백 처리** * **적용 원리:** X, Y 축 기준 오프셋 값을 설정하면 아틀라스를 자르는 위치가 조정됩니다. * **여백 처리:** 자르기 설정에 따라 이미지를 자를 때 포함되지 않는 아틀라스의 일부 여백은 스프라이트로 저장되지 않습니다. 즉, 오프셋을 통해 자르는 영역을 조정하면 해당 영역 밖의 여백은 최종 스프라이트 파일에서 제외됩니다. **2. 패딩 조절 시 여백 처리** * **적용 원리: [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 아틀라스를 필요한 규격으로 잘라 다양하게 활용할 수 있습니다. 아틀라스 언패커의 구성과 사용 방법을 알아봅시다. # 아틀라스 언패커 소개 아틀라스란 한 장의 이미지에 여러 개의 스프라이트가 함께 있는 이미지를 의미합니다. 아틀라스의 이미지를 잘라 렉트타일로 사용하는 등 다양하게 활용할 수 있습니다. 아틀라스 언패커는 아틀라스를 크리에이터가 개별의 스프라이트로 자르고 편집해 저장할 수 있습니다. 자른 스프라이트 중 필요한 것만 선택해 Resource Storage에 저장한 뒤 사용하거나, 바로 TileData

[task] | two_turn [pass] | ⏳ 미판정 [title] | 후드 [question] | 모자 제작 시트에서 노란색 레이어와 빨간색 레이어의 구체적인 역할과 차이점이 무엇인가요? [answer] | 모자 제작 시트에서 노란색 레이어와 빨간색 레이어는 각각 다음과 같은 명확한 역할을 수행하며, 서로 다른 목적을 위해 사용됩니다. **1. 노란색 레이어 (실제 아이템 제작 영역)** * **역할**: 크리에이터가 실제 후드(모자) 디자인을 그리는 공간입니다. * **구체적 구성**: * `case1.front`: 후드의 앞모습을 그리는 레이어입니다. 일반 헤어와 눌린 헤어 샘플이 함께 포함되어 있습니다. 실제로 후드 앞면을 그릴 수 있는 레이어는 `edithere:cap_cap_34`입니다. * `c [followup] | 빨간색 레이어인 `data:vslot:CpH1H3H4H5H6HfHbHcAe`가 모자와 헤어의 겹침 우선순위를 결정하는 원리와, 노란색 `edithere:cap_cap_34` 등 실제 드로잉 레이어와의 관계는 어떻게 되나요? [followup_answer] | 참고 문서에 따르면, 빨간색 레이어인 `data:vslot:CpH1H3H4H5H6HfHbHcAe`와 노란색 드로잉 레이어(`edithere:cap_cap_34`, `edithere:cap_backCap_92`)의 관계와 원리는 다음과 같이 설명할 수 있습니다. ### 1. `data:vslot:CpH1H3H4H5H6HfHbHcAe`의 역할과 원리 * **핵심 기능**: 이 레이어는 모자(Cap)와 헤어(Hair)가 겹치는 영역에서 **어느 쪽이 앞에 보이는지(우선순위)**를 결정하는 역할을 합니다. * **적용 범위**: [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 후드 시트를 소개합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Cap_G.psd","url":"https://mod-file.dn.nexoncdn.co.kr/storage/Avatar_

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | StateChangeEvent와 DeadEvent는 각각 언제 발생하며, 두 이벤트가 전달하는 정보의 차이점은 무엇인가요? [answer] | StateChangeEvent와 DeadEvent는 엔티티의 상태 변화와 사망 시점에 각각 발생하며, 전달하는 정보의 범위와 용도가 다릅니다. **StateChangeEvent 발생 시점 및 정보** * **발생 시점**: `StateComponent`의 상태가 전이(Transition)될 때 발생합니다. 즉, 어떤 상태에서 다른 상태로 바뀌는 모든 시점에 발생합니다. * **전달 정보**: 상태 전이가 발생하기 **이전의 상태**와 **현재 상태(바뀐 상태)**의 정보를 함께 포함합니다. 이를 통해 어떤 상태에서 어떤 상 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 어떤 상태에서 다음 상태로 변하는 것을 상태 전이(Transition)라 합니다. 상태 전이가 발생할 때 다양한 이벤트가 발생하고, 이를 활용해 특정 엔티티가 상태 전이를 감지할 수 있습니다. 이벤트는 상태 전이가 발생하기 이전의 상태와 현재 상태(바뀐 상태)의 정보를 갖고 있습니다. 아래와 같은 상황에서 이벤트가 발생합니다. * StateComponent의 상태가 전이되면, [StateChangeEvent](/apiReference/Events/StateChangeEvent)가 함께 발생합니다. * StateComponent가

[task] | code [pass] | ⏳ 미판정 [title] | 제작 과정 안내 [question] | 앞모습 레이어(`edithere:cap_cap_34`)와 뒷모습 레이어(`edithere:cap_backCap_92`)의 프레임 인덱스가 서로 다른 매핑 규칙(1프레임: 앞0/뒤0, 2프레임: 앞1/뒤1, 3프레임: 앞2/뒤0, 4프레임: 앞3/뒤1)에 따라 각각의 현재 프레임 인덱스를 관리하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 `Avatar_Cap_Ani.psd` 파일의 레이어 구조와 포토샵 타임라인 설정 절차(1프레임: 앞0/뒤0, 2프레임: 앞1/뒤1, 3프레임: 앞2/뒤0, 4프레임: 앞3/뒤1)가 포함되어 있습니다. 그러나 **mLua 스크립트 API를 사용하여 아바타 모자의 특정 프레임 인덱스를 직접 관리하거나, 프레임 변경 이벤트를 수신하여 프레임 인덱스를 계산하는 API, 메서드, 또는 이벤트 핸들러에 대한 정보는 문서에 존재하지 않습니다.** 문서에 포함된 mLua 관련 정보는 `ActionStateChangedEv [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 이펙트 모자를 만들기 위해 **Avatar_Cap_Ani.psd** 파일을 열어 하트 모양 이펙트를 만들어봅시다. | 기본 이펙트 | 하트 이펙트 | | --- | --- | | | | 1. case1.front 폴더 - **edithere:cap_cap_34:0** 레이어에 모자의 앞모습을 그립니다. 2. 모자를 복사해 나머지 3개의 레이어에 동일하게 그립니다. * **edithere:cap_cap_34:1** * **edithere:cap_cap_34:2** * **edithere:cap_cap_

[task] | code [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | SpriteAnimPlayerEndFrameEvent 핸들러에서 TotalFrameCount가 1보다 크면 Entity.SpriteRendererComponent.Color.a를 0으로 설정하여 엔티티를 투명하게 만드는 스크립트를 작성해줘. [answer] | SpriteAnimPlayerEndFrameEvent 핸들러에서 `TotalFrameCount`가 1보다 크면 엔티티의 스프라이트 렌더러 알파 값을 0으로 설정하는 스크립트는 다음과 같습니다. ```lua Event Handler: [self] HandleSpriteAnimPlayerEndFrameEvent(SpriteAnimPlayerEndFrameEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: ClimbableS [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua [self] HandleSpriteAnimPlayerEndFrameEvent(SpriteAnimPlayerEndFrameEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: ClimbableSpriteRendererComponent -- Space: Client ------------------------------------------------

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | 사과가 튀어 오르는 느낌을 주기 위해 추가해야 할 스크립트 컴포넌트와 메서드 이름을 표로 정리하세요. [answer] | 참고 문서에 따르면, 사과가 튀어 오르는 느낌을 주기 위해 추가해야 할 스크립트 컴포넌트와 메서드는 다음과 같습니다. | 구분 | 이름 | | :--- | :--- | | 스크립트 컴포넌트 추가 대상 | `Modle_Apple` | | 사용할 메서드 | `TweenLogic:MakeTween()` | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua [self] HandleSpriteAnimPlayerEndFrameEvent(SpriteAnimPlayerEndFrameEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: ClimbableSpriteRendererComponent -- Space: Client ------------------------------------------------

[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | 나무 상자의 상태 제어 예시에서 IDLE, BROKEN, DEAD 상태 전이와 스프라이트 변경을 구현하는 기본 원리가 무엇인가요? [answer] | 나무 상자의 상태 제어 예시에서 IDLE, BROKEN, DEAD 상태 전이와 스프라이트 변경을 구현하는 기본 원리는 다음과 같습니다. 1. **모델 및 컴포넌트 구성**: * `Model_Box` 모델을 생성하고 `StateComponent`, `SpriteRendererComponent`, `HitComponent` 등을 추가합니다. * 초기 스프라이트(RUID)는 IDLE 상태에 해당하는 `b871399ae18d41c4b76c2ae79feefa7d`로 설정합니다. * `Model_Apple` [followup] | BROKEN 상태에서 사과를 스폰하고 1.1초 후 exitFlag를 true로 설정하는 OnEnter() 코드가 _TimerService:SetTimerOnce()를 어떻게 활용하는지, 그리고 self.ParentComponent.Entity.SpriteRendererComponent.SpriteRUID를 직접 할당하는 과정에 대해 자세히 설명해 주세요. [followup_answer] | BROKEN 상태의 `OnEnter()` 메서드에서 `_TimerService:SetTimerOnce()`와 스프라이트 변경 과정은 다음과 같이 동작합니다. **1. `_TimerService:SetTimerOnce()` 활용** 이 메서드는 특정 시간(초)이 지난 후 주어진 함수를 한 번만 실행시키는 타이머를 설정합니다. 예제 코드에서는 두 가지 목적으로 사용됩니다. * **exitFlag 설정 (1.1초 후):** ```lua self.timerId = _TimerService:SetTimerOnce(fu [scores] | [judge_reason] | [source_doc] | 플레이어의 공격에 상태가 변하는 나무 상자를 만들어봅시다. 기본 상태인 IDLE, DEAD와 크리에이터가 만든 새로운 BROKEN 상태를 함께 활용합니다. 상태마다의 특정 애니메이션, 스프라이트를 추가해 상태 변화를 직관적으로 확인할 수 있습니다. 이 예시는 IDLE → BROKEN → DEAD → IDLE로 상태 전이하며, 상태마다 다른 스프라이트, 애니메이션을 연결해 재생하게 됩니다. >**Tip.** >만들기 - 새로 만들기 - **기본** 템플릿을 사용해 플레이어의 기본 공격, 피격을 구성합니다. 해당 템플릿의 D

[task] | code [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | AIChaseComponent와 함께 사용되어 MOVE 상태가 추가된 엔티티에서, MOVE 상태로 전이될 때만 log에 "Moving"을 출력하고, IDLE 상태일 때는 출력하지 않도록 상태 전이 이벤트를 처리하는 스크립트를 작성해줘. [answer] | 문서에 명시된 정보에 따르면, `StateComponent`의 상태 전이(변경)를 감지하여 특정 이벤트 핸들러를 등록하는 API(예: `OnStateChanged`)가 문서에 존재하지 않습니다. 따라서 제공된 참고 문서만을 근거로 **"상태 전이 이벤트"를 직접 처리하는 스크립트**를 작성할 수 없습니다. 문서에는 상태 변경 시 자동으로 애니메이션이 재생되는 메커니즘과 `ChangeState()` 메서드를 통해 수동으로 상태를 변경하는 예제는 있지만, 상태가 변경되었을 때 개발자가 직접 콜백을 등록하거나 이벤트를 구독하는 API에 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 [StateComponent](/apiReference/Components/StateComponent)와 StateType의 개념을 알아보고, 엔티티의 상태에 따라 애니메이션이 재생되는 과정을 이해해봅시다. # State, StateComponent 알아보기 **State**는 어떤 엔티티가 특정한 상태에 있는 것을 말합니다. 서 있는 상태, 엎드린 상태, 공격 상태 등 크리에이터에 따라 다양한 상태를 정의할 수 있습니다. 월드에서 내 캐릭터가 가만히 서 있는 것이 당연하게 느껴질 수 있지만 이는 캐릭터의

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | StateType의 OnConditionCheck 함수에서 nextStateName 매개 변수를 어떻게 활용하여 상태 전이 조건을 제어할 수 있나요? [answer] | `StateType`의 `OnConditionCheck(string nextStateName)` 함수는 현재 상태에서 다른 상태로 전이될 수 있는지를 판단하는 조건을 정의하는 역할을 합니다. 이 함수는 `nextStateName` 매개 변수를 통해 **어떤 상태로 전이하려는 시도**인지 알려주며, 함수가 `true`를 반환할 때만 해당 상태 전이가 실제로 실행됩니다. 이를 활용하여 상태 전이 조건을 제어하는 방법은 다음과 같습니다. 1. **다음 상태 이름 확인**: `nextStateName` 변수에 값이 들어오면, 현재 엔 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 어떤 상태에서 다음 상태로 변하는 것을 상태 전이(Transition)라 합니다. 상태 전이가 발생할 때 다양한 이벤트가 발생하고, 이를 활용해 특정 엔티티가 상태 전이를 감지할 수 있습니다. 이벤트는 상태 전이가 발생하기 이전의 상태와 현재 상태(바뀐 상태)의 정보를 갖고 있습니다. 아래와 같은 상황에서 이벤트가 발생합니다. * StateComponent의 상태가 전이되면, [StateChangeEvent](/apiReference/Events/StateChangeEvent)가 함께 발생합니다. * StateComponent가

[task] | code [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | StateType의 OnConditionCheck에서 nextStateName이 "HIT"일 때만 true를 반환하여 DEAD 상태에서 HIT 상태로만 전이되도록 제어하는 스크립트를 작성해줘. [answer] | StateType의 `OnConditionCheck(string nextStateName)` 함수는 상태 전이 조건을 지정하는 역할을 합니다. `nextStateName` 매개 변수를 통해 전이하려는 다음 상태를 확인할 수 있으며, 이 값이 `"HIT"`일 때만 `true`를 반환하면 DEAD 상태에서 HIT 상태로만 전이되도록 제어할 수 있습니다. 사용자 정의 StateType을 정의하고, 해당 StateType을 엔티티에 추가하는 mLua 스크립트는 다음과 같습니다. ```lua -- 1. 사용자 정의 StateType 정의 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 어떤 상태에서 다음 상태로 변하는 것을 상태 전이(Transition)라 합니다. 상태 전이가 발생할 때 다양한 이벤트가 발생하고, 이를 활용해 특정 엔티티가 상태 전이를 감지할 수 있습니다. 이벤트는 상태 전이가 발생하기 이전의 상태와 현재 상태(바뀐 상태)의 정보를 갖고 있습니다. 아래와 같은 상황에서 이벤트가 발생합니다. * StateComponent의 상태가 전이되면, [StateChangeEvent](/apiReference/Events/StateChangeEvent)가 함께 발생합니다. * StateComponent가

[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | State 이름은 영어 대문자로 지어야 하지만 소문자를 사용해도 자동으로 변환된다고 하는데, 이 과정에서 예상 밖의 동작 오류가 발생하지 않도록 주의해야 하는 구체적인 예외 상황이나 코드 작성 시 체크포인트가 있나요? [answer] | 제시된 문서에는 State 이름이 소문자로 입력되었을 때 `AddState()` 호출 시점에 자동으로 대문자로 변환된다는 사실과, 이로 인해 "동작이 예상과 달라질 수 있다"는 경고만 명시되어 있습니다. 문서에는 구체적인 예외 상황이나 코드 작성 시 체크포인트에 대한 상세한 설명이 **없습니다.** 다만, 문서의 안내에 따라 오류를 방지하기 위한 유일한 체크포인트는 다음과 같습니다: 1. **항상 영어 대문자로 State 이름을 정의하고 사용하십시오.** * 소문자를 사용해도 자동 변환은 되지만, 개발자가 의도한 [followup] | State 이름이 대문자화되는 `AddState()` 함수 호출 시점을 고려하여, 상태 전이 이벤트 핸들러에서 상태명을 비교할 때 어떤 방식으로 코드를 작성해야 안전한가요? [followup_answer] | 제시된 문서에는 `AddState()` 함수가 소문자를 대문자로 자동 변환한다는 사실과, 상태 전이 및 이벤트 발생에 대한 제목은 있으나, **상태 전이 이벤트 핸들러에서 상태명을 비교할 때의 구체적인 코드 작성 방식이나 API 명세가 포함되어 있지 않습니다.** 따라서 문서 근거만으로 "어떤 방식으로 코드를 작성해야 안전한지"에 대한 구체적인 지침을 제공하기 어렵습니다. 다만, 문서에 명시된 내용 중 상태 이름 비교와 관련된 정보는 다음과 같습니다: 1. **상태 이름은 항상 대문자로 취급됩니다.** * `Add [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 [StateComponent](/apiReference/Components/StateComponent)와 StateType의 개념을 알아보고, 엔티티의 상태에 따라 애니메이션이 재생되는 과정을 이해해봅시다. # State, StateComponent 알아보기 **State**는 어떤 엔티티가 특정한 상태에 있는 것을 말합니다. 서 있는 상태, 엎드린 상태, 공격 상태 등 크리에이터에 따라 다양한 상태를 정의할 수 있습니다. 월드에서 내 캐릭터가 가만히 서 있는 것이 당연하게 느껴질 수 있지만 이는 캐릭터의

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | StateComponent:AddState에서 두 번째 인자로 전달하는 Type의 정확한 의미와 작성 방식은 어떻게 되나요? [answer] | `StateComponent:AddState(string stateName, Type stateType)`에서 두 번째 인자인 `stateType`은 **StateType** 객체 자체를 의미합니다. 정확한 의미와 작성 방식은 다음과 같습니다. 1. **의미**: * `stateType`은 해당 상태가 활성화되었을 때 수행될 로직(예: `OnUpdate`, `OnConditionCheck` 등)을 정의하는 **StateType 스크립트 컴포넌트**를 참조합니다. * 즉, 단순히 문자열 이름이 아니라, 실제 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | **MyDesk - Create Scripts - Create StateType**을 눌러 새로운 StateType을 생성하고, 상태를 정의합니다. `OnConditionCheck()`를 활용해 상태 전이 조건을 만들 수 있습니다. 아래와 같이 **MoveDown** StateType을 만들고 아래의 예시 코드처럼 활용할 수 있습니다. ```lua Method: void OnUpdate() { self.ParentComponent.Entity.TransformComponent:Translate(0, -0.01) }

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 아틀라스 활용하기 [question] | 자른 스프라이트를 Resource Storage 에 저장할 때 파일 이름 접두사의 저장 규칙을 3 문장 이내로 요약해줘. [answer] | 파일 이름 접두사는 자른 이미지를 저장하기 위해 반드시 입력해야 합니다. 입력한 이름 뒤에 숫자가 하나씩 증가하여 '이름_숫자' 형식으로 저장됩니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 아틀라스를 필요한 규격으로 잘라 다양하게 활용할 수 있습니다. 아틀라스 언패커의 구성과 사용 방법을 알아봅시다. # 아틀라스 언패커 소개 아틀라스란 한 장의 이미지에 여러 개의 스프라이트가 함께 있는 이미지를 의미합니다. 아틀라스의 이미지를 잘라 렉트타일로 사용하는 등 다양하게 활용할 수 있습니다. 아틀라스 언패커는 아틀라스를 크리에이터가 개별의 스프라이트로 자르고 편집해 저장할 수 있습니다. 자른 스프라이트 중 필요한 것만 선택해 Resource Storage에 저장한 뒤 사용하거나, 바로 TileData

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 아틀라스 활용하기 [question] | 아틀라스 언패커의 단일 아틀라스 최대 크기 및 최대 조각 수를 표로 정리해서 알려줘. [answer] | 아틀라스 언패커에서 자를 수 있는 단일 아틀라스의 최대 크기와 최대 조각 수는 다음과 같습니다. | 항목 | 제한 값 | | :--- | :--- | | 단일 아틀라스 최대 크기 | 2048 * 2048px | | 최대 조각 수 | 256 조각 | [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 아틀라스를 필요한 규격으로 잘라 다양하게 활용할 수 있습니다. 아틀라스 언패커의 구성과 사용 방법을 알아봅시다. # 아틀라스 언패커 소개 아틀라스란 한 장의 이미지에 여러 개의 스프라이트가 함께 있는 이미지를 의미합니다. 아틀라스의 이미지를 잘라 렉트타일로 사용하는 등 다양하게 활용할 수 있습니다. 아틀라스 언패커는 아틀라스를 크리에이터가 개별의 스프라이트로 자르고 편집해 저장할 수 있습니다. 자른 스프라이트 중 필요한 것만 선택해 Resource Storage에 저장한 뒤 사용하거나, 바로 TileData

[task] | code [pass] | ⏳ 미판정 [title] | 제작 과정 안내 [question] | 프레임 재생 속도를 0.2초로 설정하여 애니메이션이 자연스럽게 재생되도록, 4개 프레임(0~3)을 순환하며 0.2초 간격으로 다음 프레임으로 전환하는 로직을 구현하는 스크립트를 작성해줘 [answer] | 제공된 참고 문서에는 모자 이펙트 애니메이션의 **포토샵 PSD 파일 제작 과정**과 **GIF 저장 방법**, 그리고 `ActionStateChangedEvent`를 사용해 특정 액션 시 이펙트를 재생하는 **mLua 예제 코드 조각**만 포함되어 있습니다. 요청하신 "0.2초 간격으로 다음 프레임으로 전환하는 로직을 구현하는 스크립트"에 해당하는 구체적인 mLua API(예: 프레임 변경을 위한 타이머 함수, 애니메이션 프레임 제어 메서드 등)는 문서에 명시되어 있지 않습니다. 문서의 mLua 예제는 `ActionStateCh [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 이펙트 모자를 만들기 위해 **Avatar_Cap_Ani.psd** 파일을 열어 하트 모양 이펙트를 만들어봅시다. | 기본 이펙트 | 하트 이펙트 | | --- | --- | | | | 1. case1.front 폴더 - **edithere:cap_cap_34:0** 레이어에 모자의 앞모습을 그립니다. 2. 모자를 복사해 나머지 3개의 레이어에 동일하게 그립니다. * **edithere:cap_cap_34:1** * **edithere:cap_cap_34:2** * **edithere:cap_cap_

[task] | instruction_following [pass] | ⏳ 미판정 [title] | 아틀라스 활용하기 [question] | 아틀라스 언패커에서 셀 크기 및 셀 개수 자르기 시 여백 처리 방식을 단계별 번호 목록으로 설명해줘. [answer] | 아틀라스 언패커에서 셀 크기 및 셀 개수 자르기 시 여백 처리 방식은 다음과 같습니다. 1. 셀 크기 또는 셀 개수를 설정하여 아틀라스를 자를 때, 자르는 영역에 포함되지 않는 아틀라스의 일부 여백은 스프라이트로 저장되지 않습니다. 2. 패딩 값을 조정하면 나뉜 셀을 기준으로 X, Y 값에 따라 여백이 생성됩니다. 3. 패딩으로 생성된 여백은 제외하고 아틀라스를 자릅니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 아틀라스를 필요한 규격으로 잘라 다양하게 활용할 수 있습니다. 아틀라스 언패커의 구성과 사용 방법을 알아봅시다. # 아틀라스 언패커 소개 아틀라스란 한 장의 이미지에 여러 개의 스프라이트가 함께 있는 이미지를 의미합니다. 아틀라스의 이미지를 잘라 렉트타일로 사용하는 등 다양하게 활용할 수 있습니다. 아틀라스 언패커는 아틀라스를 크리에이터가 개별의 스프라이트로 자르고 편집해 저장할 수 있습니다. 자른 스프라이트 중 필요한 것만 선택해 Resource Storage에 저장한 뒤 사용하거나, 바로 TileData

[task] | single_turn [pass] | ⏳ 미판정 [title] | 짝 맞추기 [question] | SetCards 메서드에서 deckTable 을 섞은 후 cardTable 을 구성하는 과정에서 table.insert(cardTable, deckTable[i])) 문장의 문법 오류 원인과 올바른 짝 생성 로직은 무엇인가요? [answer] | `SetCards` 메서드에서 `table.insert(cardTable, deckTable[i]))` 문장의 문법 오류 원인은 **닫는 괄호 `)` 가 하나 더 있는 것**입니다. `table.insert` 함수는 두 개의 인수를 받습니다. 1. 삽입할 테이블 (`cardTable`) 2. 삽입할 값 (`deckTable[i]`) 따라서 올바른 문법은 `table.insert(cardTable, deckTable[i])` 입니다. 원문에는 마지막에 괄호가 하나 더 붙어 Lua 5.3 문법 에러가 발생합니다. 또한, 짝을 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua Property: [None] Entity CardSpawnRoot = /ui/CardPairGameUI/UI_Board/UI_Blocks/UI_Block_Group [None] Card SelectedCard = nil Method: void SetCards () { local deckTable = {} local cardTable = {} local deckCount = _DataService:GetRowCount("CardSet") for i = 1, deckCoun

[task] | two_turn [pass] | ⏳ 미판정 [title] | 후드 [question] | 모자 제작 시 Adobe Photoshop에서 레이어 이름을 절대 변경해서는 안 되는 이유와, 만약 실수로 `data` 폴더나 `guide_` 레이어 이름을 수정했을 때 발생하는 오류를 방지하기 위한 구체적인 작업 순서는 무엇인가요? [answer] | # 모자 제작 시 레이어 이름 변경 금지 이유 및 복구 순서 ## 레이어 이름을 절대 변경해서는 안 되는 이유 모자(후드) 제작 시트는 Adobe Photoshop에서 **레이어 이름 자체가 아이템 데이터를 인식하는 핵심 식별자**로 사용됩니다. 각 레이어 이름은 게임 엔진이 해당 이미지를 올바른 위치와 우선순위로 배치하도록 지시하는 역할을 합니다. * **`data` 폴더 및 하위 레이어**: 아이템을 데이터화하는 데 필수적이며, `data:origin`(중심점), `data:type:Cap`(종류), `data:use_ [followup] | 회색 레이어가 잠겨 있는 상태에서도 작업 중 불필요하게 레이어가 활성화되거나 이름이 바뀌지 않도록 Photoshop의 설정이나 습관을 어떻게 유지해야 하나요? [followup_answer] | 참고 문서에는 Adobe Photoshop의 구체적인 설정 메뉴(예: '레이어 잠금 해제 방지' 옵션)나 작업 습관에 대한 기술적 가이드가 포함되어 있지 않습니다. 문서에서 확인할 수 있는 정보와 원칙은 다음과 같습니다. 1. **기본 상태 확인**: `data` 폴더와 `guide_` 레이어를 포함한 **회색 레이어는 모두 잠겨 있는 상태**로 제공됩니다. 2. **수정 불필요**: 회색 레이어는 이미지 제작에 영향을 주지 않으며, 작업 중에 **수정할 필요가 없습니다**. 3. **이름 변경 금지**: 모든 레이어의 이 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 후드 시트를 소개합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Cap_G.psd","url":"https://mod-file.dn.nexoncdn.co.kr/storage/Avatar_

[task] | two_turn [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | 이미 추가된 상태 전이 조건을 삭제하는 방법과 ReverseResult 파라미터의 역할은 무엇인지? [answer] | 이미 추가된 상태 전이 조건을 삭제하려면 `StateComponent:RemoveCondition(string stateName, string nextStateName)` 메서드를 사용합니다. 이 메서드에는 삭제할 전이 조건의 현재 상태 이름(`stateName`)과 다음 상태 이름(`nextStateName`)을 인자로 전달합니다. 예를 들어, `MOVEDOWN` 상태에서 `MOVEUP` 상태로 전이하는 조건을 삭제하려면 아래 코드처럼 작성합니다. ```lua self.Entity.StateComponent:RemoveCond [followup] | RemoveCondition()을 사용하여 MOVEDOWN에서 MOVEUP으로 가는 조건을 삭제하는 코드와, AddCondition의 reverseResult가 false일 때와 true일 때의 차이점을 설명해 줄 수 있는지? [followup_answer] | `MOVEDOWN` 상태에서 `MOVEUP` 상태로 전이하는 조건을 삭제하는 코드는 다음과 같습니다. ```lua self.Entity.StateComponent:RemoveCondition("MOVEDOWN", "MOVEUP") ``` `AddCondition` 메서드의 `reverseResult` 파라미터가 `false`일 때와 `true`일 때의 차이점은 상태 전이 조건 검사(`OnConditionCheck`)의 결과 처리 방식에 있습니다. 1. **`reverseResult`가 `false`일 때 (기본값)** [scores] | [judge_reason] | [source_doc] | **MyDesk - Create Scripts - Create StateType**을 눌러 새로운 StateType을 생성하고, 상태를 정의합니다. `OnConditionCheck()`를 활용해 상태 전이 조건을 만들 수 있습니다. 아래와 같이 **MoveDown** StateType을 만들고 아래의 예시 코드처럼 활용할 수 있습니다. ```lua Method: void OnUpdate() { self.ParentComponent.Entity.TransformComponent:Translate(0, -0.01) }

[task] | single_turn [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | SpriteAnimPlayerEndFrameEvent의 파라미터 중 AnimPlayer는 어떤 객체를 참조하는 건가요? [answer] | `SpriteAnimPlayerEndFrameEvent` 이벤트의 파라미터 중 `AnimPlayer`는 `SpriteAnimPlayerComponent` 객체를 참조합니다. 이 이벤트는 `SpriteRendererComponent` 또는 `ClimbableSpriteRendererComponent`에서 발생하며, `event.AnimPlayer`를 통해 애니메이션 재생을 담당하는 컴포넌트 자체에 접근할 수 있습니다. [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | ```lua [self] HandleSpriteAnimPlayerEndFrameEvent(SpriteAnimPlayerEndFrameEvent event) { --------------- Native Event Sender Info ---------------- -- Sender: ClimbableSpriteRendererComponent -- Space: Client ------------------------------------------------

[task] | code [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | StateComponent에 CROUCH 상태를 추가하고, _UserService의 HandleUserEnterEvent를 통해 유저가 입장했을 때 해당 엔티티를 즉시 CROUCH 상태로 전이시키는 스크립트를 작성해줘. [answer] | StateComponent에 CROUCH 상태를 추가하고, 유저가 입장했을 때 해당 엔티티를 즉시 CROUCH 상태로 전이시키는 스크립트는 다음과 같이 작성할 수 있습니다. 참고 문서에 따르면 `StateComponent`는 엔티티에 상태를 부여하고 상태끼리의 관계를 정의하는 역할을 하며, `ChangeState` 메서드를 통해 현재 상태를 변경할 수 있습니다. 또한 `UserService`의 `HandleUserEnterEvent`는 유저가 월드에 입장할 때 발생하는 이벤트를 처리하기 위해 사용되며, `event.UserId`를 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 [StateComponent](/apiReference/Components/StateComponent)와 StateType의 개념을 알아보고, 엔티티의 상태에 따라 애니메이션이 재생되는 과정을 이해해봅시다. # State, StateComponent 알아보기 **State**는 어떤 엔티티가 특정한 상태에 있는 것을 말합니다. 서 있는 상태, 엎드린 상태, 공격 상태 등 크리에이터에 따라 다양한 상태를 정의할 수 있습니다. 월드에서 내 캐릭터가 가만히 서 있는 것이 당연하게 느껴질 수 있지만 이는 캐릭터의

[task] | code [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | ReviveEvent를 수신하여 엔티티가 부활할 때 StateComponent의 상태를 IDLE로 초기화하는 스크립트를 작성해줘. [answer] | `ReviveEvent`는 `DefaultPlayer` 엔티티에 `StateComponent`와 `PlayerComponent`가 모두 존재할 때, `PlayerComponent:Respawn()` 함수가 호출되어 엔티티가 부활하는 시점에 발생합니다. 제시된 문서에는 `StateComponent`의 상태(예: `IDLE`)를 직접 설정하는 메서드(예: `SetState` 등)가 명시되어 있지 않습니다. 문서에서 확인 가능한 상태 전이 방식은 `AddCondition`을 통한 조건부 전이와 `HitComponent`에 의한 자동 전 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 어떤 상태에서 다음 상태로 변하는 것을 상태 전이(Transition)라 합니다. 상태 전이가 발생할 때 다양한 이벤트가 발생하고, 이를 활용해 특정 엔티티가 상태 전이를 감지할 수 있습니다. 이벤트는 상태 전이가 발생하기 이전의 상태와 현재 상태(바뀐 상태)의 정보를 갖고 있습니다. 아래와 같은 상황에서 이벤트가 발생합니다. * StateComponent의 상태가 전이되면, [StateChangeEvent](/apiReference/Events/StateChangeEvent)가 함께 발생합니다. * StateComponent가

[task] | two_turn [pass] | ⏳ 미판정 [title] | 뒤통수가 개방된 모자 [question] | 뒤통수가 개방된 모자의 제작 시트에서 회색, 빨간색, 노란색 레이어 각각의 역할과 수정 가능한 범위는 어떻게 구분되나요? [answer] | 뒤통수가 개방된 모자의 제작 시트에서는 회색, 빨간색, 노란색 레이어가 명확한 역할을分担하며, 수정 가능한 범위도 엄격히 구분됩니다. **1. 회색 레이어** * **역할**: * **data 폴더**: 아이템을 데이터화하기 위해 필요한 폴더입니다. 이미지 제작 자체에는 영향을 주지 않습니다. * **guide_ 레이어**: 아바타의 샘플 body를 제공하여 이미지 제작을 돕습니다. 모자 모양에 따른 넓은 헤어와 좁은 헤어의 샘플도 포함되어 있습니다. * **수정 범위**: **수정 불가**. 모든 회 [followup] | 빨간색 레이어인 data:vslot:CpH1H5에서 모자와 헤이의 겹침 우선순위를 변경하려면 어떤 값을 수정해야 하며, 레이어 이름을 변경했을 때 발생하는 구체적 오류는 무엇인가요? [followup_answer] | 참고 문서에는 `data:vslot:CpH1H5` 레이어가 모자와 머리카락이 겹칠 경우 보이는 우선순위를 결정하는 역할을 한다고만 명시되어 있을 뿐, 우선순위를 변경하기 위해 구체적으로 어떤 값(숫자, 좌표, 매개변수 등)을 수정해야 하는지에 대한 설명은 포함되어 있지 않습니다. 또한, 레이어 이름을 변경했을 때 발생하는 '구체적 오류'의 내용(오류 메시지, 에러 코드 등)은 문서에 언급되어 있지 않으며, 문서에는 "모든 레이어의 이름을 수정하거나 삭제할 경우 아이템을 제작할 수 없습니다"라고만 기재되어 있습니다. [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 뒤통수가 개방된 모자 제작 방법을 알아봅시다. 기본 모자의 색상을 변경하고, 악세사리를 그릴 수 있습니다. 모자는 복잡한 구조로 바지나 신발 아이템 제작에 익숙해진 후 작업하는 걸 권장합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$a

[task] | code [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | StateComponent의 DEAD 상태 전이 시 이벤트가 발생하면 log에 "Death"를 출력하고, _TimerService:SetTimerOnce를 이용해 5초 후 IDLE 상태로 전이하는 스크립트를 작성해줘. [answer] | StateComponent의 상태 전이 시 특정 이벤트 핸들러(예: `HandleStateChangeEvent`)를 통해 이벤트를 수신하는 기능이 제공되는지 참고 문서에 명시되어 있지 않습니다. 참고 문서에는 `StateComponent`가 엔티티의 상태를 부여하고 상태 간 관계를 정의하는 역할, `IDLE`과 `DEAD` 기본 상태의 존재, `StateAnimationComponent`를 통한 애니메이션 재생, 그리고 `PlayerControllerComponent`나 `AIChaseComponent` 등 다른 컴포넌트와 함께 [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 [StateComponent](/apiReference/Components/StateComponent)와 StateType의 개념을 알아보고, 엔티티의 상태에 따라 애니메이션이 재생되는 과정을 이해해봅시다. # State, StateComponent 알아보기 **State**는 어떤 엔티티가 특정한 상태에 있는 것을 말합니다. 서 있는 상태, 엎드린 상태, 공격 상태 등 크리에이터에 따라 다양한 상태를 정의할 수 있습니다. 월드에서 내 캐릭터가 가만히 서 있는 것이 당연하게 느껴질 수 있지만 이는 캐릭터의

[task] | two_turn [pass] | ⏳ 미판정 [title] | 액세서리 [question] | Avatar_Cap_C1(헤어 앞)과 Avatar_Cap_C2(헤어 뒤) 파일의 노란색 레이어 구조, 특히 뒷모습을 그리는 case2.back 레이어의 이름 차이(edithere:cap_backCap_92 vs edithere:cap_backCapAccessory_118)가 아이템의 배치나 동작에 어떤 영향을 미치는지 설명해 주세요. [answer] | 제시된 문서 내용을 바탕으로 `Avatar_Cap_C1`과 `Avatar_Cap_C2` 파일의 노란색 레이어 구조와 뒷모습 레이어 이름 차이에 대해 설명해 드리겠습니다. ### 1. 노란색 레이어 구조 모든 모자 제작 시트(PSD)에서 **노란색 레이어**는 크리에이터가 실제 아이템 이미지를 그릴 수 있는 작업 공간입니다. * **case1.front**: 액세서리의 **앞모습**을 그리는 레이어와, 앞모습에서 일반 헤어 및 눌린 헤어 샘플이 포함된 그룹입니다. * 두 파일 모두 앞모습을 그리는 실제 작업 레이어 [followup] | 헤어 뒤 액세서리(Avatar_Cap_C2)를 제작할 때, 뒷모습 레이어(edithere:cap_backCapAccessory_118)에 이미지를 넣지 않으면 기본 헤어 샘플이 어떻게 표시되는지, 또는 빈 레이어 상태에서의 렌더링 결과가 어떻게 되는지 구체적인 예시나 주의사항이 있나요? [followup_answer] | 제공된 참고 문서에는 `edithere:cap_backCapAccessory_118` 레이어에 이미지를 넣지 않았을 때의 구체적인 렌더링 결과(예: 투명 처리, 기본 헤어 노출 여부 등)나 빈 레이어 상태에 대한 명시적인 설명이 포함되어 있지 않습니다. 문서에 따르면 다음과 같은 사항만 확인됩니다: 1. **레이어의 역할**: `edithere:cap_backCapAccessory_118`은 "액세서리의 뒷모습을 그릴 수 있는 레이어"로 정의되어 있습니다. 2. **샘플의 존재**: `case2.back` 그룹에는 "뒷모습의 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 액세서리 제작 시트를 소개합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$attachFile {"name":"Avatar_Cap_C1.psd","url":"https://mod-file.dn.nexoncdn.co.kr/storage/A

[task] | two_turn [pass] | ⏳ 미판정 [title] | 뒤통수가 개방된 모자 [question] | 모자 제작 시 Adobe Photoshop에서 제공되는 가이드 샘플(guide_backHairBelowCapWide_samples_94 등)을如何利用하여 뒤통수가 개방된 형태를 자연스럽게 구현할 수 있는지, 그리고 data:use_zmap_preset1 파일이 아바타의 몸동작에 따라 모자가 올바르게 쌓이도록 하는 원리는 무엇인가요? [answer] | 제시된 문서에 근거하여 질문에 답변드립니다. **1. 가이드 샘플(guide_backHairBelowCapWide_samples_94 등)을 활용한 뒤통수 개방형 모자 구현** 문서에서 `guide_backHairBelowCapWide_samples_94`와 `guide_backHairBelowCapNarrow_samples_95`는 **모자 모양에 따른 넓은 헤어와 좁은 헤어의 샘플**이라고 설명하고 있습니다. 이 가이드 샘플을 사용하여 뒤통수가 개방된 모자를 자연스럽게 구현하는 구체적인 작업 과정이나 기술적 방법은 제공된 [followup] | 모자가 아바타의 머리 위가 아닌 안쪽에 배치되어야 하는 경우, zmap의 스프라이트 높이를 조정하는 구체적인 코드나 설정 값 예시를 보여줄 수 있나요? [followup_answer] | 제시된 문서에는 `data:use_zmap_preset1` 파일이 "아이템에 따라 분리된 각 Sprite의 높이가 순서대로 정리된 파일"이라고 설명되어 있지만, **스프라이트 높이를 조정하는 구체적인 코드, 설정 값, 또는 편집 방법**에 대한 정보는 포함되어 있지 않습니다. 문서는 zmap 파일의 존재와 역할(스프라이트 적층 순서 정의)만 언급할 뿐, 실제 값이 어떻게 저장되어 있거나 Photoshop에서 어떻게 수정하는지에 대한 구체적인 예시나 절차는 제공하지 않습니다. 따라서 요청하신 구체적인 코드나 설정 값 예시를 보여줄 [scores] | [judge_reason] | [source_doc] | # 학습 과정 소개 뒤통수가 개방된 모자 제작 방법을 알아봅시다. 기본 모자의 색상을 변경하고, 악세사리를 그릴 수 있습니다. 모자는 복잡한 구조로 바지나 신발 아이템 제작에 익숙해진 후 작업하는 걸 권장합니다. [아바타 아이템 제작의 기본 개념](/docs?postId=588%7B%22target%22:%22_self%22%7D)을 참고해 아바타의 기본 개념을 먼저 숙지하길 바랍니다. # 사전 준비 아이템 제작을 위해선 Adobe Photoshop이 필요합니다. 해당 소프트웨어를 설치한 후 아래 파일을 받아 엽니다. $$a

[task] | code [pass] | ⏳ 미판정 [title] | 엔티티의 상태 제어하기 [question] | StateChangeEvent를 수신하여 전이 전 상태가 IDLE이고 전이 후 상태가 DEAD인 경우에만 로그를 출력하는 스크립트를 작성해줘. [answer] | `StateChangeEvent`는 `StateComponent`의 상태가 전이될 때 발생합니다. 이벤트 객체를 통해 전이 전 상태와 전이 후 상태의 정보를 확인할 수 있습니다. 질문하신 조건(전이 전: `IDLE`, 전이 후: `DEAD`)을 만족하는 경우에만 로그를 출력하는 스크립트 컴포넌트 예시는 다음과 같습니다. ```lua Property: [None] string MyLogMessage = "IDLE from DEAD transition detected" Event Handler: [service: StateServ [followup] | [followup_answer] | [scores] | [judge_reason] | [source_doc] | 어떤 상태에서 다음 상태로 변하는 것을 상태 전이(Transition)라 합니다. 상태 전이가 발생할 때 다양한 이벤트가 발생하고, 이를 활용해 특정 엔티티가 상태 전이를 감지할 수 있습니다. 이벤트는 상태 전이가 발생하기 이전의 상태와 현재 상태(바뀐 상태)의 정보를 갖고 있습니다. 아래와 같은 상황에서 이벤트가 발생합니다. * StateComponent의 상태가 전이되면, [StateChangeEvent](/apiReference/Events/StateChangeEvent)가 함께 발생합니다. * StateComponent가

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