[task] | knowledge_list [title] | UI 엔티티 제어하기 [category] | Guides [rephrased] | 제시된 문서 내용에서 추출한 핵심 사실 목록입니다. 1. UI 엔티티는 클라이언트 공간에만 존재하므로, 서버 함수에서 직접 UI 엔티티나 그 컴포넌트를 참조할 수 없습니다. 2. UI 엔티티나 엔티티의 컴포넌트를 받아올 때는 반드시 `[client only]` 또는 `[client]` 실행 공간이 지정된 함수 내에서만 수행해야 합니다. 3. 서버에서 처리된 결과를 UI에 출력하거나, UI를 통해 입력된 데이터를 서버에서 처리할 때는 실행 제어(Execution Control)를 활용하여 클라이언트와 서버 각자의 공간에서 필요한 동 [original] | # 학습 과정 소개 UI 엔티티를 효율적으로 제어하는 방법을 알아봅시다. UI 엔티티를 제어할 때 UI와 서버, 그리고 클라이언트의 관계를 파악해 만들어야 합니다. ##### 참고 가이드 * [UI 에디터](/docs?postId=120) * [UI 제작하기](/docs?postId=64) * [기본 UI 컴포넌트](/docs?postId=744) # UI 엔티티 제어 엔티티에 접근하는 것과 동일한 방법으로 UI 엔티티에 접근할 수 있습니다. 엔티티에 접근하는 방법은 [엔티티와 컴포넌트 참조](/docs?postId=164) [chunk_id] | Guides:1154:0
[task] | wikipedia [title] | UI 엔티티 제어하기 [category] | Guides [rephrased] | # UI 엔티티 제어 본 가이드는 메이플스토리 월드(MapleStory Worlds)에서 UI(User Interface) 엔티티를 효율적으로 제어하는 방법을 설명합니다. UI 엔티티를 제어하려면 UI와 서버, 클라이언트 간의 관계와 실행 공간의 차이를 명확히 이해해야 합니다. 관련 제작 방법은 [UI 에디터](/docs?postId=120), [UI 제작하기](/docs?postId=64), [기본 UI 컴포넌트](/docs?postId=744) 가이드를 참고할 수 있습니다. ## 접근 방식 및 실행 공간 제약 UI 엔티티에 [original] | # 학습 과정 소개 UI 엔티티를 효율적으로 제어하는 방법을 알아봅시다. UI 엔티티를 제어할 때 UI와 서버, 그리고 클라이언트의 관계를 파악해 만들어야 합니다. ##### 참고 가이드 * [UI 에디터](/docs?postId=120) * [UI 제작하기](/docs?postId=64) * [기본 UI 컴포넌트](/docs?postId=744) # UI 엔티티 제어 엔티티에 접근하는 것과 동일한 방법으로 UI 엔티티에 접근할 수 있습니다. 엔티티에 접근하는 방법은 [엔티티와 컴포넌트 참조](/docs?postId=164) [chunk_id] | Guides:1154:0
[task] | distill [title] | UI 엔티티 제어하기 [category] | Guides [rephrased] | # UI 엔티티 제어 `SetEnable()` 함수로 UI 엔티티의 노출 여부를 제어합니다. ```lua void SetEnable(boolean enabled) ``` ## 권장 구조: 부모-자식 계층 활용 동시에 표시/숨겨야 할 UI 요소들은 **부모-자식 관계**로 구성하는 것을 권장합니다. 최상위 부모 엔티티의 `SetEnable`만 변경하면 자식 UI 전체가 함께 제어됩니다. ### 예시: 개별 제어 vs 계층 제어 **비권장 (개별 엔티티 제어):** ```lua void ShowPopupUI() { lo [original] | `SetEnable()` 함수를 사용해 UI의 노출을 제어할 수 있습니다. 아래 그림과 같이 팝업창을 직접 제작하고 동일 계층으로 UI를 만들었을 경우를 살펴봅시다. 이 팝업창은 동시에 나타나고 사라져야 하므로 모든 엔티티의 **Enable**을 별도로 설정해야 합니다. ```lua void ShowPopupUI() { local PopupUIEntity_1 = _EntityService:GetEntityByPath("/ui/DefaultGroup/MODImage_1") local PopupUIEntity_2 = [chunk_id] | Guides:1154:1
[task] | knowledge_list [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | 1. `DetachChild()` 메서드는 매개변수로 떼어낼 자식 노드 객체를 전달하여 해당 자식 노드를 제거합니다. 2. `DetachChildAt()` 메서드는 매개변수로 떼어낼 자식 노드의 위치(인덱스)를 전달하여 해당 위치에 있는 자식 노드를 제거합니다. 3. `SequenceNode` 생성자는 이름 문자열(예: "sq")을 매개변수로 받아 시퀀스 노드를 생성합니다. 4. `self:CreateNode()` 메서드는 노드 이름 문자열(예: "ActionA")을 매개변수로 받아 새로운 액션 노드를 생성합니다. 5. `Attac [original] | 이미 등록된 자식 노드를 제거할 때는 `DetachChild()`, `DetachChildAt()`를 활용합니다. * `DetachChild()`는 매개 변수로 떼어낼 자식 노드 객체를 넘겨 자식 노드를 제거합니다. * `DetachChildAt()`은 떼어낼 자식 노드 객체의 위치를 넘겨 자식 노드를 제거합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17168956211348925ff93ffd347379cb977b79e710f7c.png "detach") ` [chunk_id] | Guides:1155:1
[task] | distill [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | **자식 노드 제거** * `DetachChild(child)`: 대상 자식 노드 객체를 인자로 받아 제거합니다. * `DetachChildAt(index)`: 제거할 자식 노드의 인덱스(위치)를 인자로 받아 제거합니다. ```lua [server only] void OnBeginPlay() { local sequence = SequenceNode("sq") local actionA = self:CreateNode("ActionA") local actionB = self:CreateNode("ActionB") lo [original] | 이미 등록된 자식 노드를 제거할 때는 `DetachChild()`, `DetachChildAt()`를 활용합니다. * `DetachChild()`는 매개 변수로 떼어낼 자식 노드 객체를 넘겨 자식 노드를 제거합니다. * `DetachChildAt()`은 떼어낼 자식 노드 객체의 위치를 넘겨 자식 노드를 제거합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17168956211348925ff93ffd347379cb977b79e710f7c.png "detach") ` [chunk_id] | Guides:1155:1
[task] | diverse_qa [title] | UI 엔티티 제어하기 [category] | Guides [rephrased] | 질문: UI 엔티티는 어떤 실행 공간에 존재하나요? 답변: UI 엔티티는 클라이언트 공간에만 존재합니다. 질문: 서버 함수에서 UI 엔티티나 그 컴포넌트를 직접 참조할 수 있나요? 답변: 아니요, UI 엔티티는 클라이언트 공간에만 존재하므로 서버에서 접근할 수 없으며, 오직 클라이언트 함수에서만 참조해야 합니다. 질문: 서버에서 처리된 내용을 UI로 출력하거나, UI에서 입력한 내용을 서버에서 처리하려면 어떻게 해야 하나요? 답변: 실행제어를 이용해 각 공간(클라이언트/서버)에서 수행하도록 해야 합니다. 질문: 아래 코드는 어 [original] | # 학습 과정 소개 UI 엔티티를 효율적으로 제어하는 방법을 알아봅시다. UI 엔티티를 제어할 때 UI와 서버, 그리고 클라이언트의 관계를 파악해 만들어야 합니다. ##### 참고 가이드 * [UI 에디터](/docs?postId=120) * [UI 제작하기](/docs?postId=64) * [기본 UI 컴포넌트](/docs?postId=744) # UI 엔티티 제어 엔티티에 접근하는 것과 동일한 방법으로 UI 엔티티에 접근할 수 있습니다. 엔티티에 접근하는 방법은 [엔티티와 컴포넌트 참조](/docs?postId=164) [chunk_id] | Guides:1154:0
[task] | distill [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | **Decorator Node 생성 및 실행** `BTNodeType`의 프로퍼티에 `any` 타입의 `Child` (또는 `child`)를 추가하여 Decorator Node로 정의합니다. 자식 노드 실행은 `Behave()` 함수 호출로 처리합니다. ```lua Property: [None] any Child = nil Method: any OnBehave(number delta) { if self.Child == nil then return BehaviourTreeStatus.Failure end loca [original] | Decorator Node는 BTNodeType을 활용해 생성할 수 있습니다. 새 BTNodeType을 생성하고, 프로퍼티로 any 타입의 **Child** 또는 **child**를 추가해 Decorator Node로 만들 수 있습니다. 자식 노드를 실행하고 싶을 때는 `Behave()` 함수를 호출합니다. ```lua Property: [None] any Child = nil Method: any OnBehave(number delta) { if self.Child == nil then return Behaviou [chunk_id] | Guides:1155:2
[task] | extract_knowledge [title] | 무기 목록 불러오기 [category] | Guides [rephrased] | # UI에서 무기 데이터 불러오기 및 아바타 애니메이션 준비 본 절에서는 Workspace의 Dataset을 통해 무기 및 스킬 정보를 관리하고, UI 컴포넌트를 통해 해당 데이터를 로드하여 무기 아이템 UI를 구성하는 방법을 다룹니다. ## 1. 개념 설명 메이플스토리 월드에서 UI에 무기 목록을 표시하려면 각 무기별 고유 식별자(RUID), 스킬 정보, 그리고 표시 위치 데이터를 중앙에서 관리해야 합니다. 이를 위해 **Dataset**을 사용하여 데이터 구조를 정의하고, **Script Component**를 통해 이 데 [original] | 무기 RUID, 스킬 RUID, 스킬이 재생될 위치와 지연 시간을 담은 Dataset을 만들어봅시다. 1. **Workspace - MyDesk - Create DataSet**을 선택해 새로운 **SkillDatas**를 만듭니다. 2. 아래와 같이 데이터를 입력합니다. | dataID | weaponRUID | is2handWeapon | skillRUID | skillOffsetX |skillOffsetY | skillDelay | | --- | --- | --- | --- | --- | --- | --- | | swor [chunk_id] | Guides:1145:2
[task] | knowledge_list [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | ```lua [server only] void OnBeginPlay() { local seqNode = SequenceNode("sq") local selNode = Selector("sel") local randomNode = RandomSelector("rand") local prNode = Parallel("pr") } ``` - `SequenceNode(string name = "SequenceNode")` 생성자는 `string` 타입의 `name` 매개변수를 받아 `Sequence` 타입의 Composite No [original] | # 학습 과정 소개 행동 트리를 만드는 데 사용하는 노드에 대해 알아보고, 직접 예제를 따라하며 행동 트리에 따라 움직이는 AI 몬스터를 만들어 봅시다. ##### 참고 가이드 * [행동 트리를 활용한 AI 만들기](/docs?postId=562) ##### 참고 API Reference * [BTNode](/apiReference?postId=455) * [AIComponent](/apiReference?postId=361) * [ParallelNode](/apiReference?postId=456) * [RandomSele [chunk_id] | Guides:1155:0
[task] | wikipedia [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | Decorator 노드는 `BTNodeType`을 활용하여 생성할 수 있습니다. 새로운 `BTNodeType`을 생성한 뒤, 프로퍼티로 `any` 타입의 `Child` 또는 `child`를 추가함으로써 Decorator 노드를 구현합니다. 자식 노드를 실행해야 하는 경우에는 `Behave()` 함수를 호출하여 처리합니다. 다음은 자식 노드의 실행 결과를 받아들이고 상태(`BehaviourTreeStatus`)를 반전시켜 반환하는 Decorator 노드의 예시 스크립트입니다. ```lua Property: [None] any C [original] | Decorator Node는 BTNodeType을 활용해 생성할 수 있습니다. 새 BTNodeType을 생성하고, 프로퍼티로 any 타입의 **Child** 또는 **child**를 추가해 Decorator Node로 만들 수 있습니다. 자식 노드를 실행하고 싶을 때는 `Behave()` 함수를 호출합니다. ```lua Property: [None] any Child = nil Method: any OnBehave(number delta) { if self.Child == nil then return Behaviou [chunk_id] | Guides:1155:2
[task] | extract_knowledge [title] | 스킬 재생하기 [category] | Guides [rephrased] | # UI에서 아바타 애니메이션(스킬) 재생하기 ## 1. 개념 설명 이 절에서는 UI 요소에 스킬 이펙트를 일시적으로 표시하고 제거하는 로직을 구현하는 방법을 다룹니다. `UISkillEffectComponent`를 통해 스킬 데이터(지연 시간, 오프셋, 리소스 ID)를 기반으로 렌더러의 활성화 상태, 위치, 스케일 및 이미지 리소스를 제어합니다. `TimerService`를 사용하여 스킬 발동 전 지연, 이펙트 재생 시간, 그리고 이펙트 종료 후 비활성화를 타이밍에 맞게 처리합니다. ## 2. API 및 컴포넌트 구성 ### [original] | 1. **Workspace - MyDesk - Create Script - Create Component**를 선택해 새로운 **UISkillEffectComponent**를 만듭니다. 2. **UISkillEffectRenderer**에 해당 컴포넌트를 추가합니다. 3. **RendererComponentRef, OriginalPosition, SkillDataStruct, ActivatedTimerID** 프로퍼티를 추가합니다. ```lua Property: [None] SpriteGUIRende [chunk_id] | Guides:1146:1
[task] | wikipedia [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | 게임 로직 행동 트리에서 이미 등록된 자식 노드를 제거할 때는 `DetachChild()`와 `DetachChildAt()` 메서드를 사용합니다. `DetachChild()`는 매개 변수로 떼어낼 자식 노드 객체 자체를 전달하여 해당 노드를 트리에서 제거합니다. 반면 `DetachChildAt()`은 떼어낼 자식 노드의 위치 인덱스를 전달하여 해당 위치에 있는 노드를 제거합니다. 아래 코드 예제는 시퀀스 노드와 액션 노드를 생성한 후, 트리에 연결하고 지정된 방식으로 노드를 제거하는 과정을 보여줍니다. ```lua [server [original] | 이미 등록된 자식 노드를 제거할 때는 `DetachChild()`, `DetachChildAt()`를 활용합니다. * `DetachChild()`는 매개 변수로 떼어낼 자식 노드 객체를 넘겨 자식 노드를 제거합니다. * `DetachChildAt()`은 떼어낼 자식 노드 객체의 위치를 넘겨 자식 노드를 제거합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17168956211348925ff93ffd347379cb977b79e710f7c.png "detach") ` [chunk_id] | Guides:1155:1
[task] | distill [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | # 행동 트리(BT) 노드 가이드 행동 트리(BT)를 구성하는 노드 생성, 연결 및 순서 제어 방법을 설명합니다. AI 몬스터 제작 시 `BTNode`, `AIComponent` 및 각 Composite 노드 API를 참고하십시오. ## 1. Composite Node 생성 Composite Node는 각각의 생성자를 통해 인스턴스를 생성합니다. | 노드 타입 | 생성자 시그니처 | | :--- | :--- | | Sequence | `SequenceNode(string name = "SequenceNode")` | | Se [original] | # 학습 과정 소개 행동 트리를 만드는 데 사용하는 노드에 대해 알아보고, 직접 예제를 따라하며 행동 트리에 따라 움직이는 AI 몬스터를 만들어 봅시다. ##### 참고 가이드 * [행동 트리를 활용한 AI 만들기](/docs?postId=562) ##### 참고 API Reference * [BTNode](/apiReference?postId=455) * [AIComponent](/apiReference?postId=361) * [ParallelNode](/apiReference?postId=456) * [RandomSele [chunk_id] | Guides:1155:0
[task] | distill [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | **RectTile** 모드로 전환하여 타일을 배치합니다. **Workspace - MyDesk - Create Material**을 선택해 Alert 머티리얼을 추가합니다. * **Shader**: Rainbow * **Blend**: 0.5 * **Rotate**: 0 * **Spread**: 0.25 * **TimeOffset**: 0 * **TimeScale**: 1 **Preset List - Monster - monster2358** 프리셋을 추가합니다. 기존 컴포넌트 중 `TransformCom [original] | 1. **RectTile** 모드로 전환하고, 타일을 배치합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1717483867395248704741b464dfa9bbf21b93f26f45e.png "1") 2. **Workspace - MyDesk - Create Material**을 선택해 새로운 Alert 머티리얼을 추가합니다. * Shader: Rainbow * Blend: 0.5 * Rotate: 0 * Spread: 0.25 [chunk_id] | Guides:1155:4
[task] | knowledge_list [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | 제공된 문서 내용을 바탕으로 핵심 사실을 추출한 목록입니다. 1. Decorator Node는 BTNodeType을 생성하여 프로퍼티로 any 타입의 Child 또는 child를 추가함으로써 만들 수 있습니다. 2. Decorator Node에서 자식 노드를 실행하려면 Child 객체의 Behave() 함수를 호출해야 합니다. 3. OnBehave(number delta) 메서드는 매개변수로 number 타입의 delta를 받아 any 타입의 BehaviourTreeStatus를 반환하며, self.Child가 nil인 경우 Be [original] | Decorator Node는 BTNodeType을 활용해 생성할 수 있습니다. 새 BTNodeType을 생성하고, 프로퍼티로 any 타입의 **Child** 또는 **child**를 추가해 Decorator Node로 만들 수 있습니다. 자식 노드를 실행하고 싶을 때는 `Behave()` 함수를 호출합니다. ```lua Property: [None] any Child = nil Method: any OnBehave(number delta) { if self.Child == nil then return Behaviou [chunk_id] | Guides:1155:2
[task] | diverse_qa [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | 질문: 행동 트리를 만드는 데 사용하는 노드에 대한 학습 과정을 따라하며 만들 수 있는 예제는 무엇인가요? 답변: 행동 트리에 따라 움직이는 AI 몬스터를 만들어 볼 수 있습니다. 질문: Composite Node 객체를 생성할 때 사용할 수 있는 노드 종류와 각각의 생성자(Constructor)는 무엇인가요? 답변: Sequence는 SequenceNode(string name = "SequenceNode"), Selector는 SelectorNode(string name = "SelectorNode"), RandomSelect [original] | # 학습 과정 소개 행동 트리를 만드는 데 사용하는 노드에 대해 알아보고, 직접 예제를 따라하며 행동 트리에 따라 움직이는 AI 몬스터를 만들어 봅시다. ##### 참고 가이드 * [행동 트리를 활용한 AI 만들기](/docs?postId=562) ##### 참고 API Reference * [BTNode](/apiReference?postId=455) * [AIComponent](/apiReference?postId=361) * [ParallelNode](/apiReference?postId=456) * [RandomSele [chunk_id] | Guides:1155:0
[task] | wikipedia [title] | UI 엔티티 제어하기 [category] | Guides [rephrased] | # UI 엔티티 제어 메이플스토리 월드(MapleStory Worlds)에서 UI 엔티티의 노출(보임/숨김) 상태는 `SetEnable()` 함수를 통해 제어합니다. 이 함수는 엔티티 인스턴스를 인수로 받아, 해당 UI 요소가 화면에 표시되도록 할지(`true`) 또는 숨기도록 할지(`false`) 결정합니다. ## 개별 UI 엔티티 제어 팝업창과 같이 여러 UI 요소가 동시에 나타났다가 사라져야 하는 경우, 각 UI 요소가 동일한 계층(레벨)에 독립적으로 존재한다면 모든 엔티티의 `Enable` 상태를 개별적으로 설정해야 합 [original] | `SetEnable()` 함수를 사용해 UI의 노출을 제어할 수 있습니다. 아래 그림과 같이 팝업창을 직접 제작하고 동일 계층으로 UI를 만들었을 경우를 살펴봅시다. 이 팝업창은 동시에 나타나고 사라져야 하므로 모든 엔티티의 **Enable**을 별도로 설정해야 합니다. ```lua void ShowPopupUI() { local PopupUIEntity_1 = _EntityService:GetEntityByPath("/ui/DefaultGroup/MODImage_1") local PopupUIEntity_2 = [chunk_id] | Guides:1154:1
[task] | diverse_qa [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | 질문: Decorator Node를 생성하기 위해 BTNodeType의 프로퍼티로 어떤 타입과 이름의 값을 추가해야 하나요? 답변: any 타입의 Child 또는 child 프로퍼티를 추가해야 합니다. 질문: 자식 노드를 실행하기 위해 호출해야 하는 함수 이름은 무엇인가요? 답변: Behave() 함수를 호출합니다. 질문: 아래 코드가 수행하는 논리 중, 자식 노드가 Success 상태를 반환할 때 Decorator 노드는 어떤 상태를 반환하나요? ```lua if result == BehaviourTreeStatus.Succe [original] | Decorator Node는 BTNodeType을 활용해 생성할 수 있습니다. 새 BTNodeType을 생성하고, 프로퍼티로 any 타입의 **Child** 또는 **child**를 추가해 Decorator Node로 만들 수 있습니다. 자식 노드를 실행하고 싶을 때는 `Behave()` 함수를 호출합니다. ```lua Property: [None] any Child = nil Method: any OnBehave(number delta) { if self.Child == nil then return Behaviou [chunk_id] | Guides:1155:2
[task] | diverse_qa [title] | UI 엔티티 제어하기 [category] | Guides [rephrased] | 질문: UI 엔티티의 노출(보임/숨김)을 제어하기 위해 사용해야 하는 함수는 무엇인가요? 답변: UI 엔티티의 노출을 제어하기 위해 `SetEnable()` 함수를 사용합니다. 질문: 아래 코드는 어떤 기능을 수행하나요? ```lua local PopupUIEntity = _EntityService:GetEntityByPath("/ui/DefaultGroup/MODImage_1") PopupUIEntity:SetEnable(true) ``` 답변: 이 코드는 경로 `/ui/DefaultGroup/MODImage_1`에 위치한 UI [original] | `SetEnable()` 함수를 사용해 UI의 노출을 제어할 수 있습니다. 아래 그림과 같이 팝업창을 직접 제작하고 동일 계층으로 UI를 만들었을 경우를 살펴봅시다. 이 팝업창은 동시에 나타나고 사라져야 하므로 모든 엔티티의 **Enable**을 별도로 설정해야 합니다. ```lua void ShowPopupUI() { local PopupUIEntity_1 = _EntityService:GetEntityByPath("/ui/DefaultGroup/MODImage_1") local PopupUIEntity_2 = [chunk_id] | Guides:1154:1
[task] | knowledge_list [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | 제시된 원문에는 'AIPatrolComponent 만들기'라는 제목만 있고, 해당 컴포넌트의 실제 프로퍼티, 메서드, 이벤트 핸들러 코드나 API 명세 내용이 포함되어 있지 않습니다. 따라서 원문에 명시된 정보만 사용하여 추출할 수 있는 핵심 사실은 다음과 같습니다. 1. 에디터의 **RectTile** 모드로 전환하여 타일을 배치해야 합니다. 2. **Workspace - MyDesk - Create Material** 경로를 통해 Shader가 **Rainbow**, Blend가 **0.5**, Rotate가 **0**, Sp [original] | 1. **RectTile** 모드로 전환하고, 타일을 배치합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1717483867395248704741b464dfa9bbf21b93f26f45e.png "1") 2. **Workspace - MyDesk - Create Material**을 선택해 새로운 Alert 머티리얼을 추가합니다. * Shader: Rainbow * Blend: 0.5 * Rotate: 0 * Spread: 0.25 [chunk_id] | Guides:1155:4
[task] | knowledge_list [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | 제공된 문서 텍스트와 코드 블록에 명시된 정보만 바탕으로 핵심 사실을 추출하여 목록으로 정리합니다. 1. `Root Node` 설정이 완료되면, 작성된 행동 트리를 기반으로 `AIComponent`가 동작합니다. 2. 행동 트리 생성 및 연결 로직은 `[server only]` 실행 공간의 `OnBeginPlay` 메서드 내에서 수행되어야 합니다. 3. 복합 노드(Composite Node)는 `SequenceNode`, `SelectorNode`, `RandomSelectorNode`, `ParallelNode` 함수를 호출하여 [original] | Root Node 설정까지 마치면, 만든 행동 트리를 기반으로 AIComponent가 동작합니다. ```lua [server only] void OnBeginPlay() { --CREATE COMPOSITE NODE local sequence = SequenceNode("Sequence") local sequenceA = SequenceNode("SequenceA") local sequenceB = SequenceNode("SequenceB") local sequenceC = SequenceNode("SequenceC" [chunk_id] | Guides:1155:3
[task] | diverse_qa [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | 질문: 이미 등록된 자식 노드를 제거할 때 사용할 수 있는 메서드는 무엇인가요? 답변: `DetachChild()`와 `DetachChildAt()`를 활용합니다. 질문: `DetachChild()` 메서드는 매개 변수로 무엇을 넘겨서 자식 노드를 제거하나요? 답변: 떼어낼 자식 노드 객체를 넘겨서 자식 노드를 제거합니다. 질문: `DetachChildAt()` 메서드는 매개 변수로 무엇을 넘겨서 자식 노드를 제거하나요? 답변: 떼어낼 자식 노드 객체의 위치를 넘겨서 자식 노드를 제거합니다. 질문: 아래 코드에서 `sequen [original] | 이미 등록된 자식 노드를 제거할 때는 `DetachChild()`, `DetachChildAt()`를 활용합니다. * `DetachChild()`는 매개 변수로 떼어낼 자식 노드 객체를 넘겨 자식 노드를 제거합니다. * `DetachChildAt()`은 떼어낼 자식 노드 객체의 위치를 넘겨 자식 노드를 제거합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17168956211348925ff93ffd347379cb977b79e710f7c.png "detach") ` [chunk_id] | Guides:1155:1
[task] | wikipedia [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | # 행동 트리 노드 만들기 행동 트리(Behavior Tree)는 게임 내 AI의 의사결정 구조를 정의하는 데 사용되는 트리 형태의 데이터 구조입니다. 본 가이드에서는 행동 트리를 구성하는 기본 단위인 노드(Node)의 종류와 생성 방법, 그리고 노드 간 연결을 통해 트리 구조를 형성하는 방법을 다룹니다. 학습을 통해 행동 트리를 기반으로 한 AI 몬스터를 구현하는 과정을 익힐 수 있습니다. ## 관련 자료 * [행동 트리를 활용한 AI 만들기](/docs?postId=562) * **API Reference** [original] | # 학습 과정 소개 행동 트리를 만드는 데 사용하는 노드에 대해 알아보고, 직접 예제를 따라하며 행동 트리에 따라 움직이는 AI 몬스터를 만들어 봅시다. ##### 참고 가이드 * [행동 트리를 활용한 AI 만들기](/docs?postId=562) ##### 참고 API Reference * [BTNode](/apiReference?postId=455) * [AIComponent](/apiReference?postId=361) * [ParallelNode](/apiReference?postId=456) * [RandomSele [chunk_id] | Guides:1155:0
[task] | diverse_qa [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | 질문: RectTile 모드로 전환한 후 어떤 작업을 수행해야 합니까? 답변: 타일을 배치하는 작업을 수행해야 합니다. 질문: 새로운 Alert 머티리얼을 추가하기 위해 선택해야 하는 경로와 메뉴 이름은 무엇입니까? 답변: Workspace - MyDesk - Create Material 경로를 선택해야 합니다. 질문: Alert 머티리얼의 Shader 값은 무엇으로 설정해야 합니까? 답변: Shader 값은 Rainbow로 설정해야 합니다. 질문: Alert 머티리얼의 Blend 값은 얼마로 설정해야 합니까? 답변: Blen [original] | 1. **RectTile** 모드로 전환하고, 타일을 배치합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1717483867395248704741b464dfa9bbf21b93f26f45e.png "1") 2. **Workspace - MyDesk - Create Material**을 선택해 새로운 Alert 머티리얼을 추가합니다. * Shader: Rainbow * Blend: 0.5 * Rotate: 0 * Spread: 0.25 [chunk_id] | Guides:1155:4
[task] | wikipedia [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | # 게임 로직 행동 트리 노드 만들기 이 가이드는 게임 로직 시스템 내에서 행동 트리 노드를 구성하는 과정을 설명합니다. 작업은 3단계의 시각 편집 설정과 커스텀 컴포넌트 제작으로 나뉩니다. ## 1단계: 타일 배치 및 머티리얼 생성 먼저 작업 환경을 **RectTile** 모드로 전환하고 필요한 타일을 배치합니다. 이후 새 머티리얼을 생성하기 위해 **Workspace** 패널의 **MyDesk** 항목에서 **Create Material**을 선택합니다. 이 과정에서 생성되는 **Alert** 머티리얼에는 다음 파라미터 [original] | 1. **RectTile** 모드로 전환하고, 타일을 배치합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1717483867395248704741b464dfa9bbf21b93f26f45e.png "1") 2. **Workspace - MyDesk - Create Material**을 선택해 새로운 Alert 머티리얼을 추가합니다. * Shader: Rainbow * Blend: 0.5 * Rotate: 0 * Spread: 0.25 [chunk_id] | Guides:1155:4
[task] | diverse_qa [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | 질문: Root Node 설정이 완료된 후, 만든 행동 트리는 어떤 컴포넌트를 기반으로 동작하나요? 답변: Root Node 설정까지 마치면, 만든 행동 트리를 기반으로 AIComponent가 동작합니다. 질문: 제공된 코드에서 `SequenceNode`, `SelectorNode` 등의 노드는 어떻게 생성되나요? 답변: `SequenceNode("이름")`, `SelectorNode("이름")` 등 각 노드 타입의 생성자 함수를 직접 호출하여 생성합니다. 질문: 제공된 코드에서 `ActionA1`과 같은 액션 노드는 어떻게 생 [original] | Root Node 설정까지 마치면, 만든 행동 트리를 기반으로 AIComponent가 동작합니다. ```lua [server only] void OnBeginPlay() { --CREATE COMPOSITE NODE local sequence = SequenceNode("Sequence") local sequenceA = SequenceNode("SequenceA") local sequenceB = SequenceNode("SequenceB") local sequenceC = SequenceNode("SequenceC" [chunk_id] | Guides:1155:3
[task] | extract_knowledge [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | # 행동 트리 노드 관리: 자식 제거 및 루트 설정 ## 개념 설명 행동 트리(Behavior Tree) 시스템에서 노드 계층 구조를 동적으로 변경하기 위해 자식 노드를 제거하거나 루트 노드를 지정할 수 있습니다. * **자식 노드 제거**: 이미 등록된 자식 노드를 트리에서 분리하여 제거합니다. * `DetachChild()`: 특정 노드 객체를 직접 지정하여 제거합니다. * `DetachChildAt()`: 자식 노드 목록에서의 인덱스(위치)를 지정하여 제거합니다. * **루트 노드 설정**: [original] | 이미 등록된 자식 노드를 제거할 때는 `DetachChild()`, `DetachChildAt()`를 활용합니다. * `DetachChild()`는 매개 변수로 떼어낼 자식 노드 객체를 넘겨 자식 노드를 제거합니다. * `DetachChildAt()`은 떼어낼 자식 노드 객체의 위치를 넘겨 자식 노드를 제거합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/17168956211348925ff93ffd347379cb977b79e710f7c.png "detach") ` [chunk_id] | Guides:1155:1
[task] | extract_knowledge [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | # 행동 트리(Behavior Tree) 노드 구성 행동 트리는 AI의 의사결정 구조를 표현하기 위한 트리 구조입니다. 이 절에서는 행동 트리를 구성하는 복합 노드(Composite Node)의 생성 및 자식 노드 연결 방법을 다룹니다. ## 개념 설명 행동 트리는 두 가지 유형의 노드로 구성됩니다. 1. **Composite Node**: 하위 노드들을 포함하여 트리 구조를 형성하는 노드입니다. 실행 순서나 조건에 따라 자식 노드들을 제어합니다. * `SequenceNode`: 자식 노드들을 순서대로 실행합니다. [original] | # 학습 과정 소개 행동 트리를 만드는 데 사용하는 노드에 대해 알아보고, 직접 예제를 따라하며 행동 트리에 따라 움직이는 AI 몬스터를 만들어 봅시다. ##### 참고 가이드 * [행동 트리를 활용한 AI 만들기](/docs?postId=562) ##### 참고 API Reference * [BTNode](/apiReference?postId=455) * [AIComponent](/apiReference?postId=361) * [ParallelNode](/apiReference?postId=456) * [RandomSele [chunk_id] | Guides:1155:0
[task] | extract_knowledge [title] | 행동 트리 노드 만들기 [category] | Guides [rephrased] | # AIPatrolComponent 만들기 ## 개념 설명 `AIPatrolComponent`는 몬스터의 순찰(AI Patrol) 행동을 제어하기 위해 제작되는 사용자 정의 컴포넌트입니다. 이 컴포넌트를 적용하기 전, 대상 엔티티(몬스터)에 이동 및 상태 관리를 위한 필수 내장 컴포넌트들이 존재해야 합니다. ## API 사용법 및 설정 절차 `AIPatrolComponent`를 정상적으로 동작시키기 위해 다음 단계의 환경 설정과 컴포넌트 구성이 필요합니다. 1. **RectTile 모드 및 타일 배치**: * 에디 [original] | 1. **RectTile** 모드로 전환하고, 타일을 배치합니다. ![[object Object]](https://mod-file.dn.nexoncdn.co.kr/bbs/1717483867395248704741b464dfa9bbf21b93f26f45e.png "1") 2. **Workspace - MyDesk - Create Material**을 선택해 새로운 Alert 머티리얼을 추가합니다. * Shader: Rainbow * Blend: 0.5 * Rotate: 0 * Spread: 0.25 [chunk_id] | Guides:1155:4
[task] | extract_knowledge [title] | UI 엔티티 제어하기 [category] | Guides [rephrased] | # UI 엔티티 제어 ## 1. 개념 설명 mLua에서 UI 엔티티를 제어할 때는 **클라이언트 공간**과 **서버 공간**의 경계를 명확히 구분해야 합니다. * **접근 제한**: UI 엔티티는 클라이언트 공간에만 존재합니다. 따라서 서버 코드(`[server]`, `[server only]`)에서 UI 엔티티나 그 컴포넌트를 직접 참조할 수 없습니다. * **통신 필요성**: 서버에서 처리한 결과를 UI에 표시하거나, UI를 통해 입력된 데이터를 서버로 전달해야 할 경우, 각 공간에서 수행할 로직을 분리하고 **실행 [original] | # 학습 과정 소개 UI 엔티티를 효율적으로 제어하는 방법을 알아봅시다. UI 엔티티를 제어할 때 UI와 서버, 그리고 클라이언트의 관계를 파악해 만들어야 합니다. ##### 참고 가이드 * [UI 에디터](/docs?postId=120) * [UI 제작하기](/docs?postId=64) * [기본 UI 컴포넌트](/docs?postId=744) # UI 엔티티 제어 엔티티에 접근하는 것과 동일한 방법으로 UI 엔티티에 접근할 수 있습니다. 엔티티에 접근하는 방법은 [엔티티와 컴포넌트 참조](/docs?postId=164) [chunk_id] | Guides:1154:0