← 목록

mLua · Nemotron-CC 리프레이즈 (CPT)

총 8,200개 · 페이지 183/274
🔀 랜덤
불러오는 중…

[task] | wikipedia [title] | 월드 워프하기 [category] | Guides [rephrased] | # 이동 월드 워프하기 `TeleportService`의 함수를 활용하면 플레이어는 현재 있는 월드에서 다른 월드로 이동할 수 있습니다. `TeleportService`는 단순히 월드 내의 특정 좌표로 유저를 이동시키는 용도뿐 아니라, 접속 중인 월드에서 완전히 다른 월드 환경으로 전환하는 기능도 제공합니다. ## 워프 가능 조건 월드 간 이동(워프)이 성공하려면, 현재 접속 중인 월드와 이동하고자 하는 대상 월드 모두 **공개 출시(Public Release)** 상태여야 합니다. 이 제약 사항으로 인해, 월드가 비공개 상태 [original] | # 학습 과정 소개 TeleportService의 함수를 활용해 월드에서 다른 월드로 이동할 수 있습니다. # 다른 월드로 이동하기 TeleportService는 월드의 유저를 특정 장소로 이동시킬 때 사용할 수 있을 뿐 아니라, 접속 중인 월드에서 다른 월드로 이동시킬 수 있습니다. 접속 중인 월드와 이동할 월드가 공개 출시된 상태여야 이동이 가능합니다. 이 특성으로 인해 제작 중에는 워프를 테스트할 수 없습니다. | 현재 월드 | 이동할 월드 | 워프 여부 | | --- | --- | --- | | 공개 | 공개 | * [chunk_id] | Guides:743:0

[task] | knowledge_list [title] | 월드 워프하기 [category] | Guides [rephrased] | 1. `WarpUserToWorldAndWait`는 `_TeleportService`의 메서드로, 매개변수 `userId`(string), `WorldId`(string), `warpData`(string)를 받아 사용자를 다른 월드로 이동시키며, 실행 공간은 `[server]` 또는 `[server only]`입니다. 2. `TableToString`은 `_UtilLogic`의 메서드로, 매개변수 `table`을 받아 string 타입으로 변환하여 반환하며, 월드 워프 시 데이터를 직렬화하는 데 사용됩니다. 3. `StringTo [original] | 유저의 데이터를 이동할 월드로 전달할 수 있습니다. 1. 새로운 스크립트 컴포넌트를 생성합니다. 2. 맵에 포탈을 추가한 뒤, 만든 스크립트 컴포넌트를 포탈에 추가합니다. 3. 아래와 같이 `WarpUserToWorldAndWait()`와 `UtilLogic`을 활용해 다른 월드에 데이터를 전달할 수 있게 작성합니다. ```lua Property: [Sync] string WorldId = "" Method: [server] void Warp(string userId) [chunk_id] | Guides:743:2

[task] | distill [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | # UI 기본 컴포넌트 가이드 컴포넌트를 조합해 UI 엔티티를 구성합니다. 참고: [UI 에디터](/docs?postId=120), [UI 제작하기](/docs?postId=64), [UI 엔티티 제어하기](/docs?postId=1154) ## UITransformComponent UI 엔티티에 필수인 기본 컴포넌트입니다. **TransformComponent**와 유사하지만 스크린 좌표에서 동작합니다. | 항목 | 설명 | | :--- | :--- | | UI 좌표 | UI 위치 설정. `Anchor Presets` 설정에 [original] | # 학습 과정 소개 컴포넌트를 조합해 다양한 형태의 UI 엔티티를 구성할 수 있습니다. 이번 과정에서는 UI에서 자주 사용하는 기본 컴포넌트에 대해 알아봅니다. ##### 참고 가이드 * [UI 에디터](/docs?postId=120) * [UI 제작하기](/docs?postId=64) * [UI 엔티티 제어하기](/docs?postId=1154) # UITransformComponent [UITransformComponent](/apiReference/Components/UITransformComponent)는 UI 엔티티에 [chunk_id] | Guides:744:0

[task] | distill [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | # UI 기본 컴포넌트 ## TextComponent UI에 텍스트를 표시합니다. **SpriteGUIRendererComponent**와 함께 사용할 경우 **TextComponent**가 위에 그려집니다. UI 엔티티에 **TextComponent**가 있으면 엔티티 더블클릭으로 텍스트를 편집할 수 있습니다. | 프로퍼티 | 설명 | | :--- | :--- | | `Font` | 표시 폰트 설정. `Default`, `Maple`, `Bazzi`, `Football` 중 선택 | | `FontColor` | 폰트 색상 및 [original] | [TextComponent](/apiReference/Components/TextComponent)는 UI에 텍스트를 표시하는 컴포넌트입니다. **SpriteGUIRendererComponent**와 같이 사용할 경우 **SpriteGUIRendererComponent**보다 **TextComponent**를 위에 그립니다. UI 엔티티에 **TextComponent**가 포함되어 있으면 엔티티를 더블클릭하여 손쉽게 텍스트를 편집할 수 있습니다. 주요 프로퍼티는 다음과 같습니다. | 번호 | 항목 | 설명 | | :---: | [chunk_id] | Guides:744:1

[task] | wikipedia [title] | 로그 [category] | Guides [rephrased] | # 스크립트 이해: 로그 메이플스토리 월드(MapleStory Worlds)에서는 스크립트 컴포넌트 및 월드 로직 실행 중 발생한 정보를 콘솔(콘솔 창)을 통해 확인합니다. 콘솔은 크게 플레이 테스트 도중에 발생하는 **스크립트 이해 로그** 콘솔, 제작 중 발생하는 **빌드 콘솔**, 그리고 출시된 월드에서 크리에이터가 확인하는 **출시 월드 콘솔**로 구분됩니다. ## 스크립트 이해 로그 (플레이 테스트) 플레이 테스트 도중 발생한 정보, 경고, 오류 로그가 출력됩니다. 콘솔 창 상단에는 로그를 관리하고 필터링하기 위한 다 [original] | 콘솔에는 플레이 테스트 도중에 발생한 정보, 경고, 오류 로그가 출력됩니다. | 번호 | 설명 | | :---: | --- | | | 콘솔 창에 남아있는 로그를 삭제합니다. Clear 오른쪽에 확장 버튼을 눌러 Clear on Play를 활성화하고, 시작 버튼을 누르면 콘솔 창에 남아있던 로그를 자동으로 삭제하고 시작합니다. | | | 버튼을 누르면 중복 로그를 하나로 합쳐줍니다. 영역에 합쳐진 총 개수가 나옵니다. | | | 실행 공간(Client / Server) 별로 로그를 모아볼 수 있습니다. | | | [chunk_id] | Guides:719:1

[task] | extract_knowledge [title] | 월드 워프하기 [category] | Guides [rephrased] | # 워프 기록 확인 (GetWarpRecord) ## 개념 설명 `_TeleportService:GetWarpRecord(UserId)` 함수는 유저가 워프(Warp)를 통해 현재 월드에 진입했는지 여부를 판별하고, 워프 이전의 원본 월드 정보를 조회하는 데 사용됩니다. * **일반적 월드 입장**: 유저가 맵 로딩, 리스폰 등 일반적인 방법으로 입장한 경우 해당 함수는 `nil`을 반환합니다. * **워프 입장**: 유저가 워프 기능으로 이동한 경우, 워프 기록 객체를 반환하며 해당 객체에서 이전 월드 ID와 현재 월드 [original] | 이동한 월드에서 입장한 유저가 워프로 입장한 것인지 `GetWarpRecord()`를 활용해 확인할 수 있습니다. 1. 새로운 스크립트 컴포넌트를 생성하고, Common에 추가합니다. 2. 월드에 입장한 유저가 워프로 입장했는지 확인할 수 있도록 아래와 같이 작성합니다. ```lua Event Handler: [server only] [service: UserService] HandleUserEnterEvent(UserEnterEvent event) { ------------- [chunk_id] | Guides:743:1

[task] | diverse_qa [title] | 월드 워프하기 [category] | Guides [rephrased] | 질문: TeleportService의 함수를 활용하면 어떤 일이 가능한가요? 답변: TeleportService의 함수를 활용하면 월드의 유저를 특정 장소로 이동시킬 수 있으며, 접속 중인 월드에서 다른 월드로 이동시킬 수도 있습니다. 질문: 접속 중인 월드에서 다른 월드로 이동하려면 두 월드의 상태는 어떻게 되어야 하나요? 답변: 접속 중인 월드와 이동할 월드 모두 공개 출시된 상태여야 이동이 가능합니다. 질문: 제작 중 상태인 월드에서 다른 월드로의 워프를 테스트할 수 있나요? 답변: 아니요, 접속 중인 월드와 이동할 월드가 [original] | # 학습 과정 소개 TeleportService의 함수를 활용해 월드에서 다른 월드로 이동할 수 있습니다. # 다른 월드로 이동하기 TeleportService는 월드의 유저를 특정 장소로 이동시킬 때 사용할 수 있을 뿐 아니라, 접속 중인 월드에서 다른 월드로 이동시킬 수 있습니다. 접속 중인 월드와 이동할 월드가 공개 출시된 상태여야 이동이 가능합니다. 이 특성으로 인해 제작 중에는 워프를 테스트할 수 없습니다. | 현재 월드 | 이동할 월드 | 워프 여부 | | --- | --- | --- | | 공개 | 공개 | * [chunk_id] | Guides:743:0

[task] | extract_knowledge [title] | 월드 워프하기 [category] | Guides [rephrased] | # TeleportService를 이용한 월드 간 이동 (Warp) ## 1. 개념 설명 `TeleportService`는 현재 접속 중인 월드에서 다른 월드로 유저를 이동시키는 기능을 제공합니다. 이 서비스는 단순히 특정 좌표로 이동시키는 것뿐만 아니라, **월드 단위**의 이동(Warp)을 지원합니다. 월드 간 이동이 가능하려면 아래 조건을 충족해야 합니다. * 현재 위치한 월드와 이동할 대상 월드 모두 **공개 출시(Public Release)** 상태여야 합니다. * 제작 중(비공개 상태)에는 워프를 테스트할 수 [original] | # 학습 과정 소개 TeleportService의 함수를 활용해 월드에서 다른 월드로 이동할 수 있습니다. # 다른 월드로 이동하기 TeleportService는 월드의 유저를 특정 장소로 이동시킬 때 사용할 수 있을 뿐 아니라, 접속 중인 월드에서 다른 월드로 이동시킬 수 있습니다. 접속 중인 월드와 이동할 월드가 공개 출시된 상태여야 이동이 가능합니다. 이 특성으로 인해 제작 중에는 워프를 테스트할 수 없습니다. | 현재 월드 | 이동할 월드 | 워프 여부 | | --- | --- | --- | | 공개 | 공개 | * [chunk_id] | Guides:743:0

[task] | knowledge_list [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | ```lua -- 문서 검토 결과: [Guides] 기본 제작 가이드 > UI 기본 UI 컴포넌트 ``` 1. `UITransformComponent`는 UI 엔티티에 반드시 포함되어야 하는 기본 컴포넌트이며, `TransformComponent`와 유사하지만 스크린 좌표에서 동작하는 차이가 있다. 2. `UITransformComponent`의 UI 좌표 프로퍼티는 UI의 위치를 설정하며, 왼쪽의 Anchor Presets 설정에 따라 필요한 Property가 달라진다. 3. `UITransformComponent`의 `UIMo [original] | # 학습 과정 소개 컴포넌트를 조합해 다양한 형태의 UI 엔티티를 구성할 수 있습니다. 이번 과정에서는 UI에서 자주 사용하는 기본 컴포넌트에 대해 알아봅니다. ##### 참고 가이드 * [UI 에디터](/docs?postId=120) * [UI 제작하기](/docs?postId=64) * [UI 엔티티 제어하기](/docs?postId=1154) # UITransformComponent [UITransformComponent](/apiReference/Components/UITransformComponent)는 UI 엔티티에 [chunk_id] | Guides:744:0

[task] | diverse_qa [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | 질문: `UITransformComponent`는 UI 엔티티에 어떤 관계가 있는 컴포넌트인가요? 답변: `UITransformComponent`는 UI 엔티티에 반드시 포함되어야 하는 기본 컴포넌트입니다. 질문: `UITransformComponent`와 `TransformComponent`의 주요 차이점은 무엇인가요? 답변: `UITransformComponent`는 스크린 좌표에서 동작한다는 점에서 `TransformComponent`와 차이가 있습니다. 질문: `UITransformComponent`의 `UIMode` 프 [original] | # 학습 과정 소개 컴포넌트를 조합해 다양한 형태의 UI 엔티티를 구성할 수 있습니다. 이번 과정에서는 UI에서 자주 사용하는 기본 컴포넌트에 대해 알아봅니다. ##### 참고 가이드 * [UI 에디터](/docs?postId=120) * [UI 제작하기](/docs?postId=64) * [UI 엔티티 제어하기](/docs?postId=1154) # UITransformComponent [UITransformComponent](/apiReference/Components/UITransformComponent)는 UI 엔티티에 [chunk_id] | Guides:744:0

[task] | wikipedia [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | **TextComponent**는 사용자 인터페이스(UI)에 텍스트를 표시하기 위한 컴포넌트입니다. 이 컴포넌트를 **SpriteGUIRendererComponent**와 함께 사용할 경우, 렌더링 순서상 **TextComponent**가 **SpriteGUIRendererComponent**보다 위에 위치하도록 그려집니다. 또한, UI 엔티티에 **TextComponent**가 포함된 상태에서는 해당 엔티티를 더블클릭하여 텍스트 내용을 직접 편집할 수 있는 편의 기능이 제공됩니다. **TextComponent**의 주요 프로퍼티 [original] | [TextComponent](/apiReference/Components/TextComponent)는 UI에 텍스트를 표시하는 컴포넌트입니다. **SpriteGUIRendererComponent**와 같이 사용할 경우 **SpriteGUIRendererComponent**보다 **TextComponent**를 위에 그립니다. UI 엔티티에 **TextComponent**가 포함되어 있으면 엔티티를 더블클릭하여 손쉽게 텍스트를 편집할 수 있습니다. 주요 프로퍼티는 다음과 같습니다. | 번호 | 항목 | 설명 | | :---: | [chunk_id] | Guides:744:1

[task] | extract_knowledge [title] | 로그 [category] | Guides [rephrased] | # 콘솔 로그 시스템 메이플스토리 월드(mLua) 개발 환경에서는 플레이 테스트, 빌드, 그리고 출시된 월드에서 발생한 스크립트 및 로직 상태 정보를 **콘솔(Console)** 을 통해 확인합니다. 콘솔은 크게 **기본 제작 가이드 콘솔**, **빌드 콘솔**, **출시 월드 콘솔** 세 가지 형태로 제공되며, 각각 정보(Info), 경고(Warn), 오류(Error) 로그를 출력합니다. ## 1. 개념 설명 콘솔은 `log(...)` 함수를 통해 기록된 로그를 시각화하는 도구입니다. 각 로그 항목은 다음과 같은 메타데이터를 [original] | 콘솔에는 플레이 테스트 도중에 발생한 정보, 경고, 오류 로그가 출력됩니다. | 번호 | 설명 | | :---: | --- | | | 콘솔 창에 남아있는 로그를 삭제합니다. Clear 오른쪽에 확장 버튼을 눌러 Clear on Play를 활성화하고, 시작 버튼을 누르면 콘솔 창에 남아있던 로그를 자동으로 삭제하고 시작합니다. | | | 버튼을 누르면 중복 로그를 하나로 합쳐줍니다. 영역에 합쳐진 총 개수가 나옵니다. | | | 실행 공간(Client / Server) 별로 로그를 모아볼 수 있습니다. | | | [chunk_id] | Guides:719:1

[task] | knowledge_list [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | 제공된 문서 내용 기반으로 추출한 핵심 사실 목록입니다. 1. **TextComponent**는 UI에 텍스트를 표시하는 컴포넌트이며, **SpriteGUIRendererComponent**와 함께 사용될 경우 **SpriteGUIRendererComponent**보다 위에 그려집니다. 2. UI 엔티티에 **TextComponent**가 포함되어 있으면 해당 엔티티를 더블클릭하여 텍스트를 편집할 수 있습니다. 3. **TextComponent**의 `Font` 프로퍼티는 **Default, Maple, Bazzi, Footbal [original] | [TextComponent](/apiReference/Components/TextComponent)는 UI에 텍스트를 표시하는 컴포넌트입니다. **SpriteGUIRendererComponent**와 같이 사용할 경우 **SpriteGUIRendererComponent**보다 **TextComponent**를 위에 그립니다. UI 엔티티에 **TextComponent**가 포함되어 있으면 엔티티를 더블클릭하여 손쉽게 텍스트를 편집할 수 있습니다. 주요 프로퍼티는 다음과 같습니다. | 번호 | 항목 | 설명 | | :---: | [chunk_id] | Guides:744:1

[task] | distill [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | # TextInputComponent 텍스트 입력을 담당하는 컴포넌트입니다. 입력된 텍스트를 화면에 표시하려면 `TextComponent`와 함께 사용해야 하며, 입력 처리 로직은 스크립트의 이벤트 핸들러에서 정의합니다. ## 주요 프로퍼티 | 프로퍼티 | 타입 | 설명 | | :--- | :--- | :--- | | `AutoClear` | `boolean` | `true`이면 입력 완료 후 입력 영역을 자동으로 초기화합니다. | | `ContentType` | `enum` | 입력 가능한 텍스트 유형을 지정합니다.<br>• [original] | [TextInputComponent](/apiReference/Components/TextInputComponent)은 텍스트 입력을 받을 수 있는 컴포넌트입니다. 주요 프로퍼티는 다음과 같습니다. | 번호 | 항목 | 설명 | | :---: | :---: | --- | | | AutoClear | True 이면 텍스트 입력 후 입력 영역을 자동으로 초기화합니다. | | | ContentType | 입력할 수 있는 텍스트 유형을 지정합니다. <ul> <li>**Standard** : 모든 입력을 허용합니다. </li> [chunk_id] | Guides:744:2

[task] | knowledge_list [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | - `TextInputComponent`는 텍스트 입력을 받을 수 있는 UI 컴포넌트이며, 입력받은 텍스트를 시각적으로 표시하기 위해 `TextComponent`와 함께 사용하는 것이 일반적입니다. - `TextInputComponent`의 `AutoClear` 프로퍼티는 Boolean 타입으로, `True`로 설정하면 텍스트 입력 완료 후 입력 영역이 자동으로 초기화됩니다. - `TextInputComponent`의 `ContentType` 프로퍼티는 허용되는 텍스트 입력 유형을 지정하며, `Standard`(모든 입력 허용), [original] | [TextInputComponent](/apiReference/Components/TextInputComponent)은 텍스트 입력을 받을 수 있는 컴포넌트입니다. 주요 프로퍼티는 다음과 같습니다. | 번호 | 항목 | 설명 | | :---: | :---: | --- | | | AutoClear | True 이면 텍스트 입력 후 입력 영역을 자동으로 초기화합니다. | | | ContentType | 입력할 수 있는 텍스트 유형을 지정합니다. <ul> <li>**Standard** : 모든 입력을 허용합니다. </li> [chunk_id] | Guides:744:2

[task] | diverse_qa [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | 질문: TextComponent는 어떤 목적으로 사용되는 컴포넌트인가요? 답변: TextComponent는 UI에 텍스트를 표시하는 컴포넌트입니다. 질문: SpriteGUIRendererComponent와 TextComponent를 함께 사용할 때 어떤 순서로 렌더링되나요? 답변: SpriteGUIRendererComponent보다 TextComponent를 위에 그립니다. 질문: UI 엔티티에 TextComponent가 포함되어 있을 때 텍스트를 편집하는 가장 쉬운 방법은 무엇인가요? 답변: 엔티티를 더블클릭하여 손쉽게 텍스트 [original] | [TextComponent](/apiReference/Components/TextComponent)는 UI에 텍스트를 표시하는 컴포넌트입니다. **SpriteGUIRendererComponent**와 같이 사용할 경우 **SpriteGUIRendererComponent**보다 **TextComponent**를 위에 그립니다. UI 엔티티에 **TextComponent**가 포함되어 있으면 엔티티를 더블클릭하여 손쉽게 텍스트를 편집할 수 있습니다. 주요 프로퍼티는 다음과 같습니다. | 번호 | 항목 | 설명 | | :---: | [chunk_id] | Guides:744:1

[task] | wikipedia [title] | 월드 워프하기 [category] | Guides [rephrased] | # 이동 월드 워프하기 이동 월드 워프는 메이플스토리 월드(MapleStory Worlds)에서 특정 유저를 다른 월드로 이동시키면서, 이동 전 월드의 데이터를 해당 유저와 함께 전달하는 기능입니다. 이 기능을 활용하면 유저가 다른 월드로 넘어간 후에도 이전 월드에서 생성하거나 수정한 정보를 수신할 수 있습니다. 데이터 전달은 `_TeleportService`의 `WarpUserToWorldAndWait()` 메서드와 `_UtilLogic` 서비스를 통해 수행됩니다. ## 데이터 전달 및 워프 실행 이동할 월드로 유저 데이터를 [original] | 유저의 데이터를 이동할 월드로 전달할 수 있습니다. 1. 새로운 스크립트 컴포넌트를 생성합니다. 2. 맵에 포탈을 추가한 뒤, 만든 스크립트 컴포넌트를 포탈에 추가합니다. 3. 아래와 같이 `WarpUserToWorldAndWait()`와 `UtilLogic`을 활용해 다른 월드에 데이터를 전달할 수 있게 작성합니다. ```lua Property: [Sync] string WorldId = "" Method: [server] void Warp(string userId) [chunk_id] | Guides:743:2

[task] | diverse_qa [title] | 월드 워프하기 [category] | Guides [rephrased] | 질문: 유저의 데이터를 이동할 월드로 전달하기 위해 포탈에 추가해야 하는 컴포넌트는 무엇인가요? 답변: 새로 생성한 스크립트 컴포넌트를 포탈에 추가해야 합니다. 질문: 다른 월드로 유저를 이동시키며 데이터를 전달하기 위해 사용하는 텔레포트 서비스 메서드는 무엇인가요? 답변: `_TeleportService:WarpUserToWorldAndWait()` 메서드를 사용합니다. 질문: 테이블 형태의 데이터를 문자열로 변환하여 워프 시 전달하기 위해 사용하는 유틸리티 로직 메서드는 무엇인가요? 답변: `_UtilLogic:TableTo [original] | 유저의 데이터를 이동할 월드로 전달할 수 있습니다. 1. 새로운 스크립트 컴포넌트를 생성합니다. 2. 맵에 포탈을 추가한 뒤, 만든 스크립트 컴포넌트를 포탈에 추가합니다. 3. 아래와 같이 `WarpUserToWorldAndWait()`와 `UtilLogic`을 활용해 다른 월드에 데이터를 전달할 수 있게 작성합니다. ```lua Property: [Sync] string WorldId = "" Method: [server] void Warp(string userId) [chunk_id] | Guides:743:2

[task] | distill [title] | Callback [category] | Guides [rephrased] | **Callback 흐름 제어** 비동기 처리 완료 시 Callback 함수를 실행하는 패턴입니다. **주의사항** - Component의 Function을 Callback으로 전달할 때는 콜론(`:`)이 아닌 점(`.`) 연산자를 사용해야 합니다. - ❌ `self:MyFunction()` - ✅ `self.MyFunction()` ```lua Property: [Sync] number Power = 0 Method: [server only] void OnBeginPlay () { local data = _D [original] | 처리가 완료되었을 때 Callback 함수를 실행하는 예시입니다. ```lua Property: [Sync] number Power = 0 Method: [server only] void OnBeginPlay () { local data = _DataStorageService:GetGlobalDataStorage("data") self.Power = 20 local callBack = function (errorcode, key) log("Power is saved") [chunk_id] | Guides:745:1

[task] | wikipedia [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | # UI 기본 컴포넌트 메이플스토리 월드 스크립트 환경에서는 다양한 컴포넌트를 조합하여 여러 형태의 UI 엔티티를 구성할 수 있습니다. 이 섹션에서는 UI 개발 시 빈번하게 사용되는 기본 컴포넌트의 구조와 동작 방식을 설명합니다. UI 에디터 사용법, UI 제작 절차, 그리고 UI 엔티티 제어에 대한 보다 상세한 내용은 각각의 독립된 가이드 문서를 참고하시기 바랍니다. ## UITransformComponent `UITransformComponent`는 모든 UI 엔티티에 필수적으로 포함되어야 하는 기본 컴포넌트입니다. 이 컴 [original] | # 학습 과정 소개 컴포넌트를 조합해 다양한 형태의 UI 엔티티를 구성할 수 있습니다. 이번 과정에서는 UI에서 자주 사용하는 기본 컴포넌트에 대해 알아봅니다. ##### 참고 가이드 * [UI 에디터](/docs?postId=120) * [UI 제작하기](/docs?postId=64) * [UI 엔티티 제어하기](/docs?postId=1154) # UITransformComponent [UITransformComponent](/apiReference/Components/UITransformComponent)는 UI 엔티티에 [chunk_id] | Guides:744:0

[task] | distill [title] | Callback [category] | Guides [rephrased] | # 흐름 제어: Callback 동기(Synchronous)와 비동기(Asynchronous) 처리 방식의 차이 및 비동기 작업 완료 시점을 알리는 Callback의 개념과 활용법을 설명합니다. ## 동기 vs 비동기 * **동기(Synchronous)**: 이전 작업이 완료될 때까지 대기 후 순차적으로 다음 작업을 실행합니다. 전체 소요 시간은 각 작업 시간의 합과 같습니다. * **비동기(Asynchronous)**: 특정 작업(예: 외부 데이터 통신, IO 처리)을 별도 프로세스에 위임하고, 그 동안 다른 로직을 [original] | # 학습 과정 소개 로직은 기본적으로 순차적으로 진행되지만 그렇지 않은 경우도 종종 있습니다. 작업을 순차적으로 진행하는 동기 방식과 그렇게 진행하지 않는 비동기 방식의 차이점을 살펴보고, 비동기 방식을 활용하는데 필요한 Callback에 대해서도 살펴봅시다. # 동기, 비동기 로직을 처리하는 방식에는 두 가지가 있습니다. 1. 동기(Synchronous) 2. 비동기(Asynchronous) **동기 방식(Synchronous)**은 로직을 순서대로 처리합니다. 이를 실생활에 대입해봅시다. 톰은 집 대청소를 하는 날입니다 [chunk_id] | Guides:745:0

[task] | knowledge_list [title] | Callback [category] | Guides [rephrased] | ```lua -- 문서에서 추출한 핵심 사실 목록 ``` 1. 로직 처리 방식은 동기(Synchronous) 방식과 비동기(Asynchronous) 방식으로 나뉩니다. 2. 동기 방식은 이전 작업이 끝날 때까지 대기한 후 순차적으로 다음 작업을 처리하며, 전체 처리 종료 시점을 예측할 수 있습니다. 3. 비동기 방식은 작업을 순차적으로 처리하지 않으며, 특정 작업은 별도의 작업으로 병행 처리되어 외부 요인(예: IO, DataStorage)으로 인한 대기 시간을 줄일 수 있습니다. 4. 메이플스토리 월드에서 외부 데이터 주고받기나 [original] | # 학습 과정 소개 로직은 기본적으로 순차적으로 진행되지만 그렇지 않은 경우도 종종 있습니다. 작업을 순차적으로 진행하는 동기 방식과 그렇게 진행하지 않는 비동기 방식의 차이점을 살펴보고, 비동기 방식을 활용하는데 필요한 Callback에 대해서도 살펴봅시다. # 동기, 비동기 로직을 처리하는 방식에는 두 가지가 있습니다. 1. 동기(Synchronous) 2. 비동기(Asynchronous) **동기 방식(Synchronous)**은 로직을 순서대로 처리합니다. 이를 실생활에 대입해봅시다. 톰은 집 대청소를 하는 날입니다 [chunk_id] | Guides:745:0

[task] | wikipedia [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | **TextInputComponent**는 텍스트 입력을 처리하기 위한 컴포넌트입니다. 이 컴포넌트는 주로 **TextComponent**와 함께 사용되며, **TextInputComponent**가 사용자로부터 텍스트를 수신하고 **TextComponent**가 해당 텍스트를 화면에 표시하는 역할을 분담합니다. 입력된 텍스트에 대한 구체적인 처리 로직은 스크립트를 통해 정의해야 합니다. **TextInputComponent**의 주요 프로퍼티와 그 동작 방식은 다음과 같습니다. 첫째, **AutoClear** 프로퍼티는 텍스트 [original] | [TextInputComponent](/apiReference/Components/TextInputComponent)은 텍스트 입력을 받을 수 있는 컴포넌트입니다. 주요 프로퍼티는 다음과 같습니다. | 번호 | 항목 | 설명 | | :---: | :---: | --- | | | AutoClear | True 이면 텍스트 입력 후 입력 영역을 자동으로 초기화합니다. | | | ContentType | 입력할 수 있는 텍스트 유형을 지정합니다. <ul> <li>**Standard** : 모든 입력을 허용합니다. </li> [chunk_id] | Guides:744:2

[task] | diverse_qa [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | 질문: TextInputComponent는 어떤 역할을 하는 컴포넌트인가요? 답변: TextInputComponent는 텍스트 입력을 받을 수 있는 컴포넌트입니다. 질문: AutoClear 프로퍼티가 True로 설정되어 있을 때 발생하는 현상은 무엇인가요? 답변: 텍스트 입력 후 입력 영역을 자동으로 초기화합니다. 질문: ContentType의 'IntegerNumber' 옵션을 선택하면 어떤 입력만 허용되나요? 답변: 숫자만 입력할 수 있습니다. 질문: ContentType의 'DecimalNumber' 옵션은 어떤 문자열 [original] | [TextInputComponent](/apiReference/Components/TextInputComponent)은 텍스트 입력을 받을 수 있는 컴포넌트입니다. 주요 프로퍼티는 다음과 같습니다. | 번호 | 항목 | 설명 | | :---: | :---: | --- | | | AutoClear | True 이면 텍스트 입력 후 입력 영역을 자동으로 초기화합니다. | | | ContentType | 입력할 수 있는 텍스트 유형을 지정합니다. <ul> <li>**Standard** : 모든 입력을 허용합니다. </li> [chunk_id] | Guides:744:2

[task] | extract_knowledge [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | # UI 컴포넌트: TextComponent, ButtonComponent, TextInputComponent ## 1. 개념 설명 ### TextComponent `TextComponent`는 UI 엔티티에 텍스트를 표시하기 위한 컴포넌트입니다. * **렌더링 우선순위**: `SpriteGUIRendererComponent`와 함께 사용될 때, `TextComponent`는 `SpriteGUIRendererComponent`보다 위에 그려집니다. * **편집 방식**: UI 엔티티에 `TextComponent`가 포함되 [original] | [TextComponent](/apiReference/Components/TextComponent)는 UI에 텍스트를 표시하는 컴포넌트입니다. **SpriteGUIRendererComponent**와 같이 사용할 경우 **SpriteGUIRendererComponent**보다 **TextComponent**를 위에 그립니다. UI 엔티티에 **TextComponent**가 포함되어 있으면 엔티티를 더블클릭하여 손쉽게 텍스트를 편집할 수 있습니다. 주요 프로퍼티는 다음과 같습니다. | 번호 | 항목 | 설명 | | :---: | [chunk_id] | Guides:744:1

[task] | knowledge_list [title] | Callback [category] | Guides [rephrased] | 1. `Property` 블록에서 `[Sync]` 속성을 가진 `number` 타입의 `Power` 변수를 선언할 수 있으며, 초기값은 `0`입니다. 2. `[server only]` 실행 공간의 `OnBeginPlay` 메서드에서 `_DataStorageService:GetGlobalDataStorage("data")`를 호출하여 "data" 이름의 전역 데이터 스토리지 객체를 조회합니다. 3. `[server only]` 환경에서 `self.Power`를 `20`으로 설정한 후, `data:SetAsync("Power", tos [original] | 처리가 완료되었을 때 Callback 함수를 실행하는 예시입니다. ```lua Property: [Sync] number Power = 0 Method: [server only] void OnBeginPlay () { local data = _DataStorageService:GetGlobalDataStorage("data") self.Power = 20 local callBack = function (errorcode, key) log("Power is saved") [chunk_id] | Guides:745:1

[task] | extract_knowledge [title] | 기본 UI 컴포넌트 [category] | Guides [rephrased] | # UI 기본 컴포넌트 ## 1. 개념 설명 MapleStory Worlds에서 UI 엔티티는 다양한 컴포넌트를 조합하여 구성됩니다. UI를 제작하기 위해 반드시 포함해야 하는 핵심 컴포넌트와, UI에 시각적 요소(이미지, 텍스트)를 출력하는 컴포넌트들이 존재합니다. * **UITransformComponent**: UI 엔티티의 위치와 변형을 제어하는 필수 컴포넌트입니다. 일반적인 `TransformComponent`와 유사하지만, 3D 월드 좌표가 아닌 **스크린 좌표** 기준으로 동작합니다. * **SpriteGU [original] | # 학습 과정 소개 컴포넌트를 조합해 다양한 형태의 UI 엔티티를 구성할 수 있습니다. 이번 과정에서는 UI에서 자주 사용하는 기본 컴포넌트에 대해 알아봅니다. ##### 참고 가이드 * [UI 에디터](/docs?postId=120) * [UI 제작하기](/docs?postId=64) * [UI 엔티티 제어하기](/docs?postId=1154) # UITransformComponent [UITransformComponent](/apiReference/Components/UITransformComponent)는 UI 엔티티에 [chunk_id] | Guides:744:0

[task] | extract_knowledge [title] | Callback [category] | Guides [rephrased] | # 흐름 제어: Callback ## 개념 설명 비동기(async) 처리가 완료되었을 때 특정 함수를 실행하기 위해 사용하는 메커니즘입니다. 비동기 함수는 호출 즉시 반환되며, 작업이 실제로 끝나는 시점에 전달된 Callback 함수가 실행됩니다. ## API 사용법 비동기 API를 호출할 때 마지막 인자로 Callback 함수를 전달합니다. 제공된 예시에서는 `_DataStorageService`의 `SetAsync` 메서드를 사용하여 글로벌 데이터 저장소에 값을 저장하고, 저장 완료 시 Callback을 실행합니다. ## [original] | 처리가 완료되었을 때 Callback 함수를 실행하는 예시입니다. ```lua Property: [Sync] number Power = 0 Method: [server only] void OnBeginPlay () { local data = _DataStorageService:GetGlobalDataStorage("data") self.Power = 20 local callBack = function (errorcode, key) log("Power is saved") [chunk_id] | Guides:745:1

[task] | distill [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | # TweenLogic을 활용한 엔티티 제어 **TweenLogic**은 엔티티의 위치, 크기, 회전을 여러 프레임에 걸쳐 변화시키는 함수를 제공합니다. ## TweenLogic vs TweenComponent - **TweenLine/Circular/FloatingComponent**: 스크립트 없는 애니메이션, 네트워크 최적화로 멀티플레이 다수 엔티티 Tween 시 성능 우위. - **TweenLogic**: 동적 트윈 필요 시 사용. 반환된 `Tweener` 객체를 통해 `Reverse`, `Delay` 기능 및 `SetO [original] | # 학습 과정 소개 [TweenLogic](/apiReference?postId=700)을 사용해 엔티티를 확대, 축소, 회전, 이동시킬 수 있습니다. [Tweener](/apiReference?postId=714)를 함께 확인해보세요. # TweenLogic 개념 **TweenLogic**은 엔티티에 애니메이션 효과를 줄 수 있는 다양한 함수를 제공합니다. 여러 프레임에 걸쳐 Entity의 위치나 크기를 변화시키거나 회전시킬 수 있습니다. 다양한 함수를 사용해 엔티티를 Tween 시켜 애니메이션을 한 번의 함수 호출로 간단 [chunk_id] | Guides:746:0

[task] | distill [title] | TweenLogic을 활용해 엔티티 제어하기 [category] | Guides [rephrased] | `_TweenLogic:MoveTo()`로 엔티티를 이동시킵니다. **사용 순서** 1. 목적지(`Vector2`), 시간(`number`), `EaseType` 지정 2. 반환된 `Tweener` 객체의 `Delay`, `LoopType`, `LoopCount`, `AutoDestroy` 설정 **주의사항** - `AutoDestroy = false` 또는 `LoopCount = -1` 시 Tweener가 자동 파괴되지 않아 객체가 누적되고 성능 저하를 유발할 수 있습니다. - 반드시 컴포넌트의 `OnEndPlay` 또는 대상 [original] | `MoveTo()`를 활용해 엔티티를 이동시킬 수 있습니다. 1. 새로운 컴포넌트를 생성하고, 특정 엔티티에 추가합니다. 2. 엔티티가 이동할 목적지, 시간, EaseType을 작성합니다. 3. 반환하는 Tweener의 지연 시간, 반복 타입, 횟수, 자동 파괴 여부 처리를 함께 작성합니다. 자동 파괴를 false로 하거나 LoopCount를 -1로 설정해 트윈이 계속 실행되도록 하는 경우 의도치 않게 더 이상 작동하지 않는 Tweener 객체가 쌓일 수도 있습니다. 이러한 Tweener 객체가 지나치게 많아지면 월드에 성능 하 [chunk_id] | Guides:746:1

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