references/component-api.md
# UI Component API Reference
Full list of properties, methods, and events per UI component. Use as a lookup when calling builder `patchComponent(...)` / `addComponent(...)`, or when accessing a component from `.mlua` runtime code (`property ButtonComponent btn = "uuid"` → `self.btn.Enable = false`).
Before reading or writing a UI component field in `.mlua`, verify the exact field name here. Do not infer field names from Unity, UGUI, HTML, or other UI frameworks.
> **Authoring `.ui` files**: this reference describes **what fields exist**. To **set** them, call the builder (`scripts/msw_ui_builder.cjs`; protocol in [`../../msw-general/references/builder-protocol-ui.md`](../../msw-general/references/builder-protocol-ui.md) §3, loaded with the [`builder-protocol.md`](../../msw-general/references/builder-protocol.md) core — unified call entry point). Do not hand-edit `.ui` JSON.
---
## Component Selection Guide
**Selection criteria (which/when/why)**. For exact field/method/event tables, jump to the component sections below.
### Quick Decision Tree
```
What do you want to display?
├── Text → TextGUIRendererComponent (TextComponent is legacy)
├── Image → SpriteGUIRendererComponent
├── Avatar → AvatarGUIRendererComponent
├── Input field → TextGUIRendererInputComponent
└── Group items → Empty Panel with only UITransform (arrange as children)
What do you want the user to interact with?
├── Simple click (including hover color change) → ButtonComponent
├── Press, drag, multi-touch → UITouchReceiveComponent
├── Slider → SliderComponent
├── Directional input (mobile) → JoystickComponent
└── Progress bar (display only) → Linear HP/MP: SpriteGUIRenderer(Sliced + width resize); radial: SpriteGUIRenderer(Filled)
Do you need to display a list?
├── 10 or fewer items, simple → Manual placement + reuse empty Panels
├── Tens to hundreds, structured → ScrollLayoutGroupComponent
└── Thousands, performance-critical → GridViewComponent (virtualized)
Clipping or shape masking?
└── MaskComponent (e.g., circular avatar frame)
Opacity or grouped interaction control?
└── CanvasGroupComponent
```
Entity selection priority:
- Colored or imaged background + centered text + click handling → use one `b.button(...)` entity.
- Use separate `b.sprite(...)` + `b.text(...)` only when the text/background must be independent children, or when no click handling is needed.
- Repeated same-shape tiles such as cards, board cells, inventory slots, and menu tabs should default to `b.button(...)`.
### Choosing Between Similar Components
#### ButtonComponent vs UITouchReceiveComponent
| Criteria | ButtonComponent | UITouchReceiveComponent |
|------|----------------|------------------------|
| Hover/pressed visual feedback | **Automatic** (via Transition settings) | Must implement manually |
| Event types | Click / StateChange / Pressed | Down/Up/Drag/Enter/Exit and **7 more** |
| Drag | Not supported | **Supported** |
| Multi-touch | Not supported | **Supported** (distinguishes by TouchId) |
| Keyboard mapping | **Supported** (`KeyCode`) | Not supported |
**How to choose**:
- "Click a button to execute something" → Button
- "Drag to move an item" → UITouchReceive
- "Scroll a map" → UITouchReceive
- "Skill button that also triggers with keyboard R" → Button + `KeyCode`
#### ScrollLayoutGroupComponent vs GridViewComponent
| Criteria | ScrollLayoutGroup | GridView |
|------|-------------------|----------|
| Item count | Up to hundreds | **Unlimited** (virtualized) |
| Render cost | Renders all items | Only renders visible items |
| Item composition | Place children directly in `.ui` | Clones a single `ItemEntity` template |
| Fixed size required | Only for Grid type | **Always** |
| Implementation difficulty | Easy | Requires `OnRefresh` callback |
**Decision criteria**: If the item count exceeds 100 or may grow dynamically, **always use GridView**. Inventory, chat logs, and rankings should default to GridView. Use ScrollLayoutGroup only for static lists of 10 or fewer items, such as settings page tabs.
#### SliderComponent vs SpriteGUIRendererComponent(Filled)
Both can express a "fill" effect, but they serve different purposes.
| Criteria | Slider | Sprite(Filled) |
|------|--------|----------------|
| User interaction (drag) | **Supported** | Not supported |
| Value event | `SliderValueChangedEvent` | None |
| Direction | 4 directions | **Horizontal/Vertical/Radial** |
| Circular gauge | Not supported | **Supported** (Radial) |
| 9-slice support | Limited | Built-in |
**How to choose**:
- Volume/sensitivity control → Slider
- HP/MP bar (read-only) → Sprite(**Sliced**) fill with `image_ruid = "f0911af597259044aa624a11332c0595"`, resize width (not Slider)
- Cooldown circular gauge → Sprite(Filled Radial) — radial is the only case that needs Filled
- Experience bar → Sprite(**Sliced**) fill, resize width + Tween on value change
> For linear bars, prefer **Sliced + width resize** over `Filled`: `Filled` clips the sprite's UVs, which warps any 9-slice border, whereas resizing a Sliced fill keeps the rounded corners/borders intact at every value. Reserve `Filled` for radial sweeps.
#### TextGUIRendererComponent — Alignment
`TextGUIRendererComponent` uses two independent axes: `HorizontalAlignment` (`TextHorizontalAlignmentOption`) and `VerticalAlignment` (`TextVerticalAlignmentOption`). Defaults are `Center(2)` + `Middle(512)` — already centered, no extra setup needed.
Common combinations:
- Title/centered text → `HorizontalAlignment = Center(2)` + `VerticalAlignment = Middle(512)` (default)
- Left-aligned description → `HorizontalAlignment = Left(1)` + `VerticalAlignment = Middle(512)`
- Right-aligned numbers (e.g., scores) → `HorizontalAlignment = Right(4)` + `VerticalAlignment = Middle(512)`
Additional considerations:
- `BestFit = true` + `MinSize`/`MaxSize` → Automatically adjusts font size to fit the Rect.
- `Overflow`: `Truncate(2)` clips / `Ellipsis(1)` shows `...` / `Overflow(0)` lets text flow outside
- `SizeFit = true` → Rect automatically resizes to fit text. **Be careful with dynamic text + background Sprite** (the background won't resize along with it)
- `ColorGradient = true` + `GradientMode` → per-corner or axis gradient color
#### SpriteGUIRenderer — ImageType Selection
| Type | Value | Use Case |
|------|---|------|
| Simple | 0 | Regular image. Stretching causes distortion |
| **Sliced** | 1 | 9-slice. Recommended for button/panel backgrounds |
| Tiled | 2 | Repeating pattern backgrounds |
| Filled | 3 | **Radial** cooldowns / circular gauges only |
**Button backgrounds, dialog backgrounds, panels, and linear gauge bars should almost always use Sliced**. The sprite asset must have 9-slice borders configured for this to work. For a linear gauge (HP/MP/EXP), use a Sliced fill anchored to the left edge and drive the fill by resizing its width at runtime — reserve `Filled` for radial sweeps that a 9-slice cannot represent.
Asset-side pivot / 9-slice border metadata is not stored in `.ui`; set it on the sprite resource through `msw-mcp`'s `asset_update_resource_storage_info` (`properties: [{ key, value }]` — `pivot_x`, `pivot_y`, `border_left`, `border_right`, `border_top`, `border_bottom`, `filter_mode`, `wrap_mode`). After that, the `.ui` side still needs `SpriteGUIRendererComponent.Type = Sliced(1)` to render the borders.
> [!WARNING]
> Two Sliced panels whose borders cross paint a doubled / muddy frame seam. Keep sibling Sliced frames either fully nested (one inside the other) or separated by a margin so their borders never touch. `ui_lint` rule `L026` catches real border collisions, but only when you pass the sprites' border sizes via `--borders <ruid-border-map.json>` (mapping each `ImageRUID.DataId` to its `{ left, bottom, right, top }` px). Border thickness lives in the sprite asset, not the `.ui`, so the offline lint can't see it on its own and stays silent without that map. Deliberate layering (fanned cards, stacked art) is safe to ignore.
### Combination Patterns (Common Component Groupings)
Summary of component combinations to attach per entity. For builder call code and ASCII trees, see [`layout-recipes.md`](layout-recipes.md). For runtime code, see [`runtime-patterns.md`](runtime-patterns.md).
| Pattern | Core Structure | Builder Recipe | Runtime Code |
|------|-----------|------------|-----------|
| **Button (icon + text)** | Single entity with `Sprite(Sliced) + Button`. Separate Icon/Label as children — hover/pressed colors apply only to the background Sprite, keeping text stable | [`layout-recipes.md`](layout-recipes.md) Recipe 1 | [`runtime-patterns.md`](runtime-patterns.md) §1, §6 |
| **Clickable tile/card** | Single `b.button(...)` entity with `SpriteGUIRendererComponent + TextGUIRendererComponent + ButtonComponent`; runtime changes use `SpriteGUIRendererComponent.Color/ImageRUID` and `TextGUIRendererComponent.Text` | [`layout-recipes.md`](layout-recipes.md) Recipe 8 | [`runtime-patterns.md`](runtime-patterns.md) §1, §6 |
| **HP/MP bar** | Background Sprite + child Fill (`middle-left` anchor, pivot `(0, 0.5)`, `SpriteGUIRenderer Type=Sliced`) | [`layout-recipes.md`](layout-recipes.md) Recipe 1 | [`runtime-patterns.md`](runtime-patterns.md) §3 (`fillTransform.RectSize = Vector2(fullWidth*ratio, h)` — resize width, not FillAmount) |
| **Avatar profile (circular)** | `Sprite(circular border) + Mask(Shape=Circle)` + child `AvatarGUIRenderer` | — | — |
| **Modal popup** | Root: `UITransform(stretch) + UIGroup(GroupType=2, Order=10) + CanvasGroup(BlocksRaycasts=true)`. Children: semi-transparent Dimmer (`raycast=true`, blocks input to HUD behind) + Panel(middle-center) | [`layout-recipes.md`](layout-recipes.md) Recipe 2 | [`runtime-patterns.md`](runtime-patterns.md) §1 |
| **Scroll list (~50 items)** | `ScrollLayoutGroup(Type=Vertical/Horizontal/Grid) + Mask(Shape=Rect)`. Children are auto-arranged | [`layout-recipes.md`](layout-recipes.md) Recipe 6 | [`runtime-patterns.md`](runtime-patterns.md) §4, §8 |
| **Large list (virtualized)** | `GridView` + `ItemEntity = reference to child template entity` + `OnRefresh = fn(index, entity)`. Template entity has `enable=False`. | [`layout-recipes.md`](layout-recipes.md) Recipe 5 | [`runtime-patterns.md`](runtime-patterns.md) §5 |
> **GridView caution** — `OnRefresh` is called frequently during scrolling. Do not call DataStorage; read only from cached tables.
### Rarely Used Components
| Component | When to Use |
|----------|----------|
| `JoystickComponent` | Mobile movement controls only. Not needed for PC-only games |
| `ChatComponent` | When using the MSW built-in chat UI. For custom chat, use a Text+Input combination |
| `UILogic` methods | World↔UI coordinate conversion. Needed for damage floating text and nametags |
| Individual element alpha | Do not use. For group-level fading, use `CanvasGroup.GroupAlpha` |
### Component Attachment Checklist
When creating a new entity:
- [ ] `UITransformComponent` is required (for all UI entities)
- [ ] If it's the `.ui` root, add `UIGroupComponent + CanvasGroupComponent`; never add `UIGroupComponent` to inner containers
- [ ] If it's an image, add `SpriteGUIRendererComponent` and set `ImageRUID` (invisible if left empty)
- [ ] If it's a button, add `ButtonComponent` + background Sprite on the same entity; Label as a child
- [ ] If it's a list, decide the scroll type first (hundreds or more → GridView)
- [ ] To block input, use `CanvasGroup.Interactable` or `BlocksRaycasts`
- [ ] If it's text, use `TextGUIRendererComponent`; default alignment is already Center+Middle
---
## UITransformComponent
Manages position, size, anchors, rotation, and scale. Required on every UI entity.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `anchoredPosition` | Vector2 | (0, 0) | Offset relative to the anchor (**use only this for UI positioning**) |
| `RectSize` | Vector2 | (100, 100) | UI size |
| `AlignmentOption` | AlignmentType | Center(0) | Anchor preset (0~15; see [`ui-fundamentals.md`](ui-fundamentals.md) §6 for full mapping) |
| `AnchorsMin` | Vector2 | (0.5, 0.5) | Bottom-left anchor (normalized) |
| `AnchorsMax` | Vector2 | (0.5, 0.5) | Top-right anchor (normalized) |
| `OffsetMin` | Vector2 | (0.5, 0.5) | Offset relative to AnchorsMin |
| `OffsetMax` | Vector2 | (0.5, 0.5) | Offset relative to AnchorsMax |
| `Pivot` | Vector2 | (0.5, 0.5) | Reference for rotation / scale |
| `UIScale` | Vector3 | (1, 1, 1) | Scale |
| `UIRotation` | Vector3 | (0, 0, 0) | Euler-angle rotation |
| `UIMode` | UIModeType | None(0) | Screen(1) or World(2) |
| `Position` | Vector3 | (0, 0, 0) | Coordinates relative to parent (do not set directly in UI) |
| `WorldPosition` | Vector3 | -- | World coordinates (read-only) |
| `ActivePlatform` | PlatformType | All | Active platform |
### Methods
| Method | Returns | Description |
|--------|------|------|
| `Rotate(float angle)` | void | Counterclockwise rotation |
| `Translate(float deltaX, float deltaY)` | void | Relative translation |
| `ToWorldPoint(Vector3 local)` | Vector3 | Local -> world coordinate conversion |
| `ToLocalPoint(Vector3 world)` | Vector3 | World -> local coordinate conversion |
| `ToWorldDirection(Vector3 local)` | Vector3 | Local -> world direction conversion |
| `ToLocalDirection(Vector3 world)` | Vector3 | World -> local direction conversion |
| `GetWorldCorners()` | Vector2[] | World coordinates of the rectangle's four corners (BL, TL, TR, BR) |
---
## UIGroupComponent
Defines a UI screen group. Attach only to the `.ui` root entity; use `UITransform` / `CanvasGroup` containers inside the tree.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `DefaultShow` | boolean | true | Whether to show at start |
| `GroupOrder` | int32 | 0 | Z order (higher is on top) |
| `GroupType` | UIGroupType | UIType(2) | DefaultType(1), UIType(2) |
---
## CanvasGroupComponent
Controls the group's overall transparency and interaction.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `GroupAlpha` | float | 1.0 | Transparency including children (0-1) |
| `Interactable` | boolean | true | Whether to respond to input |
| `BlocksRaycasts` | boolean | true | Block touches on UI behind |
---
## Commonly Mistaken Unity Analogs
| Intended action | Do not assume | MSW field / pattern |
|------|------|------|
| Disable a specific UI component or button | `Interactable` on `ButtonComponent` | `ButtonComponent.Enable = false` for the component, or `Entity.Enable = false` for the whole entity/tree |
| Disable a whole popup/panel/tree | `gameObject.SetActive(...)` / `isActive` | `Entity.Enable = false` / `true` |
| Block or allow interaction for a group | `ButtonComponent.Interactable` | `CanvasGroupComponent.Interactable` and `CanvasGroupComponent.BlocksRaycasts` |
| Change text string | `text` | `TextGUIRendererComponent.Text` |
| Change text color | `color` | `TextGUIRendererComponent.FontColor` |
| Change sprite tint | `color` | `SpriteGUIRendererComponent.Color` |
`Enable` is inherited from the base component and is valid on UI components. `Interactable` is a `CanvasGroupComponent` property, not a `ButtonComponent` property.
---
## ButtonComponent
Interactive button. Supports state-transition effects.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `Transition` | TransitionType | ColorTint(1) | None(0), ColorTint(1), SpriteSwap(2) |
| `Colors` | TransitionColorSet | -- | Per-state colors (Normal/Highlighted/Pressed/Selected/Disabled) |
| `ImageRUIDs` | TransitionRUIDSet | -- | Per-state images (when SpriteSwap) |
| `KeyCode` | KeyboardKey | -- | Keyboard binding |
| `OrderInLayer` | int32 | 0 | Render priority |
| `OverrideSorting` | boolean | false | Whether to manually use SortingLayer / OrderInLayer |
| `Selectable` | boolean | true | Whether the selected state can be maintained |
| `SortingLayer` | string | "UI" | Render layer |
### Events
| Event | Description |
|--------|------|
| `ButtonClickEvent` | Click (carries Entity property) |
| `ButtonStateChangeEvent` | State change (state: ButtonState) |
| `ButtonPressedEvent` | Enter pressed state |
---
## TextGUIRendererComponent
Displays text in UI space. Use with `UITransformComponent`. **Preferred text component for new UI.**
Alignment defaults to `Center + Middle` — no explicit alignment setup needed for centered text.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `Text` | string | "Text" | Text to display |
| `FontSize` | float | 20 | Font size |
| `FontColor` | Color | black | Text color |
| `Font` | string | "Default" | Font name: `"Default"`, `"Maple"`, `"Bazzi"`, `"Football"` |
| `FontStyle` | FontStyleType | Normal(0) | Normal(0), Bold(1), Italic(2), Underline(4) — bit flags, combinable |
| `HorizontalAlignment` | TextHorizontalAlignmentOption | Center(2) | Left(1), Center(2), Right(4), Justified(8) |
| `VerticalAlignment` | TextVerticalAlignmentOption | Middle(512) | Top(256), Middle(512), Bottom(1024) |
| `IsRichText` | boolean | true | Rich-text tag support |
| `Overflow` | TextOverflowMode | Overflow(0) | Overflow(0), Ellipsis(1), Truncate(2), Page(3) |
| `BestFit` | boolean | false | Auto-fit size |
| `MinSize` | float | 10 | BestFit minimum size |
| `MaxSize` | float | 40 | BestFit maximum size |
| `Padding` | RectOffset | 0,0,0,0 | Inner padding |
| `SizeFit` | boolean | false | Auto-fit to content size |
| `UseConstraintX` | boolean | false | Constrain text width to `ConstraintX` |
| `ConstraintX` | float | 100 | Max text width when `UseConstraintX` is true |
| `UseConstraintY` | boolean | false | Constrain text height to `ConstraintY` |
| `ConstraintY` | float | 100 | Max text height when `UseConstraintY` is true |
| `Underlay` | boolean | false | Drop shadow |
| `UnderlayColor` | Color | black | Shadow color |
| `UnderlayOffsetX` | float | 0 | Shadow X offset |
| `UnderlayOffsetY` | float | 0 | Shadow Y offset |
| `UnderlayDilate` | float | 0 | Shadow outline thickness |
| `UnderlaySoftness` | float | 0 | Shadow blur softness |
| `OutlineColor` | Color | black | Outline color |
| `OutlineWidth` | float | 0 | Outline thickness (0 = no outline) |
| `FaceDilate` | float | 0 | Text face thickness (positive = thicker) |
| `FaceSoftness` | float | 0 | Text face corner softness |
| `ColorGradient` | boolean | false | Enable color gradient |
| `GradientMode` | GradientModes | Single(0) | Single(0), Horizontal(1), Vertical(2), FourCorners(3) |
| `TopLeftColor` | Color | white | Gradient top-left corner |
| `TopRightColor` | Color | white | Gradient top-right corner |
| `BottomLeftColor` | Color | white | Gradient bottom-left corner |
| `BottomRightColor` | Color | white | Gradient bottom-right corner |
| `TextSpriteSetId` | string | "" | TextSpriteSet dataset entry id |
| `TextStyleSheetId` | string | "" | TextStyleSheet dataset entry id |
| `Page` | int32 | 1 | Current page (when `Overflow = Page(3)`) |
### Methods
| Method | Returns | Description |
|--------|------|------|
| `GetLocalizedText()` | string | Text in the current language. Requires `Text` to hold a locale key; set the key flag in the Maker editor, not in script. |
| `GetPreferredHeight(string text, float width)` | float | Compute required height |
| `GetPreferredWidth(string text)` | float | Compute required width |
> Localization is opt-in via a Maker-editor-only flag on the component (not a runtime `.mlua` property). To localize, set the flag and put a locale key in `Text` from the Maker editor, then read the resolved string at runtime via `GetLocalizedText()`.
---
## TextComponent (Legacy)
> ⚠️ **Legacy — do not use for new UI text; use `TextGUIRendererComponent` above.** `TextComponent` only persists in older `.ui` files. Its key difference is a single 9-cell `Alignment` field (`TextAlignmentType`, default `UpperLeft(0)` — *not* centered), instead of the separate `HorizontalAlignment` / `VerticalAlignment` axes. If you must edit legacy text, set `Alignment` explicitly and read the remaining field names directly from the existing `.ui`.
---
## SpriteGUIRendererComponent
Renders 2D images / sprites.
> See the `msw-sprite-ruid` skill for `ImageRUID` native type support (`sprite` / `animationclip`), `animationclip` animated UI, and the `thumbnail://` prefix for rendering `skeleton` / `avataritem` thumbnails (especially useful for avatar item icons).
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `ImageRUID` | DataRef | -- | Image resource reference |
| `Color` | Color | white | Tint color |
| `Type` | ImageType | Simple(0) | Simple(0), Sliced(1), Tiled(2), Filled(3) |
| `FillAmount` | float | 1.0 | Fill amount (Filled type, 0-1) |
| `FillMethod` | FillMethodType | Horizontal(0) | Fill direction |
| `FillOrigin` | int32 | 0 | Fill origin |
| `FillClockWise` | boolean | true | Clockwise fill |
| `FlipX` | boolean | false | Flip horizontally |
| `FlipY` | boolean | false | Flip vertically |
| `RaycastTarget` | boolean | true | Receive touch / click |
| `PlayRate` | float | 1.0 | Animation speed |
| `StartFrameIndex` | int32 | 0 | Animation start frame |
| `EndFrameIndex` | int32 | -1 | Animation end frame |
| `OrderInLayer` | int32 | 0 | Render priority |
| `PreserveSprite` | PreserveSpriteType | None(0) | None(0) stretch to RectSize / AspectOnly(1) fit keeping ratio / NativeSize(2) native px |
| `MaterialId` | string | "" | Custom material id (advanced shader effects) |
### Methods
| Method | Returns | Description |
|--------|------|------|
| `SetAlpha(float alpha)` | void | Set transparency |
| `SetNativeSize()` | void | Reset to native size |
| `ChangeMaterial(string materialId)` | void | Apply a material |
### Events
| Event | Description |
|--------|------|
| `SpriteGUIAnimPlayerStartEvent` | Animation start |
| `SpriteGUIAnimPlayerChangeFrameEvent` | Frame change |
| `SpriteGUIAnimPlayerEndEvent` | Animation end |
---
## ScrollLayoutGroupComponent
Scrollable list / grid layout.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `Type` | LayoutGroupType | Horizontal(0) | Horizontal(0), Vertical(1), Grid(2). `UIBuilder.scrollLayout()` defaults to Vertical(1) for list authoring. |
| `Spacing` | float | 0 | Item spacing (H/V) |
| `GridSpacing` | Vector2 | (0, 0) | Item spacing (Grid) |
| `Padding` | RectOffset | 0,0,0,0 | Outer padding |
| `CellSize` | Vector2 | (100, 100) | Fixed item size (Grid) |
| `ConstraintCount` | int32 | 1 | Fixed row / column count |
| `ScrollBarVisible` | ScrollBarVisibility | AlwaysShow(0) | AlwaysShow(0), AutoHide(1), Hide(2) |
| `ScrollBarThickness` | float | 20.0 | Scrollbar thickness |
| `ScrollBarHandleColor` | Color | (0.5, 0.5, 0.5, 1) | Handle color |
| `ScrollBarHandleImageRUID` | DataRef | -- | Handle image |
| `ScrollBarBackgroundColor` | Color | (1, 1, 1, 0.4) | Background color |
| `ScrollBarBgImageRUID` | DataRef | -- | Background image (note: NOT `ScrollBarBackgroundImageRUID`) |
| `HorizontalScrollBarDirection` | HorizontalScrollBarDirection | LeftToRight(0) | Horizontal scrollbar direction |
| `VerticalScrollBarDirection` | VerticalScrollBarDirection | BottomToTop(2) | Vertical scrollbar direction |
| `ChildAlignment` | ChildAlignmentType | UpperLeft(0) | Child alignment for `Horizontal`/`Vertical` types |
| `ReverseArrangement` | boolean | false | Reverse child order for `Horizontal`/`Vertical` types |
| `GridChildAlignment` | ChildAlignmentType | UpperLeft(0) | Child alignment for `Grid` type |
| `StartCorner` | GridLayoutCorner | UpperLeft(0) | Grid start corner |
| `StartAxis` | GridLayoutAxis | Horizontal(0) | Grid child add direction |
| `Constraint` | GridLayoutConstraint | Flexible(0) | Grid constraint mode |
### Methods
| Method | Returns | Description |
|--------|------|------|
| `GetScrollNormalizedPosition()` | Vector2 | Current scroll position (0-1) |
| `SetScrollNormalizedPosition(UITransformAxis, float)` | void | Set scroll position |
| `SetScrollPositionByItemIndex(int32)` | void | Scroll to an item |
| `ResetScrollPosition(UITransformAxis)` | void | Reset to initial position |
### Events
| Event | Description |
|--------|------|
| `ScrollPositionChangedEvent` | On scroll (NormalizedPosition: Vector2) |
---
## GridViewComponent
Virtualization for large lists. Renders only items visible on screen.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `ItemEntity` | Entity | -- | Clone template |
| `TotalCount` | int32 | 0 | Total item count |
| `CellSize` | Vector2 | (100, 100) | Item size |
| `FixedCount` | int32 | 1 | Fixed row / column count |
| `FixedType` | GridViewFixedType | ColumnCountFixed(0) | Fixed axis |
| `Spacing` | Vector2 | (0, 0) | Item spacing |
| `Padding` | RectOffset | 0,0,0,0 | Outer padding |
| `UseScroll` | boolean | true | Enable scrolling |
| `OnRefresh` | func<int32, Entity> | -- | Item-display callback |
| `OnClear` | func<int32, Entity> | -- | Item-hide callback |
### Methods
| Method | Returns | Description |
|--------|------|------|
| `Refresh(boolean resetPos, boolean force)` | void | Full refresh |
| `RefreshIndex(int32 index)` | void | Refresh a specific item |
| `SetScrollPositionByItemIndex(int32)` | void | Scroll to an item |
| `SetScrollNormalizedPosition(UITransformAxis, float)` | void | Set scroll position |
---
## TextGUIRendererInputComponent
Text input field. Receives keyboard input and feeds it to the paired `TextGUIRendererComponent` on the same entity. The builder's `textInput()` mints both together.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `Text` | string | "" | Entered text |
| `PlaceHolder` | string | "" | Placeholder |
| `PlaceHolderColor` | Color | gray | Placeholder color |
| `CharacterLimit` | int32 | 0 | Max characters (0 = unlimited) |
| `ContentType` | InputContentType | Standard | Input type |
| `LineType` | InputLineType | MultiLineSubmit | Newline mode — `SingleLine=0` / `MultiLineSubmit=1` / `MultiLineNewline=2`. Component default is `MultiLineSubmit(1)`, but `textInput()` always emits `SingleLine(0)` unless you pass `line_type` |
| `AutoClear` | boolean | false | Auto-clear after submit |
| `IsFocused` | boolean | -- | Focus state (read-only) |
### Methods
| Method | Returns | Description |
|--------|------|------|
| `ActivateInputField()` | void | Set focus |
| `GetLocalizedPlaceHolder()` | string | `PlaceHolder` in the current language (requires the placeholder to hold a locale key, set in the Maker editor) |
> Placeholder localization is opt-in via a Maker-editor-only flag (not a runtime `.mlua` property). Set the flag and put a locale key in `PlaceHolder` from the Maker editor, then read the resolved string at runtime via `GetLocalizedPlaceHolder()`.
### Events
| Event | Description |
|--------|------|
| `TextInputValueChangeEvent` | While typing (text: string) |
| `TextInputEndEditEvent` | Edit ended (text: string) |
| `TextInputSubmitEvent` | Submit (text: string) |
| `TextInputKeyDownEvent` | Key down |
| `TextInputKeyUpEvent` | Key up |
---
## SliderComponent
Slider / progress bar.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `Value` | float | 0 | Current value |
| `MinValue` | float | 0 | Minimum |
| `MaxValue` | float | 1 | Maximum |
| `UseIntegerValue` | boolean | false | Allow integers only |
| `Direction` | SliderDirection | -- | Slider direction |
| `HandleSize` | Vector2 | -- | Handle size |
| `HandleColor` | Color | -- | Handle color |
| `UseHandle` | boolean | true | Show handle |
| `FillRectColor` | Color | (1, 1, 1, 1) | Fill area color |
| `FillRectImageRUID` | DataRef | -- | Fill area image |
| `FillRectPadding` | RectOffset | (10, 10, 10, 10) | Inner padding of the fill rect |
| `HandleAreaPadding` | RectOffset | 0, 0, 0, 0 | Inner padding of the handle area |
| `HandleImageRUID` | DataRef | -- | Handle image |
### Events
| Event | Description |
|--------|------|
| `SliderValueChangedEvent` | Value changed (Value: float) |
---
## UITouchReceiveComponent
Receives touch / mouse input. **The component alone never receives events (silent failure)** — the same entity (or a child) must also carry a raycast-enabled GUI renderer, e.g. an invisible sprite (`alpha: 0, raycast: true`); a sibling renderer does NOT feed it. Recipe: [`runtime-patterns.md`](runtime-patterns.md) §8, builder call in [`../../msw-general/references/builder-protocol-ui.md`](../../msw-general/references/builder-protocol-ui.md) §3.5.
### Events
| Event | Properties | Description |
|--------|---------|------|
| `UITouchDownEvent` | Entity, TouchId, TouchPoint | Touch / click start |
| `UITouchUpEvent` | Entity, TouchId, TouchPoint | Touch / click end |
| `UITouchDragEvent` | Entity, TouchDelta, TouchId, TouchPoint | Drag |
| `UITouchBeginDragEvent` | Entity | Drag start |
| `UITouchEndDragEvent` | Entity | Drag end |
| `UITouchEnterEvent` | Entity | Pointer enter |
| `UITouchExitEvent` | Entity | Pointer exit |
---
## MaskComponent
Clips child UI to a specific shape.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `Shape` | MaskShape | Rect | Mask shape (Rect, Circle, etc.) |
| `Padding` | RectOffset | 0,0,0,0 | Soft edge |
| `Softness` | Vector2Int | (0, 0) | Blur amount |
---
## JoystickComponent
Virtual joystick (mobile). Builder: `joystick(name, options)` — anchors to bottom-left at `(200, 200)` with a `300x300` rect by default.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `DynamicStick` | boolean | true | Track touch position |
| `Axis` | AxisType | Axis_8(1) | Axis_4(0), Axis_8(1) |
| `UpArrow` | KeyboardKey | UpArrow(273) | Up-direction key mapping |
| `DownArrow` | KeyboardKey | DownArrow(274) | Down-direction key mapping |
| `LeftArrow` | KeyboardKey | LeftArrow(276) | Left-direction key mapping |
| `RightArrow` | KeyboardKey | RightArrow(275) | Right-direction key mapping |
---
## ChatComponent
In-game chat UI. Builder: `chat(name, options)`.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `Expand` | boolean | true | Expandable |
| `UseChatBalloon` | boolean | false | Show speech balloons |
| `UseChatEmotion` | boolean | true | Emotion support |
| `ChatEmotionDuration` | float | 5.0 | Emotion display duration (seconds) |
| `EnableVoiceChat` | boolean | true | Allow voice-chat button |
| `HideWorldChatButton` | boolean | false | Hide the world-chat button |
| `MessageAlignBottom` | boolean | false | Anchor newest message to the bottom |
### Events
| Event | Description |
|--------|------|
| `ChatEvent` | Chat event |
---
## SoftMaskComponent
Soft-edged clipping mask (UGUI SoftMask style). Builder: `softMask(name, options)`. Attach to a sprite entity; child sprites/raw images are clipped with anti-aliased edges. **Note**: gated by the `EnableUnpublishFeature` maker authority.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `InvertMask` | boolean | false | Invert the alpha mask |
| `InvertOutsides` | boolean | false | Invert the mask outside its bounds |
---
## LineGUIRendererComponent
Draws a polyline (HUD lines, guides). Builder: `line(name, options)` — `options.points` is an array of `{ pos: [x, y], color: "#RRGGBB" | Color, width: float }`.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `Points` | LinePoint[] | [] | Vertex list; each entry has `Position`, `Color`, `Width` |
| `IsFlexible` | boolean | true | Smooth corners using `Flexibility` |
| `Flexibility` | float | 3.0 | Curvature factor (>=1.0) |
| `IsSmooth` | boolean | false | Anti-aliased rendering |
| `Loop` | boolean | false | Close the path back to the first point |
| `MaterialId` | string | "" | Custom material id |
---
## PolygonGUIRendererComponent
Draws an arbitrary polygon (speech-balloon tails, custom shapes). Builder: `polygon(name, options)` — `options.points` is an array of `[x, y]`; optional `options.uvs` for custom UV mapping when `use_custom_uvs: true`.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `Points` | Vector2[] | [] | Polygon vertices (counter-clockwise) |
| `Color` | Color | white | Fill color |
| `UseCustomUVs` | boolean | false | Use the `UVs` list instead of auto UV |
| `UVs` | Vector2[] | [] | Custom UV coordinates (same length as `Points`) |
| `MaterialId` | string | "" | Custom material id |
### Methods
| Method | Returns | Description |
|--------|------|------|
| `IsDrawable()` | boolean | Whether the polygon can be triangulated |
---
## UISpriteParticleComponent
Sprite-textured particle effect (extends UI particle base). Builder: `spriteParticle(name, options)`.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `ParticleType` | UISpriteParticleType | None(0) | Preset id (see enum below) |
| `SpriteRUID` | string | "" | Sprite resource RUID |
| `ApplySpriteColor` | boolean | false | Tint the sprite with `Color` |
| `Color` | Color | (0.5, 0.25, 0.25, 1) | Particle tint |
| `LocalScale` | Vector2 | (1, 1) | Per-particle scale |
| `Loop` | boolean | true | Loop emission |
| `PlayOnEnable` | boolean | true | Auto-play on enable |
| `Prewarm` | boolean | false | Pre-simulate one cycle before showing |
| `PlaySpeed` | float | 1.0 | Animation speed (0-10) |
| `ParticleSize` | float | 1.0 | Per-particle size (0-10) |
| `ParticleSpeed` | float | 1.0 | Per-particle speed (-10..10) |
| `ParticleCount` | float | 1.0 | Emit-count multiplier (0-3) |
| `ParticleLifeTime` | float | 1.0 | Lifetime seconds (1/120..10) |
| `AutoRandomSeed` | boolean | true | Pick a new seed on each emit |
| `RandomSeed` | int32 | 0 | Manual seed when `AutoRandomSeed` is false |
`UISpriteParticleType`: `None=0`, `BurstBig=1`, `SpawnField=2`, `BurstNova=3`, `SimpleSpawn=4`, `Burst=5`, `Stream=6`, `StreamSharp=7`, `AdditiveColor=8`.
---
## AvatarGUIRendererComponent
Renders avatars in UI.
### Properties
| Name | Type | Default | Description |
|------|------|--------|------|
| `Color` | Color | white | Avatar tint |
| `FlipX` | boolean | false | Flip horizontally |
| `FlipY` | boolean | false | Flip vertically |
| `PlayRate` | float | 1.0 | Animation speed |
| `RaycastTarget` | boolean | true | Receive input |
### Methods
| Method | Returns | Description |
|--------|------|------|
| `GetAvatarRootEntity()` | Entity | Avatar root |
| `GetBodyEntity()` | Entity | Body part |
| `GetFaceEntity()` | Entity | Face part |
| `SetAvatarPartColor(category, r, g, b, a)` | void | Change part color |
| `PlayEmotion(EmotionalType type, float duration)` | void | Play emotion |
---
## UILogic
UI coordinate-conversion utility (singleton).
### Properties
| Name | Type | Description |
|------|------|------|
| `ScreenWidth` | int32 | Current screen width |
| `ScreenHeight` | int32 | Current screen height |
### Methods
| Method | Returns | Description |
|--------|------|------|
| `ScreenToUIPosition(Vector2)` | Vector2 | Screen -> UI coords |
| `UIToWorldPosition(Vector2)` | Vector2 | UI -> world coords |
| `ScreenToWorldPosition(Vector2)` | Vector2 | Screen -> world coords |
| `WorldToScreenPosition(Vector2)` | Vector2 | World -> screen coords |
| `LocalUIToWorldPosition(Vector2, UITransformComponent)` | Vector2 | Local UI -> world |
| `ScreenToLocalUIPosition(Vector2, UITransformComponent)` | Vector2 | Screen -> local UI |
| `GetSiblingIndex(UITransformComponent)` | int32 | Get sibling index |
| `SetSiblingIndex(UITransformComponent, int32)` | void | Set sibling index |
---
## WorldUI Sort Fields (Common)
`ButtonComponent`, `TextGUIRendererComponent`, `SliderComponent`, `SpriteGUIRendererComponent`, `ScrollLayoutGroupComponent`, and `TextGUIRendererInputComponent` all expose the same 4-field sorting block. The fields are only meaningful when the parent `UITransformComponent.UIMode` is `World(2)`.
| Name | Type | Default | Description |
|------|------|--------|------|
| `OverrideSorting` | boolean | false | Detach this entity's render order from its UI group (World UI only) |
| `SortingLayer` | string | "UI" | Sorting layer name (World UI only; gated by `OverrideSorting`) |
| `OrderInLayer` | int32 | 0 | Order within the sorting layer (higher draws on top) |
| `IgnoreMapLayerCheck` | boolean | false | Bypass automatic map-layer to sorting-layer remap |
Builder shortcut: pass `world_ui: true` to `sprite()` / `text()` / `button()` / `slider()` / `scrollLayout()` / `textInput()` to set `override_sorting=true` with `sorting_layer="UI"`. Override individual values with `sorting_layer="World"`, `order_in_layer=10`, `ignore_map_layer_check=true`.
---
## Common Types
### Color
`Color(r, g, b, a)` — 0-1 floats. Static factories: `Color.FromHexCode("#RRGGBB[AA]")`, `Color.FromRGBAInt(0xRRGGBBAA)`. Static values: `Color.red`, `Color.white`, `Color.black`, etc.
### TransitionColorSet
`NormalColor`, `HighlightedColor`, `PressedColor`, `SelectedColor`, `DisabledColor`, `ColorMultiplier`, `FadeDuration`
### TransitionRUIDSet
`HighlightedSprite`, `PressedSprite`, `SelectedSprite`, `DisabledSprite`
### DataRef
`{ DataId = "32-char hex" }` -- image resource reference.
### RectOffset
`{ left, right, top, bottom }` -- int32 rectangular margins.
---
## Enums
All values are `int32`. Pass numeric values to builder `patchComponent(...)` or use the enum identifier in `.mlua` runtime code (e.g. `TextAlignmentType.MiddleCenter`).
> **Three "alignment" enums exist — do not confuse them:**
> - **`AlignmentType` (0~15)** — anchor presets for `UITransformComponent.AlignmentOption`. Builder string mapping (`"top-left"` ↔ 4, etc.) is in [`ui-fundamentals.md`](ui-fundamentals.md) §6. Not duplicated here.
> - **`TextAlignmentType` / `ChildAlignmentType` (0~8)** — 9-cell alignment used by `ChildAlignment` / `GridChildAlignment` fields (and legacy `TextComponent.Alignment`). **Different enum from anchors above.**
> - **`TextHorizontalAlignmentOption` + `TextVerticalAlignmentOption`** — separate axis enums used by `TextGUIRendererComponent`. **Different from `TextAlignmentType`.**
### TextHorizontalAlignmentOption -- Horizontal alignment (TextGUIRendererComponent)
Used by `TextGUIRendererComponent.HorizontalAlignment`.
| Name | Value | Description |
|------|---|------|
| Left | 1 | Left-aligned |
| Center | 2 | Center (default) |
| Right | 4 | Right-aligned |
| Justified | 8 | Justified (last line not adjusted) |
| Flush | 16 | Justified (last line also adjusted) |
| Geometry | 32 | Center per-line by geometry |
### TextVerticalAlignmentOption -- Vertical alignment (TextGUIRendererComponent)
Used by `TextGUIRendererComponent.VerticalAlignment`.
| Name | Value | Description |
|------|---|------|
| Top | 256 | Top-aligned |
| Middle | 512 | Middle (default) |
| Bottom | 1024 | Bottom-aligned |
| Baseline | 2048 | First line baseline centered |
| Geometry | 4096 | Full text centered by geometry |
| Capline | 8192 | First line cap-height centered |
### TextOverflowMode -- Text Overflow (TextGUIRendererComponent)
Used by `TextGUIRendererComponent.Overflow`.
| Name | Value | Description |
|------|---|------|
| Overflow | 0 | Show outside the area (default) |
| Ellipsis | 1 | Ellipsis (...) |
| Truncate | 2 | Truncate |
| Page | 3 | Multi-page (use `Page` property) |
### GradientModes -- Color Gradient (TextGUIRendererComponent)
Used by `TextGUIRendererComponent.GradientMode` when `ColorGradient = true`.
| Name | Value | Description |
|------|---|------|
| Single | 0 | Single color (default) |
| Horizontal | 1 | Left to right |
| Vertical | 2 | Top to bottom |
| FourCorners | 3 | All four corners |
---
### TextAlignmentType / ChildAlignmentType -- 9-cell alignment (0~8)
Used by `ChildAlignment` / `GridChildAlignment` fields (and the legacy `TextComponent.Alignment`). Same value mapping for all.
| Name | Value | Description |
|------|---|------|
| UpperLeft | 0 | Top-left |
| UpperCenter | 1 | Top center |
| UpperRight | 2 | Top-right |
| MiddleLeft | 3 | Left middle |
| MiddleCenter | 4 | Center (builder default for `text()`) |
| MiddleRight | 5 | Right middle |
| LowerLeft | 6 | Bottom-left |
| LowerCenter | 7 | Bottom center |
| LowerRight | 8 | Bottom-right |
### FontType -- Font
| Name | Value | Description |
|------|---|------|
| Default | 0 | Default font |
| Maple | 1 | MapleStory font |
| Bazzi | 2 | Bazzi font |
| Football | 3 | Football Gothic font |
### FontStyleType -- Font Style (bit flags, combinable)
| Name | Value | Description |
|------|---|------|
| Normal | 0 | Default |
| Bold | 1 | Bold |
| Italic | 2 | Italic |
| Underline | 4 | Underline |
| LowerCase | 8 | Lowercase |
| UpperCase | 16 | Uppercase |
| SmallCaps | 32 | Small caps |
| Strikethrough | 64 | Strikethrough |
### ImageType -- Image Rendering
Used by `SpriteGUIRendererComponent.Type`.
| Name | Value | Description |
|------|---|------|
| Simple | 0 | Original image |
| Sliced | 1 | 9-slice (corners stay intact when size changes) |
| Tiled | 2 | Tiled repeat |
| Filled | 3 | Partial fill (progress bar) |
### FillMethodType -- Fill Direction (for `ImageType.Filled`)
| Name | Value | Description |
|------|---|------|
| Horizontal | 0 | Horizontal |
| Vertical | 1 | Vertical |
| Radial90 | 2 | 90-degree radial |
| Radial180 | 3 | 180-degree radial |
| Radial360 | 4 | 360-degree radial |
### TransitionType -- Button Transition Effect
| Name | Value | Description |
|------|---|------|
| None | 0 | No effect |
| ColorTint | 1 | Color change |
| SpriteSwap | 2 | Image swap |
### ButtonState
| Name | Value | Description |
|------|---|------|
| Normal | 0 | Default |
| Hover | 1 | Mouse over |
| Pressed | 2 | Pressed |
| Released | 3 | Released |
| Clicked | 4 | Short click |
### LayoutGroupType -- Layout Direction
Used by `ScrollLayoutGroupComponent.Type`.
| Name | Value | Description |
|------|---|------|
| Horizontal | 0 | Horizontal layout |
| Vertical | 1 | Vertical layout |
| Grid | 2 | Grid layout |
### ScrollBarVisibility
| Name | Value | Description |
|------|---|------|
| AlwaysShow | 0 | Always shown |
| AutoHide | 1 | Shown only when scrollable |
| Hide | 2 | Always hidden |
### UITransformAxis
| Name | Value | Description |
|------|---|------|
| Horizontal | 0 | Horizontal axis |
| Vertical | 1 | Vertical axis |
### GridLayoutAxis / GridLayoutConstraint / GridLayoutCorner
`GridLayoutAxis`: `Horizontal=0`, `Vertical=1` (child add direction).
`GridLayoutConstraint`: `Flexible=0`, `FixedColumnCount=1`, `FixedRowCount=2`.
`GridLayoutCorner`: `UpperLeft=0`, `UpperRight=1`, `LowerLeft=2`, `LowerRight=3` (grid start position).
### GridViewFixedType
Used by `GridViewComponent.FixedType`.
| Name | Value | Description |
|------|---|------|
| ColumnCountFixed | 0 | Fixed column count (vertical scroll) |
| RowCountFixed | 1 | Fixed row count (horizontal scroll) |
### UIModeType -- UI Drawing Mode
Used by `UITransformComponent.UIMode`.
| Name | Value | Description |
|------|---|------|
| None | 0 | Initial state |
| Screen | 1 | 2D screen coordinates (HUD/popup/menu — default) |
| World | 2 | World coordinates (nametag, floating damage) |
### UIGroupType -- UI Group Type
Used by `UIGroupComponent.GroupType`.
| Name | Value | Description |
|------|---|------|
| None | 0 | Unused |
| DefaultType | 1 | Default group (HUD layer) |
| UIType | 2 | UI editor group (popup/menu layer) |
| EditorType | 3 | Editor-only group |
### MaskShape
Used by `MaskComponent.Shape`.
| Name | Value | Description |
|------|---|------|
| Rect | 0 | Rectangle |
| Circle | 1 | Circle |
### GradientModes
| Name | Value | Description |
|------|---|------|
| Single | 0 | Single color |
| Horizontal | 1 | Horizontal gradient |
| Vertical | 2 | Vertical gradient |
| FourCorners | 3 | Four-corner gradient |
### HorizontalScrollBarDirection / VerticalScrollBarDirection
`HorizontalScrollBarDirection`: `LeftToRight=0`, `RightToLeft=1`.
`VerticalScrollBarDirection`: `BottomToTop=2`, `TopToBottom=3`.
### UIAreaParticleType / UIBasicParticleType
UI particle preset enums. The builder handles preset names directly — pass numeric `particle_type=...` to `areaParticle()` / `basicParticle()`. Full numeric tables live in [`../../msw-general/references/builder-protocol-ui.md`](../../msw-general/references/builder-protocol-ui.md) §3.5. From runtime, use the enum identifiers (`UIAreaParticleType.FogCalm`, `UIBasicParticleType.Firework`).
references/layout-recipes.md
# Layout Recipes
A collection of layout templates based on this skill's CJS UIBuilder (`scripts/msw_ui_builder.cjs`; see [`../../msw-general/references/builder-protocol-ui.md`](../../msw-general/references/builder-protocol-ui.md) §3 for the call protocol, loaded with the [`builder-protocol.md`](../../msw-general/references/builder-protocol.md) core — unified entry point).
Each recipe is copy-ready from file creation to placement. In actual use, change only path / size / color / RUID values to match your project.
---
## Common Preparation
```javascript
const { UIBuilder } = require("./scripts/msw_ui_builder.cjs");
```
- Coordinates: center origin, 1920x1080, Y-axis positive upward
- Default pivot: anchor-matched when omitted (`top-left` -> `[0, 1]`, `middle-center` -> `[0.5, 0.5]`)
- Edge formula with omitted pivot: `pos = [margin, margin]` with signs based on the anchor side
---
## Recipe 1 — Basic HUD (Top-Left Score, Top-Right Minimap, Bottom-Left HP)
```javascript
const b = new UIBuilder("DefaultGroup", 1, true);
b.panel("ScoreBox", { anchor: "top-left", pos: [20, -20], rect_size: [200, 60] });
b.text("ScoreBox/Label", "Score", {
size: 24,
color: "#FFFFFF",
anchor: "middle-left",
pos: [16, 0],
alignment: 3,
});
b.text("ScoreBox/Value", "0", {
size: 40,
color: "#FFD700",
bold: true,
anchor: "middle-right",
pos: [-16, 0],
alignment: 5,
});
b.panel("MiniMap", { anchor: "top-right", pos: [-20, -20], rect_size: [180, 180] });
b.sprite("MiniMap/Frame", { anchor: "stretch", image_ruid: "<minimap-frame-ruid>" });
b.panel("HPBar", { anchor: "bottom-left", pos: [20, 20], rect_size: [220, 30] });
b.sprite("HPBar/Bg", { anchor: "stretch", color: "#1A1A1A", alpha: 0.8 });
// Sliced fill: anchored to the left edge (pivot [0, 0.5]); runtime drives the
// width, not FillAmount or SliderComponent, so the 9-slice borders stay crisp.
b.sprite("HPBar/Fill", { anchor: "middle-left", pos: [0, 0], rect_size: [220, 30], pivot: [0, 0.5], image_ruid: "f0911af597259044aa624a11332c0595", color: "#E53935", alpha: 1.0 });
b.write("ui/DefaultGroup.ui");
```
### HP Update at Runtime
See [`runtime-patterns.md`](runtime-patterns.md) §3 HP Bar (Progress Bar). Key point: use the HP gauge slice sprite (`image_ruid = "f0911af597259044aa624a11332c0595"`) and resize the Sliced fill's width — `self.fillTransform.RectSize = Vector2(fullWidth * hp / maxHp, h)` — rather than setting `FillAmount` or driving a `SliderComponent`. Property binding is auto-injected via `b.write(path, { bind: {...} })`.
---
## Recipe 2 — Modal Confirmation Popup (Title + Message + OK/Cancel)
```javascript
const b = new UIBuilder("PopupGroup", 10, false);
b.sprite("Dimmer", { anchor: "stretch", color: "#000000", alpha: 0.6, raycast: true });
b.panel("Panel", { anchor: "middle-center", pos: [0, 0], rect_size: [600, 400] });
b.sprite("Panel/Bg", { anchor: "stretch", color: "#2C2C2C" });
b.text("Panel/Title", "Confirm", {
size: 48,
color: "#FFFFFF",
bold: true,
anchor: "top-center",
pos: [0, -50],
rect_size: [560, 60],
alignment: 4,
});
b.text("Panel/Message", "Are you sure?", {
size: 28,
color: "#DDDDDD",
anchor: "middle-center",
pos: [0, 20],
rect_size: [520, 160],
alignment: 4,
});
b.button("Panel/BtnOk", "OK", {
rect_size: [180, 60],
pos: [-110, 40],
anchor: "bottom-center",
font_size: 28,
});
b.button("Panel/BtnCancel", "Cancel", {
rect_size: [180, 60],
pos: [110, 40],
anchor: "bottom-center",
font_size: 28,
});
b.write("ui/PopupGroup.ui", {
bind: {
mlua: "RootDesk/MyDesk/UIPopup.mlua",
props: {
popupGroup: "Panel",
btnOk: "Panel/BtnOk",
btnCancel: "Panel/BtnCancel",
message: "Panel/Message",
},
},
});
```
---
## Recipe 3 — Toast (Auto-Dismissing Notification)
```javascript
const b = new UIBuilder("ToastGroup", 20, false);
b.panel("Toast", { anchor: "bottom-center", pos: [0, 140], rect_size: [600, 80] });
b.sprite("Toast/Bg", { anchor: "stretch", color: "#1E1E1E", alpha: 0.9 });
b.text("Toast/Message", "", { size: 28, color: "#FFFFFF", anchor: "stretch", alignment: 4 });
b.write("ui/ToastGroup.ui");
```
For the mlua-side logic, use the Toast pattern from [`runtime-patterns.md`](runtime-patterns.md).
---
## Recipe 4 — Top Menu Bar (3 Tabs)
```javascript
const b = new UIBuilder("MenuGroup", 5, false);
b.sprite("Dimmer", { anchor: "stretch", color: "#000000", alpha: 0.7, raycast: true });
b.panel("TopTabs", { anchor: "top-center", pos: [0, -60], rect_size: [1200, 80] });
b.sprite("TopTabs/Bg", { anchor: "stretch", color: "#1A1A1A" });
["Character", "Inventory", "Settings"].forEach((name, i) => {
const x = -400 + i * 400;
b.button(`TopTabs/Tab${i}`, name, { rect_size: [380, 70], pos: [x, 0], font_size: 24 });
b.panel(`Content${i}`, { anchor: "middle-center", pos: [0, -40], rect_size: [1400, 800] });
});
b.write("ui/MenuGroup.ui");
```
Tab switching logic in mlua: `for i, content in ipairs(self.contents) do content.Enable = (i == activeIdx) end`.
---
## Recipe 5 — Inventory Grid (GridView Virtualization)
```javascript
const b = new UIBuilder("InventoryGroup", 7, false);
b.sprite("Dimmer", { anchor: "stretch", color: "#000000", alpha: 0.7, raycast: true });
b.panel("Window", { anchor: "middle-center", pos: [0, 0], rect_size: [900, 700] });
b.sprite("Window/Bg", { anchor: "stretch", color: "#2C2C2C" });
b.text("Window/Title", "Inventory", {
size: 36,
color: "#FFFFFF",
bold: true,
anchor: "top-center",
pos: [0, -40],
rect_size: [800, 50],
alignment: 4,
});
b.button("Window/BtnClose", "X", {
rect_size: [50, 50],
pos: [-30, -30],
anchor: "top-right",
font_size: 24,
});
b.panel("Window/ItemTemplate", { anchor: "top-left", pos: [50, -50], rect_size: [80, 80] });
b.sprite("Window/ItemTemplate/Frame", { anchor: "stretch", image_ruid: "<slot-frame-ruid>" });
b.sprite("Window/ItemTemplate/Icon", { anchor: "middle-center", rect_size: [64, 64] });
b.text("Window/ItemTemplate/Count", "", {
size: 20,
color: "#FFFFFF",
anchor: "bottom-right",
pos: [-8, 8],
rect_size: [40, 24],
alignment: 5,
});
b.patch("Window/ItemTemplate", { enable: false });
b.panel("Window/Grid", { anchor: "stretch", rect_size: [800, 560] });
b.patchComponent("Window/Grid", "MOD.Core.UITransformComponent", {
OffsetMin: { x: 50, y: 50 },
OffsetMax: { x: -50, y: -100 },
});
b.addComponent("Window/Grid", "MOD.Core.GridViewComponent", {
CellSize: { x: 90, y: 90 },
FixedCount: 8,
FixedType: 0,
Spacing: { x: 6, y: 6 },
UseScroll: true,
});
b.write("ui/InventoryGroup.ui");
```
### OnRefresh Callback (Runtime)
See [`runtime-patterns.md`](runtime-patterns.md) §5 GridView Large List. Property binding injects two items — `grid` / `itemTemplate` — via `b.write(path, { bind: {...} })`.
> **Caution**: `OnRefresh` is called frequently during scrolling. Do not call DataStorage; only query the in-memory cache.
---
## Recipe 6 — Scroll Chat/Log (ScrollLayoutGroup, Small Scale)
```javascript
const b = new UIBuilder("ChatGroup", 4, true);
b.panel("ChatBox", { anchor: "bottom-left", pos: [220, 220], rect_size: [400, 300] });
b.sprite("ChatBox/Bg", { anchor: "stretch", color: "#000000", alpha: 0.5 });
b.panel("ChatBox/List", { anchor: "stretch" });
b.patchComponent("ChatBox/List", "MOD.Core.UITransformComponent", {
OffsetMin: { x: 10, y: 50 },
OffsetMax: { x: -10, y: -10 },
});
b.addComponent("ChatBox/List", "MOD.Core.ScrollLayoutGroupComponent", {
Type: 1,
Spacing: 6,
ScrollBarVisible: 1,
});
b.addComponent("ChatBox/List", "MOD.Core.MaskComponent", { Shape: 0 });
b.panel("ChatBox/InputArea", { anchor: "bottom-center", pos: [0, 20], rect_size: [380, 40] });
b.sprite("ChatBox/InputArea/Bg", { anchor: "stretch", color: "#222222" });
b.text("ChatBox/InputArea/Text", "", { size: 20, color: "#FFFFFF", anchor: "stretch", alignment: 3 });
b.addComponent("ChatBox/InputArea/Text", "MOD.Core.TextGUIRendererInputComponent", {
PlaceHolder: "Type here...",
LineType: 0,
AutoClear: true,
});
b.write("ui/ChatGroup.ui");
```
Adding messages at runtime: Create Text entities as children of List via SpawnService; ScrollLayoutGroup auto-arranges them. Pin scroll to bottom: `layoutGroup:SetScrollNormalizedPosition(1, 0)`.
---
## Recipe 7 — Settings Slider List
```javascript
const b = new UIBuilder("SettingsGroup", 7, false);
b.sprite("Dimmer", { anchor: "stretch", color: "#000000", alpha: 0.7, raycast: true });
b.panel("Window", { anchor: "middle-center", rect_size: [700, 600] });
b.sprite("Window/Bg", { anchor: "stretch", color: "#2C2C2C" });
b.text("Window/Title", "Settings", {
size: 36,
bold: true,
anchor: "top-center",
pos: [0, -40],
rect_size: [600, 50],
alignment: 4,
});
[
["BGMVol", "BGM Volume", 0, 1, 0.8],
["SFXVol", "SFX Volume", 0, 1, 1.0],
["UIScale", "UI Scale", 0.8, 1.5, 1.0],
].forEach(([key, label, minValue, maxValue, value], i) => {
const y = -140 - i * 100;
b.panel(`Window/Row${i}`, { anchor: "top-center", pos: [0, y], rect_size: [600, 80] });
b.text(`Window/Row${i}/Label`, label, {
size: 24,
anchor: "middle-left",
pos: [20, 0],
rect_size: [180, 40],
alignment: 3,
});
b.slider(`Window/Row${i}/Slider`, {
min_val: minValue,
max_val: maxValue,
value,
anchor: "middle-right",
pos: [-120, 0],
rect_size: [320, 30],
});
b.text(`Window/Row${i}/Value`, value.toFixed(2), {
size: 22,
anchor: "middle-right",
pos: [-20, 0],
rect_size: [80, 40],
alignment: 5,
});
});
b.button("Window/BtnClose", "Close", {
rect_size: [200, 60],
anchor: "bottom-center",
pos: [0, 40],
font_size: 26,
});
b.write("ui/SettingsGroup.ui");
```
---
## Recipe 8 — Card-Like Clickable Tile
Use one `b.button(...)` entity when a repeated tile needs background, label, and click handling. This avoids separate sprite/text entities for every tile.
```javascript
const b = new UIBuilder("BoardGroup", 3, true);
for (let i = 0; i < 12; i += 1) {
const x = -330 + (i % 6) * 132;
const y = 120 - Math.floor(i / 6) * 160;
b.button(`Tile_${i}`, "", {
rect_size: [104, 144],
pos: [x, y],
anchor: "middle-center",
font_size: 30,
color: "#FFFFFF",
});
b.patchComponent(`Tile_${i}`, "MOD.Core.SpriteGUIRendererComponent", {
Color: { r: 0.05, g: 0.12, b: 0.28, a: 1.0 },
});
}
b.write("ui/BoardGroup.ui");
```
Runtime update pattern:
```lua
method void SetTileFace(TextGUIRendererComponent label, SpriteGUIRendererComponent sprite, string text, boolean faceUp)
if faceUp then
sprite.Color = Color(1, 1, 1, 1)
label.Text = text
else
sprite.Color = Color(0.05, 0.12, 0.28, 1)
label.Text = ""
end
end
```
Use this for card games, board cells, inventory slots, quick slots, tabs, and same-shape menu items.
---
## Recipe 9 — Stat / Info Panel (Nested Rows)
Use this when the UI is a sheet of labeled rows. Each row is a parent-local unit; small labels that belong directly on a chip/cell use `sprite(..., { text })` instead of a separate overlay text entity.
```javascript
const b = new UIBuilder("CharacterStat", 20, false);
b.sprite("Dimmer", { anchor: "stretch", color: "#000000", alpha: 0.6, raycast: true });
b.sprite("Window", { anchor: "middle-center", rect_size: [620, 720], image_ruid: "<window-ruid>" });
b.sprite("Window/Title", {
anchor: "top-center",
pos: [0, -28],
rect_size: [560, 60],
image_ruid: "<title-ruid>",
text: "CHARACTER STAT",
text_size: 30,
text_bold: true,
text_alignment: 4,
});
b.button("Window/BtnClose", "", { anchor: "top-right", pos: [-28, -28], rect_size: [88, 88], image_ruid: "<close-ruid>" });
[
["Name", "Player"],
["Level", "2"],
["HP", "63 / 63"],
["MP", "37 / 37"],
].forEach(([label, value], i) => {
const y = 250 - i * 62;
b.panel(`Window/Row${i}`, { anchor: "top-center", pos: [0, y], rect_size: [560, 52] });
b.sprite(`Window/Row${i}/Chip`, {
anchor: "middle-left",
pos: [10, 0],
rect_size: [120, 42],
image_ruid: "<chip-ruid>",
text: label,
text_size: 22,
text_alignment: 4,
text_color: "#33334D",
});
b.sprite(`Window/Row${i}/Cell`, {
anchor: "middle-right",
pos: [-10, 0],
rect_size: [400, 42],
image_ruid: "<cell-ruid>",
text: value,
text_size: 22,
text_alignment: 3,
text_color: "#F4F4F8",
});
});
b.write("ui/CharacterStat.ui");
```
Pass criteria: no `L025` orphan parent, no `L029` nested UIGroup, no `L030` root-level text-over-box warning.
---
## Recipe Selection Guide
| Request Keyword | Recipe |
|-----------|-------|
| Score / HP / Minimap / Always-on info | Recipe 1 (HUD) |
| Confirm / Yes/No / Warning | Recipe 2 (Modal Popup) |
| Acquisition / Notification / Result | Recipe 3 (Toast) |
| Tab menu / Top navigation | Recipe 4 (Tabbed Menu) |
| Inventory / Shop / Equipment window / Many slots | Recipe 5 (GridView) |
| Chat / Log / Small list | Recipe 6 (ScrollLayoutGroup) |
| Settings / Volume / Scale | Recipe 7 (Slider List) |
| Card / tile / slot / repeated clickable cell | Recipe 8 (Card-Like Clickable Tile) |
| Stat sheet / info panel / labeled rows / status window | Recipe 9 (Stat / Info Panel) |
---
## Common Finishing Steps
After running any recipe:
1. **Binding Injection** — Auto-inject entity UUIDs into the corresponding `.mlua` property defaults via `b.write(filepath, { bind: { mlua, props } })` or `b.injectBindings(mlua_path, props)`. See [`../../msw-general/references/builder-protocol-ui.md`](../../msw-general/references/builder-protocol-ui.md) §3.6 Binding Injection for details.
2. **Preview Check** — Visualize the layout with `scripts/preview_ui_layout.cjs`
3. **Maker Refresh** — Reflect changes in the engine via MCP refresh
4. **Play Mode Verification** — Verify on actual resolution and mobile scale
Snapshot:
```javascript
UIBuilder.snapshot("ui/PopupGroup.ui"); // Backup right before write
```
references/runtime-patterns.md
# UI Runtime Patterns
`.mlua` patterns for controlling UI from scripts. These are **runtime code**, separate from `.ui` file authoring (which goes through the builder — see [`../../msw-general/references/builder-protocol-ui.md`](../../msw-general/references/builder-protocol-ui.md) §3, the unified entry point).
> [!IMPORTANT]
> **`@ExecSpace("ClientOnly")` must be on each method, not on the `script`.** A script-level `@ExecSpace` (above the `script` line) does **not** make lifecycle callbacks client-only — the compiler ignores it, so `OnBeginPlay` / `OnUpdate` / `OnEndPlay` still run on the server, where UI entity refs are `nil` → `[LEA-2007] AttemptToIndex`. Annotate every engine-invoked method (lifecycle callbacks, handlers, and any method that touches UI) individually, exactly as the examples below do. See "Runtime UI Caveats" §3.
> [!IMPORTANT]
> **Every `self.<field>` these patterns assign is a declared `property`.** Assigning to an undeclared `self.<field>` is a runtime error (`cannot set <name>, no such field`) that kills the method — the build log shows only a `LIA-1114` Info. Declare a `property` (or use `self._T.<field>`) for any state you add.
---
## 1. Popup Dialog
A modal popup with a message and OK / cancel buttons.
```lua
@Logic
script UIPopup extends Logic
property TextGUIRendererComponent message = "uuid-text"
property ButtonComponent btnOk = "uuid-btn-ok"
property ButtonComponent btnCancel = "uuid-btn-cancel"
property Entity popupGroup = "uuid-group"
property any onOk = nil
property any onCancel = nil
property any okHandler = nil
property any cancelHandler = nil
@ExecSpace("ClientOnly")
method void OnBeginPlay()
self.popupGroup.Enable = false
end
@ExecSpace("ClientOnly")
method void Open(string msg, any onOk, any onCancel)
self.onOk = onOk
self.onCancel = onCancel
self.message.Text = msg
self.popupGroup.Enable = true
self.okHandler = self.btnOk.Entity:ConnectEvent(ButtonClickEvent, function()
if self.onOk ~= nil then self.onOk() end
self:Close()
end)
self.cancelHandler = self.btnCancel.Entity:ConnectEvent(ButtonClickEvent, function()
if self.onCancel ~= nil then self.onCancel() end
self:Close()
end)
end
@ExecSpace("ClientOnly")
method void Close()
self.btnOk.Entity:DisconnectEvent(ButtonClickEvent, self.okHandler)
self.btnCancel.Entity:DisconnectEvent(ButtonClickEvent, self.cancelHandler)
self.popupGroup.Enable = false
end
@ExecSpace("ClientOnly")
method void OnEndPlay()
self:Close()
end
end
```
---
## 2. Toast Message
A notification that fades out after a fixed duration.
```lua
@Logic
script UIToast extends Logic
property TextGUIRendererComponent message = "uuid-text"
property Entity toastGroup = "uuid-group"
property number duration = 2
property number fadeDuration = 0.3
property any timerId = nil
@ExecSpace("ClientOnly")
method void OnBeginPlay()
self.toastGroup.Enable = false
end
@ExecSpace("ClientOnly")
method void ShowMessage(string msg)
self.message.Text = msg
self.toastGroup.Enable = true
local canvasGroup = self.toastGroup.CanvasGroupComponent
canvasGroup.GroupAlpha = 1
if self.timerId then
_TimerService:ClearTimer(self.timerId)
end
local time = 0
local preTime = _UtilLogic.ElapsedSeconds
self.timerId = _TimerService:SetTimerRepeat(function()
local delta = _UtilLogic.ElapsedSeconds - preTime
time = time + delta
preTime = _UtilLogic.ElapsedSeconds
if time >= self.duration + self.fadeDuration then
canvasGroup.GroupAlpha = 0
self.toastGroup.Enable = false
_TimerService:ClearTimer(self.timerId)
self.timerId = nil
elseif time >= self.duration then
canvasGroup.GroupAlpha = 1 - (time - self.duration) / self.fadeDuration
end
end, 1/60)
end
@ExecSpace("ClientOnly")
method void OnEndPlay()
if self.timerId then
_TimerService:ClearTimer(self.timerId)
end
end
end
```
---
## 3. HP Bar (Progress Bar)
Implement a linear HP bar with a **Sliced** fill sprite. Use the HP gauge slice sprite (`image_ruid = "f0911af597259044aa624a11332c0595"`), anchor the fill to the left edge (pivot `(0, 0.5)`), and express the fill ratio by resizing its **width** — not `FillAmount` or `SliderComponent.Value`. This keeps the 9-slice borders crisp at every value, instead of the UV-clipping distortion you get with `Type=Filled`.
```lua
@Component
script HPBar extends Component
-- Bind both to the same fill entity: the transform drives the width, the
-- renderer drives the color. fullWidth is the 100% width (matches the bar bg).
property UITransformComponent fillTransform = "uuid-fill"
property SpriteGUIRendererComponent fillImage = "uuid-fill"
property TextGUIRendererComponent hpText = "uuid-text"
property number fullWidth = 220
@ExecSpace("ClientOnly")
method void UpdateHP(number current, number max)
local ratio = current / max
ratio = math.max(0, math.min(1, ratio))
-- Sliced fill: resize width (left edge fixed), so borders stay crisp.
local size = self.fillTransform.RectSize
self.fillTransform.RectSize = Vector2(self.fullWidth * ratio, size.y)
self.hpText.Text = tostring(math.floor(current)) .. " / " .. tostring(math.floor(max))
-- color transition: green -> yellow -> red
if ratio > 0.5 then
self.fillImage.Color = Color(0, 1, 0, 1)
elseif ratio > 0.2 then
self.fillImage.Color = Color(1, 1, 0, 1)
else
self.fillImage.Color = Color(1, 0, 0, 1)
end
end
end
```
**Note:** Set the fill sprite `Type` to `Sliced(1)` (the builder default) and anchor it `middle-left` with pivot `(0, 0.5)` so resizing the width grows it rightward. Do **not** use `Type=Filled` for linear bars. Radial gauges (e.g. §10 cooldown) are the only case that still requires `Filled` + `Radial`, since a 9-slice cannot represent a circular sweep.
---
## 4. Scroll List + Item Cloning
Hide a template and add items via Clone.
```lua
@Logic
script ScrollList extends Logic
property Entity itemTemplate = "uuid-template"
property ScrollLayoutGroupComponent scrollLayout = "uuid-scroll"
property table items = {}
@ExecSpace("ClientOnly")
method void OnBeginPlay()
self.itemTemplate:SetEnable(false) -- hide template
self.items = {}
end
@ExecSpace("ClientOnly")
method void AddItem(string text)
local clone = self.itemTemplate:Clone("Item_" .. #self.items)
clone:SetEnable(true)
clone.TextGUIRendererComponent.Text = text
table.insert(self.items, clone)
end
@ExecSpace("ClientOnly")
method void ClearAll()
for _, item in ipairs(self.items) do
item:Destroy()
end
self.items = {}
end
@ExecSpace("ClientOnly")
method void ScrollToBottom()
self.scrollLayout:SetScrollNormalizedPosition(UITransformAxis.Vertical, 0.0)
end
@ExecSpace("ClientOnly")
method void OnEndPlay()
self:ClearAll()
end
end
```
---
## 5. GridView Large List
For 100+ items, use GridView instead of ScrollLayout.
```lua
@Logic
script InventoryGrid extends Logic
property GridViewComponent gridView = "uuid-gridview"
property table data = {}
@ExecSpace("ClientOnly")
method void OnBeginPlay()
self.data = {}
-- initialize data
for i = 1, 200 do
table.insert(self.data, "Item " .. tostring(i))
end
self.gridView.TotalCount = #self.data
self.gridView.OnRefresh = function(index, entity)
-- index is 0-based
entity.TextGUIRendererComponent.Text = self.data[index + 1]
entity.SpriteGUIRendererComponent.Color = Color.white
end
self.gridView.OnClear = function(index, entity)
-- clean up items that scrolled off-screen (optional)
end
self.gridView:Refresh(true, true)
end
@ExecSpace("ClientOnly")
method void RefreshData()
self.gridView.TotalCount = #self.data
self.gridView:Refresh(false, true)
end
end
```
---
## 6. Tab UI (Toggle Group)
Activate only one tab at a time.
```lua
@Logic
script TabUI extends Logic
property Entity tab1Content = "uuid-content1"
property Entity tab2Content = "uuid-content2"
property Entity tab3Content = "uuid-content3"
property ButtonComponent tab1Btn = "uuid-btn1"
property ButtonComponent tab2Btn = "uuid-btn2"
property ButtonComponent tab3Btn = "uuid-btn3"
property table tabs = {}
@ExecSpace("ClientOnly")
method void OnBeginPlay()
self.tabs = {self.tab1Content, self.tab2Content, self.tab3Content}
self.tab1Btn.Entity:ConnectEvent(ButtonClickEvent, function() self:SelectTab(1) end)
self.tab2Btn.Entity:ConnectEvent(ButtonClickEvent, function() self:SelectTab(2) end)
self.tab3Btn.Entity:ConnectEvent(ButtonClickEvent, function() self:SelectTab(3) end)
self:SelectTab(1)
end
@ExecSpace("ClientOnly")
method void SelectTab(number index)
for i, tab in ipairs(self.tabs) do
tab.Enable = (i == index)
end
end
end
```
---
## 7. Runtime Z-Order / Sibling Reorder
Use `_UILogic:SetSiblingIndex(targetUITransform, index)` on the client to reorder UI siblings at runtime. There is no `entity.SetAsLastSibling()` pattern in the public mlua API; reorder through the target entity's `UITransformComponent`. The index is 1-based; a deliberately high index moves the target to the front among siblings.
```lua
@Logic
script UIStackOrder extends Logic
property UITransformComponent draggingCard = nil
@ExecSpace("ClientOnly")
method void BringToFront(UITransformComponent target)
if target == nil then
return
end
_UILogic:SetSiblingIndex(target, 1000000)
end
end
```
Use this when creation order is not enough:
- Card/table stacks where later gameplay changes which card should receive input first.
- Dragging an entity that must render above its siblings while held.
- Popup-over-popup flows within the same UIGroup.
Prefer build-time `displayOrder` for static layouts. Use runtime sibling reorder only for dynamic overlap.
---
## 8. Drag and Drop
Implement drag with UITouchReceiveComponent.
> [!WARNING]
> **The `UITouchReceiveComponent` entity needs a raycast target.** The component alone never receives touch events (silent failure) — the same entity (or a child) must have a raycast-enabled GUI renderer, e.g. an invisible sprite: `b.sprite(name, { alpha: 0, raycast: true, ... })` + `b.addComponent(name, "MOD.Core.UITouchReceiveComponent")`. A sibling sprite at the same position does NOT work.
```lua
@Component
script Draggable extends Component
property any dragHandler = nil
@ExecSpace("ClientOnly")
method void OnBeginPlay()
self.dragHandler = self.Entity:ConnectEvent(UITouchDragEvent, self.OnDrag)
end
@ExecSpace("ClientOnly")
method void OnDrag(UITouchDragEvent event)
local transform = self.Entity.UITransformComponent
local pos = transform.anchoredPosition
transform.anchoredPosition = Vector2(
pos.x + event.TouchDelta.x,
pos.y + event.TouchDelta.y
)
end
@ExecSpace("ClientOnly")
method void OnEndPlay()
self.Entity:DisconnectEvent(UITouchDragEvent, self.dragHandler)
end
end
```
---
## 9. Text Input + Chat
```lua
@Logic
script ChatUI extends Logic
property TextGUIRendererInputComponent chatInput = "uuid-input"
property TextGUIRendererComponent chatLog = "uuid-log"
property ScrollLayoutGroupComponent scrollLayout = "uuid-scroll"
property Entity messageTemplate = "uuid-template"
property any submitHandler = nil
property integer msgCount = 0
@ExecSpace("ClientOnly")
method void OnBeginPlay()
self.messageTemplate:SetEnable(false)
self.submitHandler = self.chatInput.Entity:ConnectEvent(
TextInputSubmitEvent, self.OnSubmit)
end
@ExecSpace("ClientOnly")
method void OnSubmit(TextInputSubmitEvent event)
local text = event.text
if text == "" then return end
local msg = self.messageTemplate:Clone("Msg_" .. self.msgCount)
msg:SetEnable(true)
msg.TextGUIRendererComponent.Text = text
self.msgCount = self.msgCount + 1
-- scroll to bottom
self.scrollLayout:SetScrollNormalizedPosition(UITransformAxis.Vertical, 0.0)
end
@ExecSpace("ClientOnly")
method void OnEndPlay()
self.chatInput.Entity:DisconnectEvent(TextInputSubmitEvent, self.submitHandler)
end
end
```
---
## 10. Cooldown Display (Radial FillAmount)
```lua
@Component
script CooldownUI extends Component
property SpriteGUIRendererComponent cooldownOverlay = "uuid-overlay"
property TextGUIRendererComponent cooldownText = "uuid-text"
property any timerId = nil
@ExecSpace("ClientOnly")
method void StartCooldown(number duration)
self.cooldownOverlay.Entity:SetEnable(true)
local time = 0
local preTime = _UtilLogic.ElapsedSeconds
self.timerId = _TimerService:SetTimerRepeat(function()
local delta = _UtilLogic.ElapsedSeconds - preTime
time = time + delta
preTime = _UtilLogic.ElapsedSeconds
local remaining = duration - time
if remaining <= 0 then
self.cooldownOverlay.FillAmount = 0
self.cooldownOverlay.Entity:SetEnable(false)
self.cooldownText.Text = ""
_TimerService:ClearTimer(self.timerId)
return
end
self.cooldownOverlay.FillAmount = remaining / duration
self.cooldownText.Text = tostring(math.ceil(remaining))
end, 1/60)
end
@ExecSpace("ClientOnly")
method void OnEndPlay()
if self.timerId then
_TimerService:ClearTimer(self.timerId)
end
end
end
```
**Setup:** SpriteGUIRenderer `Type=Filled(3)`, `FillMethod=Radial360(4)`, translucent black. Radial sweeps are the one gauge case where `Filled` is required — a 9-slice cannot draw a circular fill. Linear bars (HP/MP/EXP, §3) use `Sliced` + width resize instead.
---
## 11. World UI (Overhead Name Tag)
Place UI at world coordinates with UIModeType.World.
```lua
@Component
script NameTag extends Component
property TextGUIRendererComponent nameText = "uuid-text"
@ExecSpace("ClientOnly")
method void OnBeginPlay()
self.nameText.Text = self.Entity.Name
end
@ExecSpace("ClientOnly")
method void OnUpdate(number dt)
-- follow the entity position
local worldPos = self.Entity.TransformComponent.WorldPosition
local uiTransform = self.nameText.Entity.UITransformComponent
local screenPos = _UILogic:WorldToScreenPosition(Vector2(worldPos.x, worldPos.y + 1.5))
local uiPos = _UILogic:ScreenToUIPosition(screenPos)
uiTransform.anchoredPosition = uiPos
end
end
```
---
## Event Handler Skeletons
Quick skeletons for the most common UI events. Always store the handler return and `DisconnectEvent` in `OnEndPlay`.
### Button click
```lua
property ButtonComponent btnOk = "uuid"
property any clickHandler = nil
@ExecSpace("ClientOnly")
method void OnBeginPlay()
self.clickHandler = self.btnOk.Entity:ConnectEvent(ButtonClickEvent, self.OnClick)
end
@ExecSpace("ClientOnly")
method void OnClick() end
@ExecSpace("ClientOnly")
method void OnEndPlay()
self.btnOk.Entity:DisconnectEvent(ButtonClickEvent, self.clickHandler)
end
```
### Text input
```lua
property TextGUIRendererInputComponent input = "uuid"
property any submitHandler = nil
@ExecSpace("ClientOnly")
method void OnBeginPlay()
self.submitHandler = self.input.Entity:ConnectEvent(TextInputSubmitEvent, self.OnSubmit)
end
@ExecSpace("ClientOnly")
method void OnSubmit(TextInputSubmitEvent event)
local text = event.text
end
```
### Slider
```lua
property SliderComponent slider = "uuid"
property any sliderHandler = nil
@ExecSpace("ClientOnly")
method void OnBeginPlay()
self.sliderHandler = self.slider.Entity:ConnectEvent(SliderValueChangedEvent, self.OnValueChanged)
end
@ExecSpace("ClientOnly")
method void OnValueChanged(SliderValueChangedEvent event)
local value = event.Value
end
```
### Touch / drag
```lua
-- attach UITouchReceiveComponent on the entity first (use the builder's touchReceive())
entity:ConnectEvent(UITouchDownEvent, handler)
entity:ConnectEvent(UITouchDragEvent, handler)
entity:ConnectEvent(UITouchUpEvent, handler)
```
---
## Runtime UI Caveats
Hard rules that show up as "UI doesn't respond" or "Server can't see UI". Memorize.
### Hard constraints (silent failure if broken)
1. **UI entities are client-only.** If an `@Component` on a UI entity defines `@ExecSpace("Server")`, `@ExecSpace("ServerOnly")`, or `@ExecSpace("Multicast")` methods, the runtime emits `'<entity>' is client only. '<component>.<method>' doesn't work normally.` and **RPCs do not work**. `@Sync` properties are also not synchronized. Route UI-to-server communication through an `@Logic` outside the UI entity, or a map entity `@Component`, then call the Server RPC.
2. **No UI entity access from server.** Referencing a UI entity in `@ExecSpace("Server")` / `@ExecSpace("ServerOnly")` returns **nil**. For server-to-UI updates, route through an `@ExecSpace("Client")` RPC.
3. **Put `@ExecSpace("ClientOnly")` on each method — a script-level annotation is a no-op for lifecycle callbacks.** `@ExecSpace` above the `script` line does **not** propagate to methods: `OnBeginPlay` / `OnUpdate` / `OnEndPlay` default to running on **both** server and client, and on the server every UI entity ref is `nil` → the first `self.<uiProp>.X` throws `[LEA-2007] AttemptToIndex`. Annotate every engine-invoked method (lifecycle callbacks, handlers, and any method that touches UI) with method-level `@ExecSpace("ClientOnly")`, as every example above does. As a defensive fallback you can also guard the first line: `if not isvalid(self.<uiProp>) then return end`.
4. **Do not attach UI components (ButtonComponent, etc.) to map / world entities** — UI-only. Trying to attach via builder/runtime silently misbehaves.
5. **`UIGroup DefaultShow=false`** — not visible until `Enable=true`. Also, if `DefaultShow=false` AND the group has no controller script outside to flip `Enable`, scripts inside the group never run `OnBeginPlay` / `OnUpdate` (typical symptom: "level-up popup never shows"). See [`ui-hierarchy.md`](ui-hierarchy.md) for the standard pattern.
### Movement / fade / visibility
6. **Move via `anchoredPosition`** — never set `Position` directly (engine treats it as a derived cache, your writes get overwritten).
7. **Fade via `CanvasGroupComponent.GroupAlpha`** — don't tween individual element alphas. One write covers the whole subtree consistently.
8. **Show/hide via `Enable`** — `popupGroup.Enable = true/false`. `Visible = false` keeps clicks alive and OnUpdate running (see [`ui-hierarchy.md`](ui-hierarchy.md) §5).
### Resource cleanup
9. **Always `DisconnectEvent` in `OnEndPlay`** — otherwise event handlers leak across script reloads / popup re-opens.
10. **`_TimerService:ClearTimer` in `OnEndPlay`** — store the timer ID returned by `SetTimerRepeat` and clear it.
### Animation timing
11. **Use a 1/60 repeating timer** for per-frame UI animation (`_TimerService:SetTimerRepeat(fn, 1/60)`). MSW doesn't expose a global UI Update hook.
12. **Measure delta with `_UtilLogic.ElapsedSeconds`** — diff between frames, never assume the timer interval is exact.
references/templates/scripts/ruid-lookup.cjs
#!/usr/bin/env node
'use strict';
/**
* UI Template RUID Lookup — run this to get RUID values for UI elements.
*
* Usage:
* node ruid-lookup.js # list available styles
* node ruid-lookup.js --style 1 # dump all RUIDs for style 1
* node ruid-lookup.js --style 1 --role button # filter by role keyword
*/
const fs = require('fs');
const path = require('path');
const SCRIPT_DIR = __dirname;
const SKILL_DIR = path.dirname(SCRIPT_DIR);
const STYLES = {
'1': { dir: 'style-1-black', pattern: 'Simple Popups (Black)' },
'2': { dir: 'style-2-diary', pattern: 'Minimal HUD (Diary)' },
'3': { dir: 'style-3-wood', pattern: 'Multi-Tab (Wood)' },
'4': { dir: 'style-4-blue', pattern: 'Transaction Flow (Blue)' },
};
function parseArgs() {
const args = process.argv.slice(2);
const result = { style: null, role: null };
for (let i = 0; i < args.length; i++) {
if ((args[i] === '--style' || args[i] === '-s') && args[i + 1]) {
result.style = args[++i];
} else if ((args[i] === '--role' || args[i] === '-r') && args[i + 1]) {
result.role = args[++i];
}
}
return result;
}
function extractRuids(styleDir) {
const uiDir = path.join(SKILL_DIR, styleDir);
const results = [];
const files = fs.readdirSync(uiDir).filter(f => f.endsWith('.ui')).sort();
for (const fname of files) {
const data = JSON.parse(fs.readFileSync(path.join(uiDir, fname), 'utf8'));
const entities = (data.ContentProto && data.ContentProto.Entities) || [];
for (const ent of entities) {
const js = ent.jsonString || {};
const name = js.name || '';
const comps = js['@components'] || [];
for (const comp of comps) {
const imageRuid = comp.ImageRUID;
if (imageRuid && typeof imageRuid === 'object') {
const did = imageRuid.DataId || '';
if (did) {
results.push({ file: fname, entity: name, ruid: did });
}
}
}
}
}
return results;
}
function classifyRole(entityName, fileName) {
const n = entityName.toLowerCase();
const f = fileName.toLowerCase();
if (f.includes('toast')) return 'toast';
if (f.includes('default')) return 'infrastructure';
if (['btn', 'button', 'ok', 'cancel', 'close', 'exit'].some(k => n.includes(k))) return 'button';
if (['slot', 'item', 'equip', 'inven'].some(k => n.includes(k))) return 'slot/item';
if (n.includes('icon')) return 'icon';
if (['panel', 'bg', 'popup', 'dim', 'paper'].some(k => n.includes(k))) return 'panel/background';
if (['fill', 'gauge', 'bar', 'hp', 'mp', 'exp', 'progress'].some(k => n.includes(k))) return 'gauge/bar';
if (['money', 'coin', 'meso', 'reward', 'gold'].some(k => n.includes(k))) return 'currency/reward';
if (['title', 'deco', 'line', 'pattern', 'effect'].some(k => n.includes(k))) return 'decoration';
if (['hud', 'match', 'timer', 'score'].some(k => n.includes(k))) return 'hud';
return 'other';
}
function main() {
const args = parseArgs();
if (!args.style) {
console.log('Available styles:');
for (const [k, v] of Object.entries(STYLES)) {
console.log(` --style ${k} → ${v.dir} (${v.pattern})`);
}
console.log('\nRoles: button, panel/background, slot/item, icon, gauge/bar, currency/reward, decoration, hud, toast');
return;
}
if (!STYLES[args.style]) {
console.error(`Error: style must be 1-4, got '${args.style}'`);
process.exit(1);
}
const styleInfo = STYLES[args.style];
const results = extractRuids(styleInfo.dir);
const seen = new Map();
for (const r of results) {
const role = classifyRole(r.entity, r.file);
const key = `${r.ruid}\0${role}`;
if (!seen.has(key)) {
seen.set(key, { ruid: r.ruid, role, entities: [] });
}
seen.get(key).entities.push(r.entity);
}
const grouped = {};
for (const info of seen.values()) {
if (!grouped[info.role]) grouped[info.role] = [];
grouped[info.role].push(info);
}
const roleFilter = args.role ? args.role.toLowerCase() : null;
console.log(`=== Style ${args.style}: ${styleInfo.pattern} (${styleInfo.dir}) ===\n`);
for (const role of Object.keys(grouped).sort()) {
if (roleFilter && !role.includes(roleFilter)) continue;
const items = grouped[role];
console.log(`[${role}]`);
for (const item of items) {
const unique = [...new Set(item.entities)];
let entitiesStr = unique.slice(0, 4).sort().join(', ');
if (unique.length > 4) entitiesStr += ` (+${unique.length - 4} more)`;
console.log(` ${item.ruid} ← ${entitiesStr}`);
}
console.log();
}
}
main();
references/templates/scripts/ui-structure.cjs
#!/usr/bin/env node
'use strict';
/**
* UI Template Structure Viewer — shows entity hierarchy, layout, and key properties.
*
* Usage:
* node ui-structure.js --style 1 # show all .ui files in style
* node ui-structure.js --style 1 --file ButtonGroup.ui # show specific file
* node ui-structure.js --style 1 --file PopupGroup.ui --depth 2 # limit hierarchy depth
* node ui-structure.js --style 1 --entity BasicPopup # dump full JSON for entity
* node ui-structure.js --style 1 --grep ExitButton # search entity name across all files
*/
const fs = require('fs');
const path = require('path');
const SCRIPT_DIR = __dirname;
const SKILL_DIR = path.dirname(SCRIPT_DIR);
const STYLES = {
'1': 'style-1-black',
'2': 'style-2-diary',
'3': 'style-3-wood',
'4': 'style-4-blue',
};
function parseArgs() {
const argv = process.argv.slice(2);
const result = { style: null, file: null, depth: null, entity: null, grep: null };
for (let i = 0; i < argv.length; i++) {
if ((argv[i] === '--style' || argv[i] === '-s') && argv[i + 1]) {
result.style = argv[++i];
} else if ((argv[i] === '--file' || argv[i] === '-f') && argv[i + 1]) {
result.file = argv[++i];
} else if ((argv[i] === '--depth' || argv[i] === '-d') && argv[i + 1]) {
result.depth = parseInt(argv[++i], 10);
} else if ((argv[i] === '--entity' || argv[i] === '-e') && argv[i + 1]) {
result.entity = argv[++i];
} else if ((argv[i] === '--grep' || argv[i] === '-g') && argv[i + 1]) {
result.grep = argv[++i];
}
}
return result;
}
function getAlignmentName(val) {
const names = {
0: 'Center', 1: 'Left', 2: 'Right',
3: 'TopCenter', 4: 'TopLeft', 5: 'TopRight',
6: 'BottomCenter', 7: 'BottomLeft', 8: 'BottomRight',
9: 'HStretchTop', 10: 'HStretchCenter', 11: 'HStretchBottom',
12: 'VStretchLeft', 13: 'VStretchCenter', 14: 'VStretchRight',
15: 'StretchAll',
};
return names[val] || String(val);
}
function summarizeEntity(js) {
const info = {};
info.name = js.name || '?';
info.enable = js.enable !== undefined ? js.enable : true;
info.displayOrder = js.displayOrder || 0;
const comps = js['@components'] || [];
const compTypes = [];
for (const comp of comps) {
let t = (comp['@type'] || '').replace('MOD.Core.', '');
compTypes.push(t);
if (t === 'UITransformComponent') {
const align = comp.AlignmentOption || 0;
info.align = getAlignmentName(align);
const pos = comp.anchoredPosition || {};
info.pos = `(${Math.round(pos.x || 0)}, ${Math.round(pos.y || 0)})`;
const size = comp.RectSize || {};
info.size = `${Math.round(size.x || 0)}x${Math.round(size.y || 0)}`;
} else if (t === 'UIGroupComponent') {
info.groupOrder = comp.GroupOrder || 0;
info.defaultShow = comp.DefaultShow !== undefined ? comp.DefaultShow : true;
} else if (t === 'ButtonComponent') {
compTypes[compTypes.length - 1] = 'Button';
} else if (t === 'TextComponent') {
const text = comp.Text || '';
if (text) info.text = text.slice(0, 30);
} else if (t === 'ScrollLayoutGroupComponent') {
compTypes[compTypes.length - 1] = 'ScrollLayout';
}
}
info.components = compTypes.filter(c => c !== 'UITransformComponent');
return info;
}
function printTree(entities, maxDepth) {
const sorted = entities.slice().sort((a, b) => {
const aJs = a.jsonString || {};
const bJs = b.jsonString || {};
const pathCmp = (aJs.path || '').localeCompare(bJs.path || '');
if (pathCmp !== 0) return pathCmp;
return (aJs.displayOrder || 0) - (bJs.displayOrder || 0);
});
for (const ent of sorted) {
const js = ent.jsonString || {};
const entPath = js.path || '';
const depth = (entPath.match(/\//g) || []).length - 2;
if (maxDepth !== null && depth > maxDepth) continue;
const indent = ' '.repeat(Math.max(0, depth));
const info = summarizeEntity(js);
const parts = [info.name];
if (info.groupOrder !== undefined) parts.push(`GroupOrder=${info.groupOrder}`);
if (info.defaultShow === false) parts.push('hidden');
if (info.align) parts.push(info.align);
if (info.pos && info.pos !== '(0, 0)') parts.push(info.pos);
if (info.size && info.size !== '0x0') parts.push(info.size);
const notableComps = (info.components || []).filter(
c => c !== 'CanvasGroupComponent' && c !== 'SpriteGUIRendererComponent'
);
if (notableComps.length) parts.push(`[${notableComps.join(', ')}]`);
if (info.text) parts.push(`"${info.text}"`);
if (!info.enable) parts.push('(disabled)');
console.log(`${indent}${parts.join(' | ')}`);
}
}
function findEntity(styleDir, entityName, targetFile) {
const files = targetFile
? [targetFile]
: fs.readdirSync(styleDir).filter(f => f.endsWith('.ui')).sort();
let found = false;
for (const fname of files) {
const filepath = path.join(styleDir, fname);
if (!fs.existsSync(filepath)) continue;
const data = JSON.parse(fs.readFileSync(filepath, 'utf8'));
const entities = (data.ContentProto && data.ContentProto.Entities) || [];
for (const ent of entities) {
const js = ent.jsonString || {};
const name = js.name || '';
if (name.toLowerCase() === entityName.toLowerCase()) {
found = true;
console.log(`\n--- ${fname} / ${js.path || ''} ---`);
console.log(JSON.stringify(ent, null, 2));
}
}
}
if (!found) {
console.log(`Entity '${entityName}' not found.`);
console.log('Tip: use --grep to search partial names.');
}
}
function grepEntities(styleDir, keyword, targetFile) {
const files = targetFile
? [targetFile]
: fs.readdirSync(styleDir).filter(f => f.endsWith('.ui')).sort();
const results = [];
for (const fname of files) {
const filepath = path.join(styleDir, fname);
if (!fs.existsSync(filepath)) continue;
const data = JSON.parse(fs.readFileSync(filepath, 'utf8'));
const entities = (data.ContentProto && data.ContentProto.Entities) || [];
for (const ent of entities) {
const js = ent.jsonString || {};
const name = js.name || '';
const entPath = js.path || '';
if (name.toLowerCase().includes(keyword.toLowerCase()) ||
entPath.toLowerCase().includes(keyword.toLowerCase())) {
const info = summarizeEntity(js);
results.push({ file: fname, path: entPath, info });
}
}
}
if (!results.length) {
console.log(`No entities matching '${keyword}' found.`);
return;
}
console.log(`Found ${results.length} entities matching '${keyword}':\n`);
for (const { file, path: p, info } of results) {
const parts = [info.name];
if (info.align) parts.push(info.align);
if (info.size && info.size !== '0x0') parts.push(info.size);
const notable = (info.components || []).filter(
c => c !== 'CanvasGroupComponent' && c !== 'SpriteGUIRendererComponent'
);
if (notable.length) parts.push(`[${notable.join(', ')}]`);
if (!info.enable) parts.push('(disabled)');
console.log(` ${file} ${p}`);
console.log(` ${parts.join(' | ')}`);
}
console.log(`\nUse --entity <name> to dump full JSON for a specific entity.`);
}
function processFile(filepath, maxDepth) {
const data = JSON.parse(fs.readFileSync(filepath, 'utf8'));
const filename = path.basename(filepath);
const entities = (data.ContentProto && data.ContentProto.Entities) || [];
console.log(`\n${'='.repeat(60)}`);
console.log(` ${filename} (${entities.length} entities)`);
console.log(`${'='.repeat(60)}`);
printTree(entities, maxDepth);
}
function main() {
const args = parseArgs();
if (!args.style) {
console.error("Error: --style is required. Use --style 1-4.");
process.exit(1);
}
if (!STYLES[args.style]) {
console.error(`Error: style must be 1-4, got '${args.style}'`);
process.exit(1);
}
const styleDir = path.join(SKILL_DIR, STYLES[args.style]);
if (args.entity) {
findEntity(styleDir, args.entity, args.file);
return;
}
if (args.grep) {
grepEntities(styleDir, args.grep, args.file);
return;
}
if (args.file) {
const filepath = path.join(styleDir, args.file);
if (!fs.existsSync(filepath)) {
console.error(`Error: ${filepath} not found`);
const available = fs.readdirSync(styleDir).filter(f => f.endsWith('.ui'));
console.error(`Available: ${available.join(', ')}`);
process.exit(1);
}
processFile(filepath, args.depth);
} else {
const files = fs.readdirSync(styleDir).filter(f => f.endsWith('.ui')).sort();
for (const fname of files) {
processFile(path.join(styleDir, fname), args.depth);
}
}
}
main();
references/templates/style-1-black/ButtonGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://c1ee38e4-b61d-4299-a1dd-d7a9b11f55c5",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "c1ee38e4-b61d-4299-a1dd-d7a9b11f55c5",
"path": "/ui/ButtonGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "ButtonGroup",
"path": "/ui/ButtonGroup",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "//",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": true,
"GroupOrder": 3,
"GroupType": 2,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8f7a6453-8e9b-4098-af83-030daa451cbf",
"path": "/ui/ButtonGroup/1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,script.Popupbutton",
"jsonString": {
"name": "1",
"path": "/ui/ButtonGroup/1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -710.8963,
"y": 239.96077
},
"OffsetMin": {
"x": -946.1799,
"y": 151.729416
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 235.2836,
"y": 88.23135
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -828.5381,
"y": 195.8451
},
"Position": {
"x": -828.5381,
"y": 195.8451,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "6efba31a09bb434f833edaceac5fd12a"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
},
{
"@type": "script.Popupbutton",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "5d0f4c9a-ddaa-4960-8d7b-808d4414dd07",
"path": "/ui/ButtonGroup/1/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/ButtonGroup/1/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 49.231,
"y": 56.6155
},
"OffsetMin": {
"x": -50.769,
"y": -43.3845
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -0.769,
"y": 6.6155
},
"Position": {
"x": -0.769,
"y": 6.6155,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"FontSize": 35,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "팝업1",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "ee07ee91-e610-487c-a1b0-d2b0fcca6b57",
"path": "/ui/ButtonGroup/2",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,script.Popupbutton",
"jsonString": {
"name": "2",
"path": "/ui/ButtonGroup/2",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "///",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -710.8963,
"y": 141.313873
},
"OffsetMin": {
"x": -946.1799,
"y": 53.08252
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 235.2836,
"y": 88.23135
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -828.5381,
"y": 97.1982
},
"Position": {
"x": -828.5381,
"y": 97.1982,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "6efba31a09bb434f833edaceac5fd12a"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
},
{
"@type": "script.Popupbutton",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "a8fe8866-5e8d-419a-ad75-eb52782f5437",
"path": "/ui/ButtonGroup/2/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/ButtonGroup/2/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 49.231,
"y": 56.6155
},
"OffsetMin": {
"x": -50.769,
"y": -43.3845
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -0.769,
"y": 6.6155
},
"Position": {
"x": -0.769,
"y": 6.6155,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"FontSize": 35,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "팝업2",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "9328525a-9459-4237-a55b-af54e5109b59",
"path": "/ui/ButtonGroup/3",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,script.Popupbutton",
"jsonString": {
"name": "3",
"path": "/ui/ButtonGroup/3",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -710.8963,
"y": 40.5581779
},
"OffsetMin": {
"x": -946.1799,
"y": -47.6731758
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 235.283569,
"y": 88.23135
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -828.5381,
"y": -3.5575
},
"Position": {
"x": -828.5381,
"y": -3.5575,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "6efba31a09bb434f833edaceac5fd12a"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
},
{
"@type": "script.Popupbutton",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "4ec03862-1fdd-4d2e-b4d2-baa9dd9a8b81",
"path": "/ui/ButtonGroup/3/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/ButtonGroup/3/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 49.231,
"y": 56.6155
},
"OffsetMin": {
"x": -50.769,
"y": -43.3845
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -0.769,
"y": 6.6155
},
"Position": {
"x": -0.769,
"y": 6.6155,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"FontSize": 35,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "팝업3",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b2a64e84-8997-4a02-9508-0ea893a672e0",
"path": "/ui/ButtonGroup/4",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,script.Popupbutton",
"jsonString": {
"name": "4",
"path": "/ui/ButtonGroup/4",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -710.8963,
"y": -60.197525
},
"OffsetMin": {
"x": -946.1799,
"y": -148.428879
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 235.283569,
"y": 88.23135
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -828.5381,
"y": -104.3132
},
"Position": {
"x": -828.5381,
"y": -104.3132,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "6efba31a09bb434f833edaceac5fd12a"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
},
{
"@type": "script.Popupbutton",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "de81edb3-d49d-4c5f-a884-7180c13743cc",
"path": "/ui/ButtonGroup/4/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/ButtonGroup/4/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 49.231,
"y": 56.6155
},
"OffsetMin": {
"x": -50.769,
"y": -43.3845
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -0.769,
"y": 6.6155
},
"Position": {
"x": -0.769,
"y": 6.6155,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"FontSize": 35,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "팝업4",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "bdca5b4a-d7f7-44d5-bce9-ec579e9ec739",
"path": "/ui/ButtonGroup/5",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,script.Popupbutton",
"jsonString": {
"name": "5",
"path": "/ui/ButtonGroup/5",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -710.8963,
"y": -156.73613
},
"OffsetMin": {
"x": -946.1799,
"y": -244.967484
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 235.283569,
"y": 88.23135
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -828.5381,
"y": -200.8518
},
"Position": {
"x": -828.5381,
"y": -200.8518,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "6efba31a09bb434f833edaceac5fd12a"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
},
{
"@type": "script.Popupbutton",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b3cb772e-0fc7-49bb-850e-c85399fc7331",
"path": "/ui/ButtonGroup/5/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/ButtonGroup/5/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 49.231,
"y": 56.6155
},
"OffsetMin": {
"x": -50.769,
"y": -43.3845
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -0.769,
"y": 6.6155
},
"Position": {
"x": -0.769,
"y": 6.6155,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"FontSize": 35,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "팝업5",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "e1bbf199-6f58-4989-9934-6c013bcd5f95",
"path": "/ui/ButtonGroup/6",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,script.Popupbutton",
"jsonString": {
"name": "6",
"path": "/ui/ButtonGroup/6",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 5,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -710.8963,
"y": -251.165726
},
"OffsetMin": {
"x": -946.1799,
"y": -339.3971
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 235.283569,
"y": 88.23135
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -828.5381,
"y": -295.2814
},
"Position": {
"x": -828.5381,
"y": -295.2814,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "6efba31a09bb434f833edaceac5fd12a"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
},
{
"@type": "script.Popupbutton",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "ad4a85c5-9c1e-48cf-8c1e-a8cbabfe4c32",
"path": "/ui/ButtonGroup/6/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/ButtonGroup/6/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 49.231,
"y": 56.6155
},
"OffsetMin": {
"x": -50.769,
"y": -43.3845
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -0.769,
"y": 6.6155
},
"Position": {
"x": -0.769,
"y": 6.6155,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"FontSize": 35,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "팝업6",
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-1-black/DefaultGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://c0bbe0ec-770a-4147-9f6f-a38cc4a53ca6",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "c0bbe0ec-770a-4147-9f6f-a38cc4a53ca6",
"path": "/ui/DefaultGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "DefaultGroup",
"path": "/ui/DefaultGroup",
"nameEditable": true,
"enable": false,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//",
"revision": 0,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": true,
"GroupOrder": 1,
"GroupType": 1,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2f850b97-b76e-432a-a22e-09f62343f7c7",
"path": "/ui/DefaultGroup/UIJoystick",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.JoystickComponent",
"jsonString": {
"name": "UIJoystick",
"path": "/ui/DefaultGroup/UIJoystick",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 0,
"origin": {
"type": "Model",
"entry_id": "UISprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 2,
"AlignmentOption": 7,
"AnchorsMax": {
"x": 0.0,
"y": 0.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 410.0,
"y": 330.0001
},
"OffsetMin": {
"x": 210.0,
"y": 129.999908
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 200.0,
"y": 200.0002
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 310.0,
"y": 230.0
},
"Position": {
"x": -650.0,
"y": -310.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": false,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.JoystickComponent",
"Axis": 0,
"DynamicStick": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7c0f8bb5-cf19-437c-9bb8-97e81f836dce",
"path": "/ui/DefaultGroup/UIChat",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ChatComponent",
"jsonString": {
"name": "UIChat",
"path": "/ui/DefaultGroup/UIChat",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "///",
"revision": 0,
"origin": {
"type": "Model",
"entry_id": "UIEmpty",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uiempty",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 717.8341,
"y": -32.4276428
},
"OffsetMin": {
"x": 20.1109619,
"y": -471.1826
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 697.723145,
"y": 438.754944
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 368.972534,
"y": -251.805115
},
"Position": {
"x": -591.027466,
"y": 288.1949,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": false,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ChatComponent",
"Expand": true,
"UseChatBalloon": true,
"UseChatEmotion": true,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-1-black/HUDGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://a582169d-c200-405b-83f3-950edd14fa36",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "a582169d-c200-405b-83f3-950edd14fa36",
"path": "/ui/HUDGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "HUDGroup",
"path": "/ui/HUDGroup",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//",
"revision": 557,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": true,
"GroupOrder": 0,
"GroupType": 1,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "98b5102d-912a-41b0-bc5a-cea76c08b6ec",
"path": "/ui/HUDGroup/QuestHUD",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "QuestHUD",
"path": "/ui/HUDGroup/QuestHUD",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 32,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -486.031921,
"y": -24.5723267
},
"OffsetMin": {
"x": -950.9071,
"y": -244.572327
},
"Pivot": {
"x": 1.0,
"y": 1.0
},
"RectSize": {
"x": 464.875183,
"y": 220.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -486.031921,
"y": -24.5723267
},
"Position": {
"x": -486.031921,
"y": 515.4277,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "b94f57f5db1646998b726cee0aaefaac"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": false,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Transition": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "9cc24390-570b-4a41-bd8b-c0f248c7c03d",
"path": "/ui/HUDGroup/QuestHUD/bg_title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "bg_title",
"path": "/ui/HUDGroup/QuestHUD/bg_title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 14,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 9,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -0.000183105469,
"y": -9.15527344E-05
},
"OffsetMin": {
"x": -0.000152587891,
"y": -55.00009
},
"Pivot": {
"x": 0.5,
"y": 1.0
},
"RectSize": {
"x": 464.875153,
"y": 55.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -0.00016784668,
"y": -9.15527344E-05
},
"Position": {
"x": -232.437775,
"y": -9.15527344E-05,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ab150cd6b7f148d6b90e093ea754f716"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.09411765,
"g": 0.09411765,
"b": 0.09411765,
"a": 0.4
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": false,
"Type": 2,
"Enable": false
}
],
"@version": 1
}
},
{
"id": "25a58f88-6d15-4298-a1f4-b2802ba12322",
"path": "/ui/HUDGroup/QuestHUD/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/HUDGroup/QuestHUD/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 22,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 9,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0006084442
},
"OffsetMin": {
"x": 0.0,
"y": -57.05301
},
"Pivot": {
"x": 0.5,
"y": 1.0
},
"RectSize": {
"x": 464.875183,
"y": 57.0536156
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0006084442
},
"Position": {
"x": -232.437592,
"y": 0.0006084442,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "02a3d8b1628d4f0cbbc69feaab59e365"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.5
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": false,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 0.8666667,
"b": 0.1254902,
"a": 1.0
},
"FontSize": 26,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.5,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 15,
"right": 65,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "메인 퀘스트",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "592e754e-8a00-4171-931b-197441e267c1",
"path": "/ui/HUDGroup/QuestHUD/Title/img_deco",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "img_deco",
"path": "/ui/HUDGroup/QuestHUD/Title/img_deco",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 9,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -17.0,
"y": 17.5
},
"OffsetMin": {
"x": -53.0,
"y": -17.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 36.0,
"y": 35.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -35.0,
"y": 0.0
},
"Position": {
"x": 197.437592,
"y": -28.5268078,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "af09c427a2a846e7a85896316d17726e"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": false,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "bc9cacba-e3fb-457d-9e91-a71c07936004",
"path": "/ui/HUDGroup/QuestHUD/Title/closeButton",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "closeButton",
"path": "/ui/HUDGroup/QuestHUD/Title/closeButton",
"nameEditable": true,
"enable": false,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 14,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 1.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -5.0,
"y": -5.0
},
"OffsetMin": {
"x": -65.0,
"y": 5.0
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 60.0,
"y": 47.0536156
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -5.0,
"y": 0.0
},
"Position": {
"x": 227.437592,
"y": -28.5268078,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": false
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Transition": 0,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 32,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "X",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2fc13614-d044-4d37-aa63-7c649f25d667",
"path": "/ui/HUDGroup/QuestHUD/QuestDescription",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "QuestDescription",
"path": "/ui/HUDGroup/QuestHUD/QuestDescription",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "////",
"revision": 9,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.00207519531,
"y": -55.0001068
},
"OffsetMin": {
"x": 2.355011,
"y": -0.000106811523
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 462.522247,
"y": 165.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 1.17854309,
"y": -27.5001068
},
"Position": {
"x": -231.259064,
"y": -137.5001,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "02a3d8b1628d4f0cbbc69feaab59e365"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.3
},
"RaycastTarget": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 2,
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 24,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.5,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 20,
"top": 10,
"bottom": 0
},
"Text": "주황버섯 처치하기 0/10\n슬라임 처치하기 0/10",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7c33f7a7-fee6-47d4-b5d4-114ebedeca94",
"path": "/ui/HUDGroup/UIMatch",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "UIMatch",
"path": "/ui/HUDGroup/UIMatch",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "///",
"revision": 27,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 89.95685,
"y": -38.22171
},
"OffsetMin": {
"x": -450.043152,
"y": -378.2217
},
"Pivot": {
"x": 1.0,
"y": 1.0
},
"RectSize": {
"x": 540.0,
"y": 340.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 89.95685,
"y": -38.22171
},
"Position": {
"x": 89.95685,
"y": 501.7783,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "b94f57f5db1646998b726cee0aaefaac"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7ad31950-2c28-436b-aa0d-6469ccb3fef0",
"path": "/ui/HUDGroup/UIMatch/img_pattern",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "img_pattern",
"path": "/ui/HUDGroup/UIMatch/img_pattern",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 12,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -15.0,
"y": -15.0
},
"OffsetMin": {
"x": 15.0,
"y": 15.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 510.0,
"y": 310.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": -270.0,
"y": -170.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ab150cd6b7f148d6b90e093ea754f716"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.09411765,
"g": 0.09411765,
"b": 0.09411765,
"a": 0.4
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": false,
"Type": 2,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "280f2b16-ed72-434d-8de3-58b621580bdd",
"path": "/ui/HUDGroup/UIMatch/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/HUDGroup/UIMatch/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 9,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -15.0,
"y": 0.0
},
"OffsetMin": {
"x": 15.0,
"y": -70.0
},
"Pivot": {
"x": 0.5,
"y": 1.0
},
"RectSize": {
"x": 510.0,
"y": 70.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": -270.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "6fc91a7377b94070a60cb35d3d8ed7b7"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.117647059,
"g": 0.121568628,
"b": 0.1254902,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.9411765,
"g": 0.8156863,
"b": 0.13333334,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "미니 게임 개최!",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "a80394ca-f393-4ea8-a905-c7e5ff26141a",
"path": "/ui/HUDGroup/UIMatch/Title/img_deco",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "img_deco",
"path": "/ui/HUDGroup/UIMatch/Title/img_deco",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 11,
"AnchorsMax": {
"x": 1.0,
"y": 0.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": -1.0
},
"Pivot": {
"x": 0.5,
"y": 1.0
},
"RectSize": {
"x": 510.0,
"y": 1.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": -70.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.2
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8e226013-fde7-4478-a56f-fbd55b9d7cea",
"path": "/ui/HUDGroup/UIMatch/timer",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "timer",
"path": "/ui/HUDGroup/UIMatch/timer",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 72.0,
"y": 25.5
},
"OffsetMin": {
"x": -10.0,
"y": -65.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 82.0,
"y": 91.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 31.0,
"y": -20.0
},
"Position": {
"x": -509.0,
"y": -20.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "57cb5bfed8ac48b38566103fbdc729a2"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "ede24626-107d-479d-80c1-d5bc2ea250bf",
"path": "/ui/HUDGroup/UIMatch/timer/text_count_timer",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "text_count_timer",
"path": "/ui/HUDGroup/UIMatch/timer/text_count_timer",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 53.0,
"y": 44.0
},
"OffsetMin": {
"x": -47.0,
"y": -56.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 3.0,
"y": -6.0
},
"Position": {
"x": 3.0,
"y": -6.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 3,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 32,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "99",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "e45094ce-16de-4cf3-b627-93da9349b77f",
"path": "/ui/HUDGroup/UIMatch/matchCancelBtn",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "matchCancelBtn",
"path": "/ui/HUDGroup/UIMatch/matchCancelBtn",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 11,
"AnchorsMax": {
"x": 1.0,
"y": 0.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -39.0,
"y": 108.0
},
"OffsetMin": {
"x": 201.0,
"y": 38.0
},
"Pivot": {
"x": 0.5,
"y": 0.0
},
"RectSize": {
"x": 300.0,
"y": 70.0
},
"UIMode": 1,
"UIScale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 81.0,
"y": 38.0
},
"Position": {
"x": -189.0,
"y": -302.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "c96a2755dff64f6385f689bd9eff397a"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "0e148607-8e47-4632-9a21-4f47acb3e95c",
"path": "/ui/HUDGroup/UIMatch/matchCancelBtn/matchBtnText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "matchBtnText",
"path": "/ui/HUDGroup/UIMatch/matchCancelBtn/matchBtnText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 5.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 300.0,
"y": 65.0
},
"UIMode": 1,
"UIScale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 2.5
},
"Position": {
"x": 0.0,
"y": 37.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 26,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "취소",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "0402023f-b739-4d20-acd8-0a514fbc1b1f",
"path": "/ui/HUDGroup/UIMatch/matchBtn",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "matchBtn",
"path": "/ui/HUDGroup/UIMatch/matchBtn",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 11,
"AnchorsMax": {
"x": 1.0,
"y": 0.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -39.0,
"y": 108.0
},
"OffsetMin": {
"x": 201.0,
"y": 38.0
},
"Pivot": {
"x": 0.5,
"y": 0.0
},
"RectSize": {
"x": 300.0,
"y": 70.0
},
"UIMode": 1,
"UIScale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 81.0,
"y": 38.0
},
"Position": {
"x": -189.0,
"y": -302.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "bf5103e7f62948999e355c322dfbff4c"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "4ccdf40f-c6d7-4dd1-a993-625a020a5baa",
"path": "/ui/HUDGroup/UIMatch/matchBtn/matchBtnText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "matchBtnText",
"path": "/ui/HUDGroup/UIMatch/matchBtn/matchBtnText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 5.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 300.0,
"y": 65.0
},
"UIMode": 1,
"UIScale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 2.5
},
"Position": {
"x": 0.0,
"y": 37.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 26,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "참가",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "0c772aa1-b2ac-41c4-acc8-264c860ce406",
"path": "/ui/HUDGroup/UIMatch/textMatchGame",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "textMatchGame",
"path": "/ui/HUDGroup/UIMatch/textMatchGame",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 5,
"pathConstraints": "////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 9,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -15.0,
"y": -78.0
},
"OffsetMin": {
"x": 15.0,
"y": -128.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 510.0,
"y": 50.0
},
"UIMode": 1,
"UIScale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -103.0
},
"Position": {
"x": -270.0,
"y": -103.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "미니게임 이름",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "f6c757fb-cc70-43e2-b9ea-71477687c301",
"path": "/ui/HUDGroup/UIMatch/textMatchInfo",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "textMatchInfo",
"path": "/ui/HUDGroup/UIMatch/textMatchInfo",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 6,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 9,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -15.0,
"y": -123.0
},
"OffsetMin": {
"x": 15.0,
"y": -173.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 510.0,
"y": 50.0
},
"UIMode": 1,
"UIScale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -148.0
},
"Position": {
"x": -270.0,
"y": -148.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.635294139,
"g": 0.635294139,
"b": 0.635294139,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.635294139,
"g": 0.635294139,
"b": 0.635294139,
"a": 1.0
},
"FontSize": 26,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "참여 가능 인원 : 1~10명",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "ab2cb663-b85c-42bb-82c1-7b6ba7bfb3bf",
"path": "/ui/HUDGroup/UIMatch/textRecommendedLevel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "textRecommendedLevel",
"path": "/ui/HUDGroup/UIMatch/textRecommendedLevel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 7,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 9,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -15.0,
"y": -168.0
},
"OffsetMin": {
"x": 15.0,
"y": -218.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 510.0,
"y": 50.0
},
"UIMode": 1,
"UIScale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -193.0
},
"Position": {
"x": -270.0,
"y": -193.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.635294139,
"g": 0.635294139,
"b": 0.635294139,
"a": 1.0
},
"FontSize": 26,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "참여 권장 레벨 : LV 5 ↑",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b27fc76c-4a38-4d4c-85e5-d2f7158a1d64",
"path": "/ui/HUDGroup/UIMatch/textWaitInfo",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "textWaitInfo",
"path": "/ui/HUDGroup/UIMatch/textWaitInfo",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 8,
"pathConstraints": "////",
"revision": 7,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 7,
"AnchorsMax": {
"x": 0.0,
"y": 0.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 200.0,
"y": 104.0
},
"OffsetMin": {
"x": 43.0,
"y": 43.0
},
"Pivot": {
"x": 0.0,
"y": 0.0
},
"RectSize": {
"x": 157.0,
"y": 61.0
},
"UIMode": 1,
"UIScale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 43.0,
"y": 43.0
},
"Position": {
"x": -497.0,
"y": -297.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 0.99999994,
"y": 0.99999994,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "6212be928ee44932a246cb7e318989ad"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 32,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 50,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "0",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "cc7836be-5b7a-4511-b8a4-217730510bd2",
"path": "/ui/HUDGroup/UIMatch/textWaitInfo/icon_user",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "icon_user",
"path": "/ui/HUDGroup/UIMatch/textWaitInfo/icon_user",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 63.0,
"y": 13.5
},
"OffsetMin": {
"x": 31.0,
"y": -13.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 32.0,
"y": 27.0
},
"UIMode": 1,
"UIScale": {
"x": 1.00000012,
"y": 1.00000012,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 47.0,
"y": 0.0
},
"Position": {
"x": 47.0,
"y": 30.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.00000012,
"y": 1.00000012,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "dca918f7a5a64890976a5044e1c62dbd"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-1-black/Popupbutton.mlua
@Component
script Popupbutton extends Component
@ExecSpace("ClientOnly")
@EventSender("Entity", "8f7a6453-8e9b-4098-af83-030daa451cbf")
handler HandleButtonClickEvent(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
if Entity.Name~="1" then return end
--AchieveUI
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/AchieveUI")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/AchieveUI/TitlePanel/ExitButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "ee07ee91-e610-487c-a1b0-d2b0fcca6b57")
handler HandleButtonClickEvent2(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
if Entity.Name~="2" then return end
--MonsterDexUI
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/MonsterDexUI")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/MonsterDexUI/TitlePanel/ExitButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "9328525a-9459-4237-a55b-af54e5109b59")
handler HandleButtonClickEvent3(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
if Entity.Name~="3" then return end
--QuestUI"
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/QuestUI")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/QuestUI/QuestUITitle/ExitButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "b2a64e84-8997-4a02-9508-0ea893a672e0")
handler HandleButtonClickEvent4(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
if Entity.Name~="4" then return end
--InventoryUI
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/InventoryUI")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/InventoryUI/TopPanel/ExitButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "bdca5b4a-d7f7-44d5-bce9-ec579e9ec739")
handler HandleButtonClickEvent5(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
if Entity.Name~="5" then return end
--BasicPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/ShopUI")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/ShopUI/TopPanel/ExitButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "e1bbf199-6f58-4989-9934-6c013bcd5f95")
handler HandleButtonClickEvent6(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
if Entity.Name~="6" then return end
--BasicPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup/PopupBtnOK")
local cancelbutton2=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup/PopupBtnCancel")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
cancelbutton2:ConnectEvent(ButtonClickEvent,cancel)
end
endreferences/templates/style-1-black/ruid-map.md
# Style 1 — RUID Map
Use these `ImageRUID.DataId` values when applying this template's visual style.
## UI Frame / Panel Backgrounds
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `785cacd8c36b4e1bb9040df26683f949` | Main popup background (large panels) | AchieveUI, InventoryUI, MonsterDexBG, QuestUI, ShopUI |
| `b94f57f5db1646998b726cee0aaefaac` | Secondary panel background | QuestHUD, UIMatch, BasicPopup |
| `129f02486c2baef49a41b31ce16171f6` | Content panel (inner area) | AchievePanel |
| `a48d4d4656454e3e872288317a8466ad` | Top/bottom border strip | img_top, img_bottom |
| `84447f698ccc4b1aa8bacd96e1608223` | Top panel header | TopPanel |
| `ab150cd6b7f148d6b90e093ea754f716` | Title background / pattern bar | bg_title, img_pattern |
| `c2c6e3d00c4340ce97f91a50b7d89fb8` | Quest/popup title bar | QuestUITitle, txt_title |
## Buttons
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `6efba31a09bb434f833edaceac5fd12a` | Primary action button (popup-opener) | ButtonGroup 1-6, GetRewardButton |
| `ebf5e286d16447ff8f01a44f009723e8` | Confirm button (OK) | PopupBtnOK |
| `ace4c89669454cc49e2750b5a1e0513a` | Cancel button | PopupBtnCancel |
| `3fa84442296e4a59bcc5ed6e7ba632f6` | Exit/close button (X) | ExitButton |
| `658a49cc805c4d1b8440e58915ba25dd` | Quest cancel button | QuestCancelButton |
| `c0d9d7fe51214dd4a25f78b85338b577` | Quest complete button | QuestCompleteButton |
| `fab46ad80f7340b88b23216a67e176d3` | Category/tab button | CategoryButton |
| `bf5103e7f62948999e355c322dfbff4c` | Match start button | matchBtn |
| `c96a2755dff64f6385f689bd9eff397a` | Match cancel button | matchCancelBtn |
## Icons & Decorations
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `af09c427a2a846e7a85896316d17726e` | Decorative image | img_deco |
| `dca918f7a5a64890976a5044e1c62dbd` | User/profile icon | icon_user |
| `c6ac7299e3174a9e9e1fff0de8adfdec` | X mark icon (close indicator) | icon_x |
| `6fc91a7377b94070a60cb35d3d8ed7b7` | Title decoration | Title |
| `57cb5bfed8ac48b38566103fbdc729a2` | Timer icon | timer |
| `6212be928ee44932a246cb7e318989ad` | Info text background | textWaitInfo |
| `e408ed1d6be94f0ca53d538bf47cb314` | Background effect | bg_effect |
## Items & Slots
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `d9d1070e225f46e9b445ada1bffc49ce` | Item slot frame | ItemSlot, ItemSlot_1, Slot |
| `1aadfa1e39c3c4e4ea0339287bca2961` | Currency/money icon | MoneySprite, MoneySprite_1 |
| `1e5e576fa39554b4a9d4b356354219c6` | Shop item slot | ShopItemSlot |
| `53fcad1ac7dd4d96a03cac8f429a1da1` | Generic item sprite | Sprite, itemSprite |
| `09caabbe7ddd41c4ab37061d5669b312` | Specific item sprite | itemSprite |
| `b467d65ecabb1ae4d9770f6a7a629231` | Achievement sprite | AchieveSprite |
| `f86992ba9c41487c8480fcb893fcbda6` | Monster sprite placeholder | MonsterSprite, Sprite |
| `00a68650f2564aae9f4719d2e734bc3f` | Reward item icon | RewardItemSprite |
| `f01ff6c1c0d25014baca8f27ba2609a0` | Reward title decoration | RewardTitle |
## Selection & Indicators
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `8cacae54ab5f4e2d81770f3e984c13cc` | Selected state highlight | line_selected |
| `497f780086744a43b217af42b790b8f7` | Slot border line | slot_line |
| `02a3d8b1628d4f0cbbc69feaab59e365` | Description/quest info background | QuestDescription, Title |
## Toast
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `7d614552ba7843049bb48ebd4509fb8f` | Toast message background | Toast_message |
references/templates/style-1-black/structure.md
# Style 1 (Black) — UI Structure
Format: `Name | Alignment | (x, y) | WxH | [Components] | (state)`
```
============================================================
ButtonGroup.ui (13 entities)
============================================================
ButtonGroup | GroupOrder=3 | StretchAll | 1920x1080 | [UIGroupComponent]
1 | Center | (-829, 196) | 235x88 | [Button, script.Popupbutton]
UIText | Center | (-1, 7) | 100x100 | [TextComponent] | "Popup 1"
2 | Center | (-829, 97) | 235x88 | [Button, script.Popupbutton]
UIText | Center | (-1, 7) | 100x100 | [TextComponent] | "Popup 2"
3 | Center | (-829, -4) | 235x88 | [Button, script.Popupbutton]
UIText | Center | (-1, 7) | 100x100 | [TextComponent] | "Popup 3"
4 | Center | (-829, -104) | 235x88 | [Button, script.Popupbutton]
UIText | Center | (-1, 7) | 100x100 | [TextComponent] | "Popup 4"
5 | Center | (-829, -201) | 235x88 | [Button, script.Popupbutton]
UIText | Center | (-1, 7) | 100x100 | [TextComponent] | "Popup 5"
6 | Center | (-829, -295) | 235x88 | [Button, script.Popupbutton]
UIText | Center | (-1, 7) | 100x100 | [TextComponent] | "Popup 6"
============================================================
DefaultGroup.ui (3 entities)
============================================================
DefaultGroup | GroupOrder=1 | StretchAll | 1920x1080 | [UIGroupComponent] | (disabled)
UIChat | TopLeft | (369, -252) | 698x439 | [ChatComponent]
UIJoystick | BottomLeft | (310, 230) | 200x200 | [JoystickComponent]
============================================================
HUDGroup.ui (22 entities)
============================================================
HUDGroup | GroupOrder=0 | StretchAll | 1920x1080 | [UIGroupComponent]
QuestHUD | TopCenter | (-486, -25) | 465x220 | [Button]
QuestDescription | StretchAll | (1, -28) | 463x165 | [TextComponent] | "Defeat Orange Mushroom 0/10
Defeat Slime 0/10"
Title | HStretchTop | 465x57 | [TextComponent] | "Main Quest"
bg_title | HStretchTop | (-0, -0) | 465x55
UIMatch | TopCenter | (90, -38) | 540x340
Title | HStretchTop | 510x70 | [TextComponent] | "Mini Game Open!"
img_pattern | StretchAll | 510x310
matchBtn | HStretchBottom | (81, 38) | 300x70 | [Button]
matchCancelBtn | HStretchBottom | (81, 38) | 300x70 | [Button]
textMatchGame | HStretchTop | (0, -103) | 510x50 | [TextComponent] | "Mini Game Name"
textMatchInfo | HStretchTop | (0, -148) | 510x50 | [TextComponent] | "Max Players: 1~10"
textRecommendedLevel | HStretchTop | (0, -193) | 510x50 | [TextComponent] | "Recommended Level: LV 5 ↑"
textWaitInfo | BottomLeft | (43, 43) | 157x61 | [TextComponent] | "0"
timer | TopLeft | (31, -20) | 82x91
============================================================
PopupGroup.ui (131 entities)
============================================================
PopupGroup | GroupOrder=4 | StretchAll | 1920x1080 | [UIGroupComponent]
AchieveUI | Center | (0, -0) | 1408x680 | (disabled)
Panel_slot | StretchAll | (0, -35) | 1328x530 | [GridViewComponent]
TitlePanel | HStretchTop | 1408x100
BasicPopup | Center | (8, 5) | 981x508 | (disabled)
PopupBtnCancel | Center | (206, -155) | 415x105 | [Button, TextComponent] | "Cancel"
PopupBtnOK | Center | (-206, -155) | 415x105 | [Button, TextComponent] | "OK"
PopupMessage | Center | (0, 80) | 780x260 | [TextComponent] | "Popup Message"
deco_line | HStretchCenter | (0, -70) | 945x2
img_deco | StretchAll | (0, -0) | 955x482
img_pattern | StretchAll | 951x478
InventoryUI | Center | (-32, -11) | 740x1046 | (disabled)
BottomPanel | HStretchBottom | (0, 13) | 714x80
CategoryPanel | HStretchTop | (0, -124) | 646x88 | [ScrollLayout]
ContentPanel | StretchAll | (40, 93) | 660x718 | [ScrollLayout]
TopPanel | HStretchTop | 732x97
MonsterDexUI | Center | (0, -18) | 1455x1066 | (disabled)
AchieveBG | HStretchBottom | (0, 60) | 1351x17
CategoryPanel | TopLeft | (62, -124) | 602x86 | [ScrollLayout]
MonsterDexBG | StretchAll | (0, 10) | 1455x1046
Panel_info | TopRight | (-62, -124) | 700x829
Panel_slot | StretchAll | (40, 103) | 615x728
TitlePanel | HStretchTop | 1455x100
QuestUI | Center | (0, -26) | 1376x954 | (disabled)
LeftPanel | StretchAll | (-344, -38) | 623x811 | [ScrollLayout]
QuestUITitle | HStretchTop | 1376x97
RightPanel | VStretchRight | (-366, -48) | 706x831
ShopUI | Center | (-14, 31) | 1600x800 | (disabled)
CategoryPanel | VStretchLeft | (43, -115) | 200x642 | [ScrollLayout]
ContentsPanel | StretchAll | (-43, -115) | 1277x642 | [ScrollLayout]
TopPanel | HStretchTop | 1592x97
============================================================
ToastGroup.ui (2 entities)
============================================================
ToastGroup | GroupOrder=2 | hidden | StretchAll | 1920x1080 | [UIGroupComponent] | (disabled)
Toast_message | TopCenter | (0, -64) | 210x79 | [TextComponent] | "message"
```
references/templates/style-1-black/ToastGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://0bc398f9-29cb-4d89-a78d-f24742b117e8",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "0bc398f9-29cb-4d89-a78d-f24742b117e8",
"path": "/ui/ToastGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "ToastGroup",
"path": "/ui/ToastGroup",
"nameEditable": true,
"enable": false,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "//",
"revision": 0,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": false,
"GroupOrder": 2,
"GroupType": 1,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7af9e538-1713-49f7-a83e-711c0f4b4a3c",
"path": "/ui/ToastGroup/Toast_message",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "Toast_message",
"path": "/ui/ToastGroup/Toast_message",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 0,
"origin": {
"type": "Model",
"entry_id": "UISprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 105.221237,
"y": -24.353981
},
"OffsetMin": {
"x": -105.221237,
"y": -103.646019
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 210.442474,
"y": 79.29204
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -64.0
},
"Position": {
"x": 0.0,
"y": 476.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "7d614552ba7843049bb48ebd4509fb8f"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.6
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 27,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 50,
"right": 50,
"top": 20,
"bottom": 20
},
"SizeFit": true,
"Text": "message",
"UseOutLine": false,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-2-diary/HUDGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://c0bbe0ec-770a-4147-9f6f-a38cc4a53ca6",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "c0bbe0ec-770a-4147-9f6f-a38cc4a53ca6",
"path": "/ui/HUDGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "HUDGroup",
"path": "/ui/HUDGroup",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "//",
"revision": 455,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": true,
"GroupOrder": 3,
"GroupType": 1,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "afdaaac0-a090-4f7d-b5b5-fd85b942db86",
"path": "/ui/HUDGroup/PlrprofileUI",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "PlrprofileUI",
"path": "/ui/HUDGroup/PlrprofileUI",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 59,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 479.022827,
"y": 517.6725
},
"OffsetMin": {
"x": 40.0228271,
"y": 323.6725
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 439.0,
"y": 194.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 259.522827,
"y": 420.6725
},
"Position": {
"x": -700.4772,
"y": 420.6725,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "508fa7a5b759485caff7292ef1b50632"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "19b9495e-5ccd-4a3d-b80b-1a0a64a53db6",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Profilepanel",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 30,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 9.98973846E-05
},
"OffsetMin": {
"x": 0.0,
"y": 4.0001
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 439.0,
"y": 190.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 2.0001
},
"Position": {
"x": 0.0,
"y": 2.0001,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7a9222bd-a239-4602-9db8-934ba6146f9c",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel/Exp_Panel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.SliderComponent",
"jsonString": {
"name": "Exp_Panel",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel/Exp_Panel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 13,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 172.36319,
"y": 87.6716
},
"OffsetMin": {
"x": -20.6368027,
"y": 34.6716
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 193.0,
"y": 53.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 75.8632,
"y": 61.1716
},
"Position": {
"x": 75.8632,
"y": -33.8284,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "8201d19db2724615931078a647ad3037"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.SliderComponent",
"Direction": 0,
"FillRectColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FillRectImageRUID": {
"DataId": "c7ed5963aa1d4e92ad30cba3eb695e99"
},
"FillRectPadding": {
"left": 4,
"right": 4,
"top": 4,
"bottom": 4
},
"HandleAreaPadding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"HandleColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HandleImageRUID": {
"DataId": ""
},
"HandleSize": {
"x": 50.0,
"y": 50.0
},
"MaxValue": 100.0,
"MinValue": 0.0,
"OverrideSorting": false,
"UseHandle": false,
"UseIntegerValue": false,
"Value": 69.14673,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "416eeb87-f269-45ae-81c3-fd3bbae714ec",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel/img_arrow",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "img_arrow",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel/img_arrow",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 186.999908,
"y": 39.4998
},
"OffsetMin": {
"x": 172.999908,
"y": 16.4998
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 14.0,
"y": 23.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 179.999908,
"y": 27.9998
},
"Position": {
"x": -39.50009,
"y": 27.9998,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "900b00b6c24b40bb8a77fa4071127c0e"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.3254902,
"g": 0.160784319,
"b": 0.08627451,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "1c61cfba-35be-481b-87fe-b2e8899be9f3",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel/img_arrow/Name",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Name",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel/img_arrow/Name",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 17,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 208.548676,
"y": 21.7701111
},
"OffsetMin": {
"x": 37.0,
"y": -21.76971
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 171.548676,
"y": 43.53982
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 37.0,
"y": 0.0002
},
"Position": {
"x": 30.0,
"y": 0.0002,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "4d9d1f67e2e648f3a6329b1cee207207"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.976256132,
"g": 0.6788956,
"b": 0.5638788,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 3,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 2.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 10,
"right": 15,
"top": 0,
"bottom": 0
},
"SizeFit": true,
"Text": "NameText",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "3f62a983-ce44-4637-9598-441203fb6b16",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel/img_heart",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "img_heart",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel/img_heart",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 13,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -10.0,
"y": 84.0
},
"OffsetMin": {
"x": -62.0,
"y": 36.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 52.0,
"y": 48.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -36.0,
"y": 60.0
},
"Position": {
"x": -36.0,
"y": -35.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "dcb441051ce34d7ba63961a4d37230c8"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "ae9e0ab1-dd88-4ee5-b4df-ef117ffe215b",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel/Level",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Level",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel/Level",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "/////",
"revision": 12,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 38.9996,
"y": 90.0001
},
"OffsetMin": {
"x": -111.0004,
"y": 30.0001
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 150.0,
"y": 60.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -36.0004,
"y": 60.0001
},
"Position": {
"x": -36.0004,
"y": -34.9999,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "dcb441051ce34d7ba63961a4d37230c8"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 2.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 4
},
"SizeFit": false,
"Text": "1",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "e257af8c-2dff-4a47-97bb-19c0af9e7680",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel/profileimage",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "profileimage",
"path": "/ui/HUDGroup/PlrprofileUI/Profilepanel/profileimage",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "/////",
"revision": 20,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 139.9999,
"y": 46.0
},
"OffsetMin": {
"x": 37.9998932,
"y": -56.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 102.0,
"y": 102.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 88.99989,
"y": -5.0
},
"Position": {
"x": -130.5001,
"y": -5.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9e9a29005c204faf940104e65bb14941"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "6d52af82-8918-49d0-864f-f279ad2b981f",
"path": "/ui/HUDGroup/BroadCastUI",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "BroadCastUI",
"path": "/ui/HUDGroup/BroadCastUI",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "///",
"revision": 20,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 1492.90491,
"y": 411.231
},
"OffsetMin": {
"x": 511.862671,
"y": 275.3384
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 981.042236,
"y": 135.892578
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 1002.38379,
"y": 343.2847
},
"Position": {
"x": 42.38379,
"y": 343.2847,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "1bed45e2-9962-4a0b-81ee-c61e3fbcf86b",
"path": "/ui/HUDGroup/BroadCastUI/Panel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Panel",
"path": "/ui/HUDGroup/BroadCastUI/Panel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 372.3275,
"y": 143.024292
},
"OffsetMin": {
"x": -516.6725,
"y": 8.0243
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 889.0,
"y": 135.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -72.1725,
"y": 75.5243
},
"Position": {
"x": -72.1725,
"y": 75.5243,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "c2b7536965db46099801551b0b31f055"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8a157580-8729-4fd8-a251-f75b6e66a86f",
"path": "/ui/HUDGroup/BroadCastUI/Panel/Text",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Text",
"path": "/ui/HUDGroup/BroadCastUI/Panel/Text",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 377.5519,
"y": 39.6695175
},
"OffsetMin": {
"x": -377.5519,
"y": -39.6695175
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 755.1038,
"y": 79.339035
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 24,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "플레이어님이 ㅇㅇㅇ 제작에 성공하였습니다.",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-2-diary/Popupbutton.mlua
@Component
script Popupbutton extends Component
@ExecSpace("ClientOnly")
@EventSender("Entity", "a721af74-fd2c-4c59-aacf-9733620d1d6e")
handler HandleButtonClickEvent(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
if Entity.Name~="1" then return end
--GameResultPanel
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/GameResultPanel")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/GameResultPanel/Btn_Ok_1")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "02210bfa-a0b8-485e-9e0c-17062d93b17f")
handler HandleButtonClickEvent2(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
if Entity.Name~="2" then return end
--InventoryUI
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/InventoryUI")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/InventoryUI/CloseButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "5ec12c2a-4125-46a7-8d58-ce8f68155fd4")
handler HandleButtonClickEvent3(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
if Entity.Name~="3" then return end
--BasicPopup2
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup2")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup2/CloseButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "e07d430e-5837-4582-91e7-3e5bf45af75b")
handler HandleButtonClickEvent4(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
if Entity.Name~="4" then return end
--BasicPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup/Btn_Ok")
local cancelbutton2=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup/Btn_No")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
cancelbutton2:ConnectEvent(ButtonClickEvent,cancel)
end
endreferences/templates/style-2-diary/Popupbutton.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://4ea97af5-d86c-4edf-9641-2b2620d77495",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "4ea97af5-d86c-4edf-9641-2b2620d77495",
"path": "/ui/Popupbutton",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "Popupbutton",
"path": "/ui/Popupbutton",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "//",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": true,
"GroupOrder": 2,
"GroupType": 2,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "a721af74-fd2c-4c59-aacf-9733620d1d6e",
"path": "/ui/Popupbutton/1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,script.Popupbutton",
"jsonString": {
"name": "1",
"path": "/ui/Popupbutton/1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 172.864319,
"y": 280.43222
},
"OffsetMin": {
"x": 44.06842,
"y": 182.395569
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 128.7959,
"y": 98.036644
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 108.46637,
"y": 231.4139
},
"Position": {
"x": -851.5336,
"y": 231.4139,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
},
{
"@type": "script.Popupbutton",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "900d74e7-8cec-40c5-9170-029660136616",
"path": "/ui/Popupbutton/1/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/Popupbutton/1/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 114.396118,
"y": 53.1414
},
"OffsetMin": {
"x": 14.3961182,
"y": -46.8586
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 64.39612,
"y": 3.14140034
},
"Position": {
"x": -0.00183105469,
"y": 3.14140034,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 35,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "팝업1",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "02210bfa-a0b8-485e-9e0c-17062d93b17f",
"path": "/ui/Popupbutton/2",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,script.Popupbutton",
"jsonString": {
"name": "2",
"path": "/ui/Popupbutton/2",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 174.273132,
"y": 174.306915
},
"OffsetMin": {
"x": 45.4772339,
"y": 76.27028
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 128.7959,
"y": 98.036644
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 109.875183,
"y": 125.2886
},
"Position": {
"x": -850.1248,
"y": 125.2886,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
},
{
"@type": "script.Popupbutton",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "9c44d0d1-b8ae-4ef7-9f28-473f80bcc14d",
"path": "/ui/Popupbutton/2/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/Popupbutton/2/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 114.396118,
"y": 53.1414
},
"OffsetMin": {
"x": 14.3961182,
"y": -46.8586
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 64.39612,
"y": 3.14140034
},
"Position": {
"x": -0.00183105469,
"y": 3.14140034,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 35,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "팝업2",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "5ec12c2a-4125-46a7-8d58-ce8f68155fd4",
"path": "/ui/Popupbutton/3",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,script.Popupbutton",
"jsonString": {
"name": "3",
"path": "/ui/Popupbutton/3",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 173.5899,
"y": 66.08702
},
"OffsetMin": {
"x": 44.7940063,
"y": -31.9496212
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 128.7959,
"y": 98.036644
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 109.191956,
"y": 17.0687
},
"Position": {
"x": -850.808044,
"y": 17.0687,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
},
{
"@type": "script.Popupbutton",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "5d5cdbe3-0b54-441e-9a1b-9f2f70c76d38",
"path": "/ui/Popupbutton/3/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/Popupbutton/3/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 114.396118,
"y": 53.1414
},
"OffsetMin": {
"x": 14.3961182,
"y": -46.8586
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 64.39612,
"y": 3.14140034
},
"Position": {
"x": -0.00183105469,
"y": 3.14140034,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 35,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "팝업3",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "e07d430e-5837-4582-91e7-3e5bf45af75b",
"path": "/ui/Popupbutton/4",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,script.Popupbutton",
"jsonString": {
"name": "4",
"path": "/ui/Popupbutton/4",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 174.999023,
"y": -42.1330757
},
"OffsetMin": {
"x": 46.203125,
"y": -140.169724
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 128.7959,
"y": 98.036644
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 110.601074,
"y": -91.1514
},
"Position": {
"x": -849.3989,
"y": -91.1514,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
},
{
"@type": "script.Popupbutton",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8c2a4b8b-54bd-4b45-a3fa-232b4e8c32ee",
"path": "/ui/Popupbutton/4/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/Popupbutton/4/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 114.396118,
"y": 53.1414
},
"OffsetMin": {
"x": 14.3961182,
"y": -46.8586
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 64.39612,
"y": 3.14140034
},
"Position": {
"x": -0.00183105469,
"y": 3.14140034,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 35,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "팝업4",
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-2-diary/PopupGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://65c4f8a4-5824-4c37-b9d5-e5543fd42292",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "65c4f8a4-5824-4c37-b9d5-e5543fd42292",
"path": "/ui/PopupGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "PopupGroup",
"path": "/ui/PopupGroup",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "//",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": true,
"GroupOrder": 4,
"GroupType": 2,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "d8e77a3d-9787-4e1a-b1e4-e1305e64a137",
"path": "/ui/PopupGroup/GameResultPanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "GameResultPanel",
"path": "/ui/PopupGroup/GameResultPanel",
"nameEditable": true,
"enable": false,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 17,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 634.9998,
"y": 450.0
},
"OffsetMin": {
"x": -665.0002,
"y": -514.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1300.0,
"y": 964.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -15.0002,
"y": -32.0
},
"Position": {
"x": -15.0002,
"y": -32.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "870b7dd654e74c319e30b5a7ef970c93"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "c8cb267b-c446-4c34-9780-d5db730ab2bc",
"path": "/ui/PopupGroup/GameResultPanel/Img_Line_1_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Line_1_1_1",
"path": "/ui/PopupGroup/GameResultPanel/Img_Line_1_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -33.0,
"y": -38.0
},
"OffsetMin": {
"x": 27.0,
"y": 37.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1240.0,
"y": 889.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -2.99999952,
"y": -0.5000015
},
"Position": {
"x": -3.0,
"y": -0.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ea7ba4a4b0c64c1c85e5982b2265a60c"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.917647064,
"g": 0.8117647,
"b": 0.7137255,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "269c9836-4347-4231-878b-f4298da35079",
"path": "/ui/PopupGroup/GameResultPanel/Img_Line_1_1_1/Img_Bg_pattern_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Bg_pattern_1",
"path": "/ui/PopupGroup/GameResultPanel/Img_Line_1_1_1/Img_Bg_pattern_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 8,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -12.0,
"y": -12.0
},
"OffsetMin": {
"x": 12.0,
"y": 14.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1216.0,
"y": 863.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 1.0
},
"Position": {
"x": 0.0,
"y": 1.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "3cd6bae06a45467fad6eae8ebe497f30"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.917647064,
"g": 0.8117647,
"b": 0.7137255,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 2,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "390ff0b6-dc97-4280-bc27-a2b5c04f003a",
"path": "/ui/PopupGroup/GameResultPanel/Time",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Time",
"path": "/ui/PopupGroup/GameResultPanel/Time",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 8,
"AnchorsMax": {
"x": 1.0,
"y": 0.0
},
"AnchorsMin": {
"x": 1.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -28.7337952,
"y": 157.463623
},
"OffsetMin": {
"x": -627.889038,
"y": 11.7423706
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 599.1552,
"y": 145.721252
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -328.3114,
"y": 84.603
},
"Position": {
"x": 321.6886,
"y": -397.397,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 0.7
},
"FontSize": 24,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "e1578b9e-8dcd-4135-87dd-bad79895410a",
"path": "/ui/PopupGroup/GameResultPanel/Img_Acc_2",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc_2",
"path": "/ui/PopupGroup/GameResultPanel/Img_Acc_2",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 44.5,
"y": 52.5
},
"OffsetMin": {
"x": -44.5,
"y": -52.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 89.0,
"y": 105.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 482.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9087159159fb485ea1b4d389aa90b7c1"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "c3ae6fa1-f118-44ff-9b90-7605afa6bdfe",
"path": "/ui/PopupGroup/GameResultPanel/IndexPanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "IndexPanel",
"path": "/ui/PopupGroup/GameResultPanel/IndexPanel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -62.99991,
"y": -166.0001
},
"OffsetMin": {
"x": 63.00009,
"y": 173.015518
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1174.0,
"y": 624.9844
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 9.197239E-05,
"y": 3.50770187
},
"Position": {
"x": 0.000122070313,
"y": 3.50769043,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"ImageRUID": {
"DataId": "c58c6f4200d4b7341ba11994d157ce12"
},
"OverrideSorting": false,
"Color": {
"r": 0.9529412,
"g": 0.894117653,
"b": 0.8156863,
"a": 1.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "5e175dab-0755-4e05-800b-4c94f97980e7",
"path": "/ui/PopupGroup/GameResultPanel/IndexPanel/IndexText_Name",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "IndexText_Name",
"path": "/ui/PopupGroup/GameResultPanel/IndexPanel/IndexText_Name",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -237.179932,
"y": -1.99978638
},
"OffsetMin": {
"x": -582.8199,
"y": -101.999786
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 345.639954,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -409.9999,
"y": -51.9997864
},
"Position": {
"x": -409.9999,
"y": 260.4924,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.5176471,
"g": 0.137254909,
"b": 0.0627451,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "순위",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "72ae6153-4e2a-4269-8108-9f9e79d8a468",
"path": "/ui/PopupGroup/GameResultPanel/IndexPanel/IndexText_Score",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "IndexText_Score",
"path": "/ui/PopupGroup/GameResultPanel/IndexPanel/IndexText_Score",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 261.751678,
"y": -2.0
},
"OffsetMin": {
"x": -243.028671,
"y": -102.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 504.780334,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 9.3615,
"y": -52.0
},
"Position": {
"x": 9.3615,
"y": 260.4922,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.5176471,
"g": 0.137254909,
"b": 0.0627451,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "플레이어이름",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7533d861-8c96-4175-83b9-b9bdfb0b6eae",
"path": "/ui/PopupGroup/GameResultPanel/IndexPanel/IndexText_Reward",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "IndexText_Reward",
"path": "/ui/PopupGroup/GameResultPanel/IndexPanel/IndexText_Reward",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 650.0337,
"y": -2.0
},
"OffsetMin": {
"x": 230.941269,
"y": -102.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 419.092438,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 440.4875,
"y": -52.0
},
"Position": {
"x": 440.4875,
"y": 260.4922,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.5176471,
"g": 0.137254909,
"b": 0.0627451,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "점수",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "d4ac43b4-8d04-4d6b-bb67-df7fc88ee3b7",
"path": "/ui/PopupGroup/GameResultPanel/Img_Acc_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc_1_1",
"path": "/ui/PopupGroup/GameResultPanel/Img_Acc_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 590.1313,
"y": -267.0
},
"OffsetMin": {
"x": -590.1313,
"y": -273.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1180.26257,
"y": 6.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -270.0
},
"Position": {
"x": 0.0,
"y": 212.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "e51cb7273c8d48f1b592f1bdd8227117"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 2,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "601a1158-7162-489a-ac2c-8f0e3e8a8786",
"path": "/ui/PopupGroup/GameResultPanel/MyResultPanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "MyResultPanel",
"path": "/ui/PopupGroup/GameResultPanel/MyResultPanel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 5,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 579.0941,
"y": 294.0925
},
"OffsetMin": {
"x": -574.9059,
"y": 185.5835
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1154.0,
"y": 108.508987
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 2.0941,
"y": 239.838
},
"Position": {
"x": 2.0941,
"y": -242.162,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "c58c6f4200d4b7341ba11994d157ce12"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.9254902,
"g": 0.8352941,
"b": 0.7490196,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "679e5b75-795b-4bd1-b82b-0dcc5a891cba",
"path": "/ui/PopupGroup/GameResultPanel/MyResultPanel/Rank",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Rank",
"path": "/ui/PopupGroup/GameResultPanel/MyResultPanel/Rank",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -298.0633,
"y": 63.991127
},
"OffsetMin": {
"x": -534.3365,
"y": -63.99073
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 236.273178,
"y": 127.981857
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -416.1999,
"y": 0.0002
},
"Position": {
"x": -416.1999,
"y": 0.0002,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "순위",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "06b2d84b-4edf-4950-9610-8b145c8593df",
"path": "/ui/PopupGroup/GameResultPanel/MyResultPanel/Score",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Score",
"path": "/ui/PopupGroup/GameResultPanel/MyResultPanel/Score",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 566.3685,
"y": 52.3574
},
"OffsetMin": {
"x": 320.2314,
"y": -47.6426
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 246.137131,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 443.3,
"y": 2.3574
},
"Position": {
"x": 443.3,
"y": 2.3574,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "점수",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b91711ee-d6ac-40e5-9247-8aeeee7c939f",
"path": "/ui/PopupGroup/GameResultPanel/MyResultPanel/Name",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Name",
"path": "/ui/PopupGroup/GameResultPanel/MyResultPanel/Name",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 135.511963,
"y": 49.3444
},
"OffsetMin": {
"x": -110.625168,
"y": -50.6556
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 246.137131,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 12.4434,
"y": -0.6556001
},
"Position": {
"x": 12.4434,
"y": -0.6556001,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "내 이름",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "3bb038d0-7e1e-4b92-a438-8610812e7e88",
"path": "/ui/PopupGroup/GameResultPanel/TitlePanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "TitlePanel",
"path": "/ui/PopupGroup/GameResultPanel/TitlePanel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 6,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 163.877548,
"y": -51.22446
},
"OffsetMin": {
"x": -163.877548,
"y": -148.775543
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 327.7551,
"y": 97.55108
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -100.0
},
"Position": {
"x": 0.0,
"y": 382.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "25e5f99bdc562c241bf1b96a0d76f493"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.768627465,
"g": 0.5882353,
"b": 0.4862745,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": false
}
],
"@version": 1
}
},
{
"id": "a8c813ef-02e5-4d7d-8db9-92b8f34f5e3b",
"path": "/ui/PopupGroup/GameResultPanel/TitlePanel/TitleText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "TitleText",
"path": "/ui/PopupGroup/GameResultPanel/TitlePanel/TitleText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 113.673523,
"y": 50.51021
},
"OffsetMin": {
"x": -113.673523,
"y": -50.51021
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 227.347046,
"y": 101.020416
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 50,
"MaxSize": 50,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "게임 결과",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "57dd481a-d1c2-4437-84b3-8ad77addb309",
"path": "/ui/PopupGroup/GameResultPanel/Btn_Ok_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Btn_Ok_1",
"path": "/ui/PopupGroup/GameResultPanel/Btn_Ok_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 7,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 104.0,
"y": 161.4032
},
"OffsetMin": {
"x": -104.0,
"y": 72.4032
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 208.0,
"y": 89.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 116.9032
},
"Position": {
"x": 0.0,
"y": -365.0968,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "c11e28b09bde4b688cf7e0f8c5809bff"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 6
},
"SizeFit": false,
"Text": "확인",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "492a1de9-7a16-4ddd-8622-76a3cdddd131",
"path": "/ui/PopupGroup/InventoryUI",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "InventoryUI",
"path": "/ui/PopupGroup/InventoryUI",
"nameEditable": true,
"enable": false,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "///",
"revision": 109,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 635.0001,
"y": 449.4999
},
"OffsetMin": {
"x": -664.9999,
"y": -513.5001
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1300.0,
"y": 963.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -14.9999,
"y": -32.0001
},
"Position": {
"x": -14.9999,
"y": -32.0001,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "c45f4cb1bc674d05861f94d8ca98d97f"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "82bd8650-9446-4b03-8e83-625a7602ed49",
"path": "/ui/PopupGroup/InventoryUI/TitlePanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "TitlePanel",
"path": "/ui/PopupGroup/InventoryUI/TitlePanel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 8,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 10,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 462.0
},
"OffsetMin": {
"x": 0.0,
"y": 362.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1300.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 412.0
},
"Position": {
"x": 0.0,
"y": 412.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "25e5f99bdc562c241bf1b96a0d76f493"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 210.0,
"DropShadowColor": {
"r": 0.847058833,
"g": 0.694117665,
"b": 0.607843161,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b4936f20-b353-4637-8edb-4e226fca1f7c",
"path": "/ui/PopupGroup/InventoryUI/TitlePanel/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/PopupGroup/InventoryUI/TitlePanel/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 7,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1300.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": true,
"DropShadowAngle": 100.0,
"DropShadowColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.3
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 50,
"MaxSize": 50,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "인벤토리",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "51dcc2c5-1af9-4194-ab0e-9637d7e80a9c",
"path": "/ui/PopupGroup/InventoryUI/TitlePanel/Img_Line",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Line",
"path": "/ui/PopupGroup/InventoryUI/TitlePanel/Img_Line",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 10,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -5.0,
"y": -54.5
},
"OffsetMin": {
"x": 5.0,
"y": -61.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1290.0,
"y": 7.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -58.0
},
"Position": {
"x": 0.0,
"y": -58.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "bbcce9be23084efa9af3dab5107c68cf"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 2,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7fe3db52-14f2-4569-a514-79d8d2403638",
"path": "/ui/PopupGroup/InventoryUI/Img_Line",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Line",
"path": "/ui/PopupGroup/InventoryUI/Img_Line",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -5.99999952,
"y": -146.778992
},
"OffsetMin": {
"x": 6.00000048,
"y": 17.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1288.0,
"y": 799.221
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 4.76837158E-07,
"y": -64.8894958
},
"Position": {
"x": 0.0,
"y": -64.88953,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "4fea64a3307cda641809ad8be0d4890b"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "f5a173cd-3622-4136-bcb7-e21e0e57c452",
"path": "/ui/PopupGroup/InventoryUI/Img_Line/Img_Line_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Line_1_1",
"path": "/ui/PopupGroup/InventoryUI/Img_Line/Img_Line_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 3.5,
"y": 646.0
},
"OffsetMin": {
"x": -3.5,
"y": -634.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 7.0,
"y": 1280.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 6.0
},
"Rotation": {
"x": 0.0,
"y": 0.0,
"z": 90.0
},
"Position": {
"x": 0.0,
"y": -393.6105,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.7071067,
"w": 0.7071068
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"ZRotation": 90.0,
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "217c8901a72e43be8acfde341bf023ea"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 2,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b510ee26-e356-48f0-8116-20569c0fc423",
"path": "/ui/PopupGroup/InventoryUI/Img_Line/Img_Line_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Line_1",
"path": "/ui/PopupGroup/InventoryUI/Img_Line/Img_Line_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -6.5,
"y": 390.0
},
"OffsetMin": {
"x": -13.5,
"y": -390.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 7.0,
"y": 780.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -10.0,
"y": 0.0
},
"Position": {
"x": 634.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "217c8901a72e43be8acfde341bf023ea"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 2,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "1498d966-f811-4708-93df-aa6ee8fdbbc9",
"path": "/ui/PopupGroup/InventoryUI/Img_Line/Img_Line",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Line",
"path": "/ui/PopupGroup/InventoryUI/Img_Line/Img_Line",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 13.5,
"y": 390.0
},
"OffsetMin": {
"x": 6.5,
"y": -390.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 7.0,
"y": 780.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 10.0,
"y": 0.0
},
"Position": {
"x": -634.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "217c8901a72e43be8acfde341bf023ea"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 2,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8c1d86e2-b438-463e-922a-9efd5c7d0a75",
"path": "/ui/PopupGroup/InventoryUI/Bg_Right",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Bg_Right",
"path": "/ui/PopupGroup/InventoryUI/Bg_Right",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 621.9999,
"y": 326.75235
},
"OffsetMin": {
"x": -136.0001,
"y": -448.247528
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 758.0,
"y": 774.9999
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 242.9999,
"y": -60.7476
},
"Position": {
"x": 242.9999,
"y": -60.7476,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "0c09153ba47f4202a2db1858c227b329"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "f4a12b9d-8a00-496c-9642-7d7c674f59d6",
"path": "/ui/PopupGroup/InventoryUI/Bg_Right/Img_Line",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Line",
"path": "/ui/PopupGroup/InventoryUI/Bg_Right/Img_Line",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 10,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -5.0,
"y": 300.5
},
"OffsetMin": {
"x": 5.0,
"y": 293.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 748.0,
"y": 7.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 297.0
},
"Position": {
"x": 0.0,
"y": 297.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "f7627c11bc0440e4bc4238a8bcceb501"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 2,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "dd188fb8-fa1e-4c2c-ae5a-a6dac609c9a3",
"path": "/ui/PopupGroup/InventoryUI/Item_Info",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Item_Info",
"path": "/ui/PopupGroup/InventoryUI/Item_Info",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "////",
"revision": 24,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -157.5,
"y": 318.0
},
"OffsetMin": {
"x": -614.5,
"y": -236.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 457.0,
"y": 554.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -386.0,
"y": 41.0
},
"Position": {
"x": -386.0,
"y": 41.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ea7ba4a4b0c64c1c85e5982b2265a60c"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "38943184-833a-47b5-a0a7-cbaa275d5ed3",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Img_Clip",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Clip",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Img_Clip",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -110.5,
"y": 295.0
},
"OffsetMin": {
"x": -209.5,
"y": 201.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 99.0,
"y": 94.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -160.0,
"y": 248.0
},
"Position": {
"x": -160.0,
"y": 248.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "c5acf3d23b68443d94c61ff3279ea41d"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "823d97ba-2301-4a74-ad76-ae4f227aa88b",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Selected_Info",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 19,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": -3.81469727E-06
},
"OffsetMin": {
"x": 0.0,
"y": -3.81469727E-06
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 457.0,
"y": 554.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -3.81469727E-06
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b2e19911-69f4-4317-9ae9-8f43a774a888",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info/Item_Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Item_Icon",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info/Item_Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 7,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 65.0,
"y": 215.2936
},
"OffsetMin": {
"x": -67.0,
"y": 83.2935944
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 132.0,
"y": 132.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -1.0,
"y": 149.2936
},
"Position": {
"x": -1.0,
"y": 149.2936,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "67d9ae562627455e8b0f6bc6037f6911"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b3a208b9-6484-42d8-a2b7-c9149a7b5542",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info/Item_Icon/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info/Item_Icon/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 40.0,
"y": 40.0
},
"OffsetMin": {
"x": -40.0,
"y": -40.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 80.0,
"y": 80.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "64d5294a-2718-40c9-8038-b09215c0c2b5",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info/Item_Desc",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ScrollLayoutGroupComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Item_Desc",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info/Item_Desc",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//////",
"revision": 16,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 189.539078,
"y": -28.5001068
},
"OffsetMin": {
"x": -182.500473,
"y": -231.5001
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 372.039551,
"y": 203.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 3.5193,
"y": -130.0001
},
"Position": {
"x": 3.5193,
"y": -130.0001,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "c58c6f4200d4b7341ba11994d157ce12"
},
"LocalPosition": {
"x": 0.5,
"y": 0.5
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.9529412,
"g": 0.894117653,
"b": 0.8156863,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ScrollLayoutGroupComponent",
"CellSize": {
"x": 100.0,
"y": 100.0
},
"Constraint": 0,
"ConstraintCount": 1,
"GridSpacing": {
"x": 0.0,
"y": 0.0
},
"HorizontalScrollBarDirection": 0,
"OverrideSorting": false,
"Padding": {
"left": 15,
"right": 0,
"top": 10,
"bottom": 0
},
"ReverseArrangement": false,
"ScrollBarBackgroundColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"ScrollBarBgImageRUID": {
"DataId": "6537cdb5fff04af88e900817dc9672a4"
},
"ScrollBarHandleColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ScrollBarHandleImageRUID": {
"DataId": "6537cdb5fff04af88e900817dc9672a4"
},
"ScrollBarThickness": 32.0,
"ScrollBarVisible": 0,
"Spacing": 0.0,
"StartAxis": 0,
"StartCorner": 2,
"Type": 1,
"UseScroll": true,
"VerticalScrollBarDirection": 2,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 10,
"right": 10,
"top": 10,
"bottom": 10
},
"SizeFit": false,
"Text": "",
"UseOutLine": false,
"Enable": false
}
],
"@version": 1
}
},
{
"id": "cab1f4aa-0830-41bc-9cae-e380eb2f41d4",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info/Item_Desc/Text_Desc",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Text_Desc",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info/Item_Desc/Text_Desc",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///////",
"revision": 8,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 342.857178,
"y": -10.0000019
},
"OffsetMin": {
"x": 15.0000153,
"y": -53.9285736
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 327.857147,
"y": 43.92857
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 178.928589,
"y": -31.9642868
},
"Position": {
"x": 178.928589,
"y": -31.9642868,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 3,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": true,
"Text": "이것은 아이템 설명입니다.",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8d88723e-0979-43d0-b869-bbbf03bb0638",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info/Item_Name",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Item_Name",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info/Item_Name",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "//////",
"revision": 8,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 200.0,
"y": 82.704
},
"OffsetMin": {
"x": -200.0,
"y": 12.1385956
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 400.0,
"y": 70.56541
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 47.4213
},
"Position": {
"x": 0.0,
"y": 47.4213,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "아이템 이름",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "eaf69f5e-3f47-4806-9377-b182b3fb2313",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info/Type",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Type",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Selected_Info/Type",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "//////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 160.0,
"y": 30.0
},
"OffsetMin": {
"x": -160.0,
"y": -30.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 320.0,
"y": 60.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 26,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "타입",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "22cf916e-027d-4281-bdc4-4373fb181476",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Group_Quantity",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextInputComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Group_Quantity",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Group_Quantity",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 19,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 58.0,
"y": -292.9998
},
"OffsetMin": {
"x": -66.0,
"y": -372.9998
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 124.0,
"y": 80.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -4.0,
"y": -332.9998
},
"Position": {
"x": -4.0,
"y": -332.9998,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "d40eb19e3274438cbeb4885b61c44a2c"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextInputComponent",
"AutoClear": false,
"CharacterLimit": 2,
"ContentType": 2,
"LineType": 0,
"OverrideSorting": false,
"PlaceHolder": "수량",
"PlaceHolderColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.5
},
"Text": "1",
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 3
},
"SizeFit": false,
"Text": "1",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "acae806b-e6d1-4fd8-8749-c66d344724e5",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Group_Quantity/Btn_Up",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_Up",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Group_Quantity/Btn_Up",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 106.5,
"y": 44.5
},
"OffsetMin": {
"x": 17.5,
"y": -44.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 89.0,
"y": 89.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 62.0,
"y": 0.0
},
"Position": {
"x": 124.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "db2f0710e2cc45a5b4df4d7495543741"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": {
"DataId": "db2f0710e2cc45a5b4df4d7495543741"
},
"PressedSprite": {
"DataId": "db2f0710e2cc45a5b4df4d7495543741"
},
"SelectedSprite": {
"DataId": "db2f0710e2cc45a5b4df4d7495543741"
},
"DisabledSprite": {
"DataId": "516ef8a53ee24d45adfd4bf3e1ea750b"
}
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "1f667256-5009-4ef2-a9ca-e3eb64d44df9",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Group_Quantity/Btn_Down",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_Down",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Group_Quantity/Btn_Down",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -17.5,
"y": 44.5
},
"OffsetMin": {
"x": -106.5,
"y": -44.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 89.0,
"y": 89.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -62.0,
"y": 0.0
},
"Position": {
"x": -124.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "db2f0710e2cc45a5b4df4d7495543741"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": true,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": {
"DataId": "db2f0710e2cc45a5b4df4d7495543741"
},
"PressedSprite": {
"DataId": "db2f0710e2cc45a5b4df4d7495543741"
},
"SelectedSprite": {
"DataId": "db2f0710e2cc45a5b4df4d7495543741"
},
"DisabledSprite": {
"DataId": "516ef8a53ee24d45adfd4bf3e1ea750b"
}
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "53e7286f-6fc8-4bc9-b44e-a843561687c2",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Group_Quantity/Btn_Use",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Btn_Use",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Group_Quantity/Btn_Use",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "//////",
"revision": 23,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -8.181801,
"y": -65.0004
},
"OffsetMin": {
"x": -216.1818,
"y": -155.0004
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 208.0,
"y": 90.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -112.1818,
"y": -110.0004
},
"Position": {
"x": -112.1818,
"y": -110.0004,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "c11e28b09bde4b688cf7e0f8c5809bff"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0431372561,
"g": 0.7019608,
"b": 0.6784314,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 6
},
"SizeFit": false,
"Text": "사용하기",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "55d1824d-77e9-4c4a-ab3d-45acc4b65485",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Group_Quantity/Btn_Junk",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Btn_Junk",
"path": "/ui/PopupGroup/InventoryUI/Item_Info/Group_Quantity/Btn_Junk",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "//////",
"revision": 12,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 214.0,
"y": -65.0004
},
"OffsetMin": {
"x": 6.0,
"y": -155.0004
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 208.0,
"y": 90.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 110.0,
"y": -110.0004
},
"Position": {
"x": 110.0,
"y": -110.0004,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "0beee75ea68047e9a33255c0d0c94642"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": {
"DataId": "0beee75ea68047e9a33255c0d0c94642"
},
"PressedSprite": {
"DataId": "0beee75ea68047e9a33255c0d0c94642"
},
"SelectedSprite": {
"DataId": "0beee75ea68047e9a33255c0d0c94642"
},
"DisabledSprite": {
"DataId": "8f416ea1c13842e8813f5908bbcacd16"
}
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.917647064,
"g": 0.443137258,
"b": 0.211764708,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 6
},
"SizeFit": false,
"Text": "버리기",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "e2f6f8e4-a638-4a52-bec0-c610db253392",
"path": "/ui/PopupGroup/InventoryUI/MainPanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ScrollLayoutGroupComponent",
"jsonString": {
"name": "MainPanel",
"path": "/ui/PopupGroup/InventoryUI/MainPanel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "////",
"revision": 13,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 613.2582,
"y": 134.939072
},
"OffsetMin": {
"x": -135.47937,
"y": -442.737061
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 748.737549,
"y": 577.676147
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 238.8894,
"y": -153.899
},
"Position": {
"x": 238.8894,
"y": -153.899,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "1e5e576fa39554b4a9d4b356354219c6"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.894117653,
"g": 0.847058833,
"b": 0.694117665,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": false
},
{
"@type": "MOD.Core.ScrollLayoutGroupComponent",
"CellSize": {
"x": 132.0,
"y": 137.0
},
"Constraint": 1,
"ConstraintCount": 5,
"GridSpacing": {
"x": 12.0,
"y": 12.0
},
"HorizontalScrollBarDirection": 0,
"OverrideSorting": false,
"Padding": {
"left": 20,
"right": 20,
"top": 10,
"bottom": 20
},
"ReverseArrangement": false,
"ScrollBarBackgroundColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"ScrollBarBgImageRUID": {
"DataId": "ecce8b68d7204368b4f129dc6fc9b3f7"
},
"ScrollBarHandleColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ScrollBarHandleImageRUID": {
"DataId": "ecce8b68d7204368b4f129dc6fc9b3f7"
},
"ScrollBarThickness": 16.0,
"ScrollBarVisible": 0,
"Spacing": 0.0,
"StartAxis": 0,
"StartCorner": 0,
"Type": 2,
"UseScroll": true,
"VerticalScrollBarDirection": 2,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "28b2bcef-574e-4da7-996c-84aad8ea7e7a",
"path": "/ui/PopupGroup/InventoryUI/MainPanel/Slot_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Slot_1",
"path": "/ui/PopupGroup/InventoryUI/MainPanel/Slot_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 11,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 152.0,
"y": -10.0
},
"OffsetMin": {
"x": 20.0,
"y": -147.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 132.0,
"y": 137.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 86.0,
"y": -78.5
},
"Position": {
"x": 86.0,
"y": -78.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "254699159ff244a1a5eb20f41092d41b"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "0aed8523-762d-430c-8e84-ca10565a2765",
"path": "/ui/PopupGroup/InventoryUI/MainPanel/Slot_1/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/PopupGroup/InventoryUI/MainPanel/Slot_1/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 40.0,
"y": 40.0
},
"OffsetMin": {
"x": -40.0,
"y": -40.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 80.0,
"y": 80.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7d554b6a-f7f2-4581-ae2b-d1822e66f6fd",
"path": "/ui/PopupGroup/InventoryUI/MainPanel/Slot_1/CountPanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "CountPanel",
"path": "/ui/PopupGroup/InventoryUI/MainPanel/Slot_1/CountPanel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 8,
"AnchorsMax": {
"x": 1.0,
"y": 0.0
},
"AnchorsMin": {
"x": 1.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -6.5,
"y": 63.5
},
"OffsetMin": {
"x": -53.5,
"y": 16.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 47.0,
"y": 47.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": 40.0
},
"Position": {
"x": 36.0,
"y": -28.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "3c43d48aaddbad849811698c4e8bf48f"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.431372553,
"g": 0.180392161,
"b": 0.06666667,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2907e67f-ebc1-41f9-9068-642f97ef33e8",
"path": "/ui/PopupGroup/InventoryUI/MainPanel/Slot_1/CountPanel/Count",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Count",
"path": "/ui/PopupGroup/InventoryUI/MainPanel/Slot_1/CountPanel/Count",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 50.0,
"y": 19.7419357
},
"OffsetMin": {
"x": -50.0,
"y": -15.7419357
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 35.48387
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 2.0
},
"Position": {
"x": 0.0,
"y": 2.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.21875,
"g": 0.08614752,
"b": 0.0260620117,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "99",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "24dc6310-7c4a-47b9-b3ff-2ef02d2b5a31",
"path": "/ui/PopupGroup/InventoryUI/CloseButton",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "CloseButton",
"path": "/ui/PopupGroup/InventoryUI/CloseButton",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 5,
"pathConstraints": "////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 5,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 1.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -17.0,
"y": -22.0
},
"OffsetMin": {
"x": -105.0,
"y": -114.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 88.0,
"y": 92.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -61.0,
"y": -68.0
},
"Position": {
"x": 589.0,
"y": 413.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "2d4fa57a26834636be1c58968c0ba165"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.4745098,
"g": 0.3882353,
"b": 0.34117648,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 27,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "6163d03a-8ce3-496b-b6ee-3ef989b14a1a",
"path": "/ui/PopupGroup/InventoryUI/FilterPanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ScrollLayoutGroupComponent",
"jsonString": {
"name": "FilterPanel",
"path": "/ui/PopupGroup/InventoryUI/FilterPanel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 6,
"pathConstraints": "////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 864.0,
"y": 227.036209
},
"OffsetMin": {
"x": -125.969452,
"y": 124.707596
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 989.9695,
"y": 102.328621
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 369.0153,
"y": 175.8719
},
"Position": {
"x": 369.0153,
"y": 175.8719,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "1e5e576fa39554b4a9d4b356354219c6"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.4745098,
"g": 0.3882353,
"b": 0.34117648,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ScrollLayoutGroupComponent",
"CellSize": {
"x": 114.0,
"y": 82.0
},
"Constraint": 2,
"ConstraintCount": 1,
"GridSpacing": {
"x": 6.0,
"y": 0.0
},
"HorizontalScrollBarDirection": 0,
"OverrideSorting": false,
"Padding": {
"left": 10,
"right": 0,
"top": 5,
"bottom": 0
},
"ReverseArrangement": false,
"ScrollBarBackgroundColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.4
},
"ScrollBarHandleColor": {
"r": 0.5,
"g": 0.5,
"b": 0.5,
"a": 1.0
},
"ScrollBarThickness": 20.0,
"ScrollBarVisible": 2,
"Spacing": 0.0,
"StartAxis": 0,
"StartCorner": 0,
"Type": 2,
"UseScroll": true,
"VerticalScrollBarDirection": 2,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "37d0f010-3536-4698-81ee-ca4337477a7a",
"path": "/ui/PopupGroup/InventoryUI/FilterPanel/BtnFilter_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "BtnFilter_1",
"path": "/ui/PopupGroup/InventoryUI/FilterPanel/BtnFilter_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 13,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 124.0,
"y": -5.0
},
"OffsetMin": {
"x": 10.0,
"y": -87.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 114.0,
"y": 82.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 67.0,
"y": -46.0
},
"Position": {
"x": 67.0,
"y": -46.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"PressedSprite": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"SelectedSprite": {
"DataId": "5f5d22913d2943b7b053d6016e7e31e6"
},
"DisabledSprite": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
}
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.5176471,
"g": 0.137254909,
"b": 0.0627451,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 4
},
"SizeFit": false,
"Text": "카테고리",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "21072f0c-0658-4042-b66a-6013ed94fe31",
"path": "/ui/PopupGroup/InventoryUI/FilterPanel/BtnFilter_2",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "BtnFilter_2",
"path": "/ui/PopupGroup/InventoryUI/FilterPanel/BtnFilter_2",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 10,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 244.0,
"y": -5.0
},
"OffsetMin": {
"x": 130.0,
"y": -87.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 114.0,
"y": 82.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 187.0,
"y": -46.0
},
"Position": {
"x": 187.0,
"y": -46.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"PressedSprite": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"SelectedSprite": {
"DataId": "5f5d22913d2943b7b053d6016e7e31e6"
},
"DisabledSprite": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
}
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.5176471,
"g": 0.137254909,
"b": 0.0627451,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 4
},
"SizeFit": false,
"Text": "카테고리",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "cc4e8bcd-b48b-492e-9493-47bfba1a1300",
"path": "/ui/PopupGroup/InventoryUI/FilterPanel/BtnFilter_3",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "BtnFilter_3",
"path": "/ui/PopupGroup/InventoryUI/FilterPanel/BtnFilter_3",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 9,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 364.0,
"y": -5.0
},
"OffsetMin": {
"x": 250.0,
"y": -87.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 114.0,
"y": 82.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 307.0,
"y": -46.0
},
"Position": {
"x": 307.0,
"y": -46.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"PressedSprite": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
},
"SelectedSprite": {
"DataId": "5f5d22913d2943b7b053d6016e7e31e6"
},
"DisabledSprite": {
"DataId": "52b4cca09a7d44979c78526b5e7fc30f"
}
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.5176471,
"g": 0.137254909,
"b": 0.0627451,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 4
},
"SizeFit": false,
"Text": "카테고리",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "508f5382-cb38-4116-a04f-e9fab159617e",
"path": "/ui/PopupGroup/InventoryUI/UserGoldPanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "UserGoldPanel",
"path": "/ui/PopupGroup/InventoryUI/UserGoldPanel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 7,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 594.669067,
"y": 307.9999
},
"OffsetMin": {
"x": 278.6815,
"y": 251.999908
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 315.9876,
"y": 56.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 436.6753,
"y": 279.9999
},
"Position": {
"x": 436.6753,
"y": 279.9999,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "92efbba98ce14172a96e7ff874cfe799"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "770a4142-b8b3-4f3b-a78b-208fa3553797",
"path": "/ui/PopupGroup/InventoryUI/UserGoldPanel/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/PopupGroup/InventoryUI/UserGoldPanel/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 27.5,
"y": 26.2318
},
"OffsetMin": {
"x": -27.5,
"y": -28.7682
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 55.0,
"y": 55.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -1.26819992
},
"Position": {
"x": -157.9938,
"y": -1.26819992,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "6254955eae3f40fabe379fdc95fd14e3"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "25bfecb8-1155-435e-a9ba-321977996bd8",
"path": "/ui/PopupGroup/InventoryUI/UserGoldPanel/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/PopupGroup/InventoryUI/UserGoldPanel/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -176.46875,
"y": 21.8006516
},
"OffsetMin": {
"x": -323.53125,
"y": -21.8004532
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 147.062515,
"y": 43.6011047
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -250.0,
"y": 0.0001
},
"Rotation": {
"x": 0.0,
"y": 0.0,
"z": -4.46236E-05
},
"Position": {
"x": -250.0,
"y": 0.0001,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 3.89414367E-07,
"w": -1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"ZRotation": -4.46236E-05,
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": false,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.980392158,
"g": 0.7294118,
"b": 0.5411765,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "보유 금액",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "39627763-0dc3-4a93-b428-e0b2bead6937",
"path": "/ui/PopupGroup/InventoryUI/UserGoldPanel/CurrentMoney",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "CurrentMoney",
"path": "/ui/PopupGroup/InventoryUI/UserGoldPanel/CurrentMoney",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 161.531036,
"y": 21.8004837
},
"OffsetMin": {
"x": -161.531036,
"y": -21.800621
},
"Pivot": {
"x": 0.5,
"y": 0.0
},
"RectSize": {
"x": 323.062073,
"y": 43.6011047
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -21.800621
},
"Rotation": {
"x": 0.0,
"y": 0.0,
"z": -4.46236E-05
},
"Position": {
"x": 0.0,
"y": -21.800621,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 3.89414367E-07,
"w": -1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"ZRotation": -4.46236E-05,
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 15,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "9999999999999999",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "15b0efb9-5e05-4565-b9b3-27afe1210af4",
"path": "/ui/PopupGroup/InventoryUI/VolumePanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "VolumePanel",
"path": "/ui/PopupGroup/InventoryUI/VolumePanel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 8,
"pathConstraints": "////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 72.5,
"y": 307.0
},
"OffsetMin": {
"x": -100.5,
"y": 251.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 173.0,
"y": 56.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -14.0,
"y": 279.0
},
"Position": {
"x": -14.0,
"y": 279.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "dda3ca7c-0512-488f-86f9-b63330138e38",
"path": "/ui/PopupGroup/InventoryUI/VolumePanel/CurVolumeText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "CurVolumeText",
"path": "/ui/PopupGroup/InventoryUI/VolumePanel/CurVolumeText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 173.0,
"y": 56.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "92efbba98ce14172a96e7ff874cfe799"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 3,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 20,
"right": 0,
"top": 0,
"bottom": 2
},
"SizeFit": false,
"Text": "40 / 40",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "cda0668d-39ae-4223-98c0-4d41accb81d2",
"path": "/ui/PopupGroup/InventoryUI/VolumePanel/BtnExpandVolume",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "BtnExpandVolume",
"path": "/ui/PopupGroup/InventoryUI/VolumePanel/BtnExpandVolume",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 30.0,
"y": 33.0
},
"OffsetMin": {
"x": -36.0,
"y": -37.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 66.0,
"y": 70.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -3.0,
"y": -2.0
},
"Position": {
"x": 83.5,
"y": -2.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "d43c317f0abf4626ad82de6ed96ce0fd"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "92cf05f8-da17-4db2-a9f5-6415ba8a4297",
"path": "/ui/PopupGroup/BasicPopup2",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "BasicPopup2",
"path": "/ui/PopupGroup/BasicPopup2",
"nameEditable": true,
"enable": false,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "///",
"revision": 223,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 645.4733,
"y": 452.5652
},
"OffsetMin": {
"x": -654.5267,
"y": -511.4348
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1300.0,
"y": 964.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -4.5267,
"y": -29.4348
},
"Position": {
"x": -4.5267,
"y": -29.4348,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "c45f4cb1bc674d05861f94d8ca98d97f"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b11bcef2-6640-443d-9645-a7263539beab",
"path": "/ui/PopupGroup/BasicPopup2/TitleText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "TitleText",
"path": "/ui/PopupGroup/BasicPopup2/TitleText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 8,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 9,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -0.000126025363,
"y": 1.5
},
"OffsetMin": {
"x": -3.95505049E-06,
"y": -133.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1299.99988,
"y": 135.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -6.499021E-05,
"y": -66.0
},
"Position": {
"x": -6.10351563E-05,
"y": 416.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": true,
"DropShadowAngle": 100.0,
"DropShadowColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.3
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 50,
"MaxSize": 50,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 0
},
"SizeFit": false,
"Text": "제목제목제목",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "210d6f10-c226-49cd-8999-613153d9e0ef",
"path": "/ui/PopupGroup/BasicPopup2/Img_Bg_Left",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Bg_Left",
"path": "/ui/PopupGroup/BasicPopup2/Img_Bg_Left",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -831.1282,
"y": 328.1226
},
"OffsetMin": {
"x": -1265.21313,
"y": -453.8774
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 434.08493,
"y": 782.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -1048.17065,
"y": -62.8774
},
"Position": {
"x": -398.170654,
"y": -62.8774,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ea7ba4a4b0c64c1c85e5982b2265a60c"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "edf67dae-c945-46f6-98f7-1bf3c8a115a9",
"path": "/ui/PopupGroup/BasicPopup2/Img_Bg_Right",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Bg_Right",
"path": "/ui/PopupGroup/BasicPopup2/Img_Bg_Right",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "////",
"revision": 25,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 611.9702,
"y": 328.1226
},
"OffsetMin": {
"x": -180.029785,
"y": -453.8774
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 792.0,
"y": 782.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 215.970215,
"y": -62.8774
},
"Position": {
"x": 215.970215,
"y": -62.8774,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ea7ba4a4b0c64c1c85e5982b2265a60c"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "c02e087c-8f3e-41d0-b18c-9828dc2d2dc4",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc_1_1_1",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "////",
"revision": 8,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -139.6268,
"y": 282.0
},
"OffsetMin": {
"x": -212.6268,
"y": 248.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 73.0,
"y": 34.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -176.1268,
"y": 265.0
},
"Position": {
"x": -176.1268,
"y": 265.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ecb92c04ab7746af92c4912215972d52"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "25f5a0af-faa1-495e-ac84-e786d0193555",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc2_1_1",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 36.5,
"y": -46.0
},
"OffsetMin": {
"x": -36.5,
"y": -80.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 73.0,
"y": 34.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -63.0
},
"Position": {
"x": 0.0,
"y": -63.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ecb92c04ab7746af92c4912215972d52"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "f7befa51-632d-4f2c-bc1c-0aa93ece8e96",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc2_1_1_1",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 36.5,
"y": -109.0
},
"OffsetMin": {
"x": -36.5,
"y": -143.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 73.0,
"y": 34.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -126.0
},
"Position": {
"x": 0.0,
"y": -126.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ecb92c04ab7746af92c4912215972d52"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "6e32eb91-d6ec-4d7e-a370-2cde041dea6e",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc2_1_1_1_1",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 36.5,
"y": -172.0
},
"OffsetMin": {
"x": -36.5,
"y": -206.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 73.0,
"y": 34.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -189.0
},
"Position": {
"x": 0.0,
"y": -189.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ecb92c04ab7746af92c4912215972d52"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "5ded2eb4-9a6d-42a7-8423-8fe1a84fc1cf",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc2_1_1_1_1_1",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 36.5,
"y": -235.0
},
"OffsetMin": {
"x": -36.5,
"y": -269.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 73.0,
"y": 34.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -252.0
},
"Position": {
"x": 0.0,
"y": -252.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ecb92c04ab7746af92c4912215972d52"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "67f0368e-1e8d-408e-973c-5f3227354097",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc2_1_1_1_1_1_1",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 36.5,
"y": -298.0
},
"OffsetMin": {
"x": -36.5,
"y": -332.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 73.0,
"y": 34.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -315.0
},
"Position": {
"x": 0.0,
"y": -315.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ecb92c04ab7746af92c4912215972d52"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "3c30af46-b840-477b-8d4a-e18df1538a25",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc2_1_1_1_1_1_1_1",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 5,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 36.5,
"y": -361.0
},
"OffsetMin": {
"x": -36.5,
"y": -395.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 73.0,
"y": 34.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -378.0
},
"Position": {
"x": 0.0,
"y": -378.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ecb92c04ab7746af92c4912215972d52"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b07fb3f7-310f-48d9-9bc3-825306150273",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1_1_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc2_1_1_1_1_1_1_1_1",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1_1_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 6,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 36.5,
"y": -424.0
},
"OffsetMin": {
"x": -36.5,
"y": -458.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 73.0,
"y": 34.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -441.0
},
"Position": {
"x": 0.0,
"y": -441.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ecb92c04ab7746af92c4912215972d52"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "d82a52b5-57db-40eb-81cf-bac5f13fcd04",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1_1_1_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc2_1_1_1_1_1_1_1_1_1",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1_1_1_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 7,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 36.5,
"y": -487.0
},
"OffsetMin": {
"x": -36.5,
"y": -521.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 73.0,
"y": 34.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -504.0
},
"Position": {
"x": 0.0,
"y": -504.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ecb92c04ab7746af92c4912215972d52"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "1eb93a76-4cc5-4106-b1f0-d89901f9cc22",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1_1_1_1_2",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc2_1_1_1_1_1_1_1_1_2",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1_1_1_1_2",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 8,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 38.9323959,
"y": -550.0
},
"OffsetMin": {
"x": -34.0676041,
"y": -584.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 73.0,
"y": 34.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 2.43239641,
"y": -567.0
},
"Position": {
"x": 2.43239641,
"y": -567.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ecb92c04ab7746af92c4912215972d52"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "845d1008-6f7f-4867-b955-35443c94792a",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1_1_1_1_1_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Acc2_1_1_1_1_1_1_1_1_1_1",
"path": "/ui/PopupGroup/BasicPopup2/Img_Acc_1_1_1/Img_Acc2_1_1_1_1_1_1_1_1_1_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 9,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 36.5,
"y": -613.0
},
"OffsetMin": {
"x": -36.5,
"y": -647.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 73.0,
"y": 34.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -630.0
},
"Position": {
"x": 0.0,
"y": -630.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ecb92c04ab7746af92c4912215972d52"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "1a10e5c6-a57c-4f18-b6f7-625cf5ade826",
"path": "/ui/PopupGroup/BasicPopup2/Left_SlotPanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Left_SlotPanel",
"path": "/ui/PopupGroup/BasicPopup2/Left_SlotPanel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -223.826889,
"y": 306.0734
},
"OffsetMin": {
"x": -580.1199,
"y": -427.603
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 356.293,
"y": 733.6764
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -401.9734,
"y": -60.7648
},
"Position": {
"x": -401.9734,
"y": -60.7648,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "cd907e728d324f6b85eac245495a8178"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "26fcc4f7-6175-47fe-94ef-2e4d6c7cd105",
"path": "/ui/PopupGroup/BasicPopup2/SlotScroll",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ScrollLayoutGroupComponent",
"jsonString": {
"name": "SlotScroll",
"path": "/ui/PopupGroup/BasicPopup2/SlotScroll",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 5,
"pathConstraints": "////",
"revision": 24,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -223.827011,
"y": 300.42514
},
"OffsetMin": {
"x": -580.12,
"y": -421.954742
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 356.293,
"y": 722.3799
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -401.9735,
"y": -60.7648
},
"Position": {
"x": -401.9735,
"y": -60.7648,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "216760e07f4d4385a7b8a754fb1ee7f1"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ScrollLayoutGroupComponent",
"CellSize": {
"x": 100.0,
"y": 100.0
},
"Constraint": 0,
"ConstraintCount": 1,
"GridSpacing": {
"x": 0.0,
"y": 0.0
},
"HorizontalScrollBarDirection": 0,
"OverrideSorting": false,
"Padding": {
"left": 15,
"right": 15,
"top": 15,
"bottom": 15
},
"ReverseArrangement": false,
"ScrollBarBackgroundColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"ScrollBarBgImageRUID": {
"DataId": ""
},
"ScrollBarHandleColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ScrollBarHandleImageRUID": {
"DataId": "056f1fb3972d4ff5ac5b062e7ad74bd4"
},
"ScrollBarThickness": 30.0,
"ScrollBarVisible": 0,
"Spacing": 10.0,
"StartAxis": 0,
"StartCorner": 0,
"Type": 1,
"UseScroll": true,
"VerticalScrollBarDirection": 2,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7c888f9e-bd6d-449d-b5d0-af9cfa4197e4",
"path": "/ui/PopupGroup/BasicPopup2/SlotScroll/Info2",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Info2",
"path": "/ui/PopupGroup/BasicPopup2/SlotScroll/Info2",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 10,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 324.74646,
"y": -133.4226
},
"OffsetMin": {
"x": 14.9998779,
"y": -241.845215
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 309.746582,
"y": 108.422607
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 169.873169,
"y": -187.633911
},
"Position": {
"x": 169.873169,
"y": -187.633911,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "17b4d7cdaf3c4d3f8b52465c9350d840"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "75250147-0980-4819-bf5c-86f710808674",
"path": "/ui/PopupGroup/BasicPopup2/SlotScroll/Info2/name",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "name",
"path": "/ui/PopupGroup/BasicPopup2/SlotScroll/Info2/name",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 136.1751,
"y": 34.3687363
},
"OffsetMin": {
"x": -136.1751,
"y": -34.3687363
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 272.3502,
"y": 68.73747
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Rotation": {
"x": 0.0,
"y": 0.0,
"z": -4.46236E-05
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 3.89414367E-07,
"w": -1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"ZRotation": -4.46236E-05,
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 0.435294122,
"g": 0.2,
"b": 0.09803922,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 2
},
"SizeFit": false,
"Text": "이름이름이름",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "4c948b86-02a5-447d-881b-2a08ce8d4bfc",
"path": "/ui/PopupGroup/BasicPopup2/CloseButton",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "CloseButton",
"path": "/ui/PopupGroup/BasicPopup2/CloseButton",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 6,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 5,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 1.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -21.0,
"y": -22.0
},
"OffsetMin": {
"x": -109.0,
"y": -114.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 88.0,
"y": 92.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -65.0,
"y": -68.0
},
"Position": {
"x": 585.0,
"y": 414.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "2d4fa57a26834636be1c58968c0ba165"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 27,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "aaab0889-4a94-4c04-a4a0-6270d10a7af4",
"path": "/ui/PopupGroup/BasicPopup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "BasicPopup",
"path": "/ui/PopupGroup/BasicPopup",
"nameEditable": true,
"enable": false,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "///",
"revision": 20,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 337.804016,
"y": 331.6317
},
"OffsetMin": {
"x": -407.195984,
"y": -352.3683
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 745.0,
"y": 684.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -34.696,
"y": -10.3683
},
"Position": {
"x": -34.696,
"y": -10.3683,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "870b7dd654e74c319e30b5a7ef970c93"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "9c2f7889-f82b-4770-a49e-8f51557eb189",
"path": "/ui/PopupGroup/BasicPopup/Img_Bg_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Bg_1",
"path": "/ui/PopupGroup/BasicPopup/Img_Bg_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 340.434357,
"y": 321.2376
},
"OffsetMin": {
"x": -342.434357,
"y": -183.2376
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 682.8687,
"y": 504.4752
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -1.0,
"y": 69.0
},
"Position": {
"x": -1.0,
"y": 69.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "ea7ba4a4b0c64c1c85e5982b2265a60c"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "bf041cfa-b8d7-4392-b26e-7aac2ceb6491",
"path": "/ui/PopupGroup/BasicPopup/Img_Clip_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Img_Clip_1",
"path": "/ui/PopupGroup/BasicPopup/Img_Clip_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 44.5,
"y": 56.5
},
"OffsetMin": {
"x": -44.5,
"y": -48.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 89.0,
"y": 105.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 4.0
},
"Position": {
"x": 0.0,
"y": 346.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9087159159fb485ea1b4d389aa90b7c1"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "92c2a909-2d81-4e62-a729-281d22e278d0",
"path": "/ui/PopupGroup/BasicPopup/Btn_Ok",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Btn_Ok",
"path": "/ui/PopupGroup/BasicPopup/Btn_Ok",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -46.0,
"y": 141.5
},
"OffsetMin": {
"x": -254.0,
"y": 52.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 208.0,
"y": 89.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -150.0,
"y": 97.0
},
"Position": {
"x": -150.0,
"y": -245.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "c11e28b09bde4b688cf7e0f8c5809bff"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 6
},
"SizeFit": false,
"Text": "확인",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "a2e6e65a-1380-4490-be25-5c8985bb0164",
"path": "/ui/PopupGroup/BasicPopup/Btn_No",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Btn_No",
"path": "/ui/PopupGroup/BasicPopup/Btn_No",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 254.0,
"y": 141.5
},
"OffsetMin": {
"x": 46.0,
"y": 52.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 208.0,
"y": 89.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 150.0,
"y": 97.0
},
"Position": {
"x": 150.0,
"y": -245.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 1,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "0beee75ea68047e9a33255c0d0c94642"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.917647064,
"g": 0.443137258,
"b": 0.211764708,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.0,
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 0,
"right": 0,
"top": 0,
"bottom": 6
},
"SizeFit": false,
"Text": "취소",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b07bc8a3-a704-4666-9d4c-ac745379b67b",
"path": "/ui/PopupGroup/UIChat",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ChatComponent",
"jsonString": {
"name": "UIChat",
"path": "/ui/PopupGroup/UIChat",
"nameEditable": false,
"enable": false,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "///",
"revision": 0,
"origin": {
"type": "Model",
"entry_id": "UIEmpty",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uiempty",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 717.8341,
"y": -32.4276428
},
"OffsetMin": {
"x": 20.1109619,
"y": -471.1826
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 697.723145,
"y": 438.754944
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 368.972534,
"y": -251.805115
},
"Position": {
"x": -591.027466,
"y": 288.1949,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": false,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ChatComponent",
"Expand": true,
"UseChatBalloon": true,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-2-diary/ruid-map.md
# Style 2 — RUID Map
Use these `ImageRUID.DataId` values when applying this template's visual style.
## UI Frame / Panel Backgrounds
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `870b7dd654e74c319e30b5a7ef970c93` | Main popup background | BasicPopup, GameResultPanel |
| `c45f4cb1bc674d05861f94d8ca98d97f` | Secondary popup background | BasicPopup2, InventoryUI |
| `1e5e576fa39554b4a9d4b356354219c6` | Filter/main panel background | FilterPanel, MainPanel |
| `c58c6f4200d4b7341ba11994d157ce12` | Index/info panel | IndexPanel, Item_Desc, MyResultPanel |
| `ea7ba4a4b0c64c1c85e5982b2265a60c` | Side background / line | Img_Bg_Left, Img_Bg_Right, Img_Bg_1, Img_Line_1_1_1, Item_Info |
| `cd907e728d324f6b85eac245495a8178` | Slot panel (left) | Left_SlotPanel |
| `216760e07f4d4385a7b8a754fb1ee7f1` | Scroll area background | SlotScroll |
| `3c43d48aaddbad849811698c4e8bf48f` | Count panel | CountPanel |
| `d40eb19e3274438cbeb4885b61c44a2c` | Quantity group | Group_Quantity |
## HUD
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `508fa7a5b759485caff7292ef1b50632` | Player profile panel | PlrprofileUI |
| `c2b7536965db46099801551b0b31f055` | HUD main panel | Panel |
| `dcb441051ce34d7ba63961a4d37230c8` | Level/heart icon | Level, img_heart |
| `4d9d1f67e2e648f3a6329b1cee207207` | Name tag background | Name |
| `8201d19db2724615931078a647ad3037` | EXP bar panel | Exp_Panel |
| `9e9a29005c204faf940104e65bb14941` | Profile image frame | profileimage |
| `900b00b6c24b40bb8a77fa4071127c0e` | Arrow icon | img_arrow |
## Buttons
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `52b4cca09a7d44979c78526b5e7fc30f` | Standard button (popup-opener, filter) | Popupbutton 1-4, BtnFilter_1/2/3 |
| `c11e28b09bde4b688cf7e0f8c5809bff` | Confirm/action button (OK, Use) | Btn_Ok, Btn_Ok_1, Btn_Use |
| `0beee75ea68047e9a33255c0d0c94642` | Negative/junk button | Btn_No, Btn_Junk |
| `2d4fa57a26834636be1c58968c0ba165` | Close button (X) | CloseButton |
| `db2f0710e2cc45a5b4df4d7495543741` | Up/down arrow button | Btn_Up, Btn_Down |
| `d43c317f0abf4626ad82de6ed96ce0fd` | Expand/volume button | BtnExpandVolume |
## Items & Slots
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `254699159ff244a1a5eb20f41092d41b` | Item slot frame | Slot_1 |
| `67d9ae562627455e8b0f6bc6037f6911` | Item icon placeholder | Item_Icon |
| `6254955eae3f40fabe379fdc95fd14e3` | Generic icon | Icon |
| `ecb92c04ab7746af92c4912215972d52` | Accessory slot (multiple) | Img_Acc2_* |
| `e51cb7273c8d48f1b592f1bdd8227117` | Accessory accent | Img_Acc_1_1 |
| `9087159159fb485ea1b4d389aa90b7c1` | Clip/accessory | Img_Acc_2, Img_Clip_1 |
## Decorations & Lines
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `217c8901a72e43be8acfde341bf023ea` | Horizontal divider line | Img_Line, Img_Line_1_1 |
| `f7627c11bc0440e4bc4238a8bcceb501` | Line variant | Img_Line |
| `bbcce9be23084efa9af3dab5107c68cf` | Line variant | Img_Line |
| `4fea64a3307cda641809ad8be0d4890b` | Line variant | Img_Line |
| `3cd6bae06a45467fad6eae8ebe497f30` | Background pattern | Img_Bg_pattern_1 |
| `c5acf3d23b68443d94c61ff3279ea41d` | Clip decoration | Img_Clip |
| `25e5f99bdc562c241bf1b96a0d76f493` | Title panel decoration | TitlePanel |
## Info & Status
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `92efbba98ce14172a96e7ff874cfe799` | Currency/gold display background | UserGoldPanel, CurVolumeText |
| `17b4d7cdaf3c4d3f8b52465c9350d840` | Secondary info panel | Info2 |
| `0c09153ba47f4202a2db1858c227b329` | Right side background | Bg_Right |
## Toast
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `7d614552ba7843049bb48ebd4509fb8f` | Toast message background | Toast_message |
references/templates/style-2-diary/structure.md
# Style 2 (Diary) — UI Structure
Format: `Name | Alignment | (x, y) | WxH | [Components] | (state)`
```
============================================================
HUDGroup.ui (12 entities)
============================================================
HUDGroup | GroupOrder=3 | StretchAll | 1920x1080 | [UIGroupComponent]
BroadCastUI | Left | (1002, 343) | 981x136
Panel | Center | (-72, 76) | 889x135
PlrprofileUI | Left | (260, 421) | 439x194 | [Button]
Profilepanel | StretchAll | (0, 2) | 439x190
============================================================
PopupGroup.ui (85 entities)
============================================================
PopupGroup | GroupOrder=4 | StretchAll | 1920x1080 | [UIGroupComponent]
BasicPopup | Center | (-35, -10) | 745x684 | (disabled)
Btn_No | BottomCenter | (150, 97) | 208x89 | [Button, TextComponent] | "Cancel"
Btn_Ok | BottomCenter | (-150, 97) | 208x89 | [Button, TextComponent] | "OK"
Img_Bg_1 | Center | (-1, 69) | 683x504
Img_Clip_1 | TopCenter | (0, 4) | 89x105
BasicPopup2 | Center | (-5, -29) | 1300x964 | (disabled)
CloseButton | TopRight | (-65, -68) | 88x92 | [Button]
Img_Acc_1_1_1 | Center | (-176, 265) | 73x34
Img_Bg_Left | Right | (-1048, -63) | 434x782
Img_Bg_Right | Center | (216, -63) | 792x782
Left_SlotPanel | Center | (-402, -61) | 356x734
SlotScroll | Center | (-402, -61) | 356x722 | [ScrollLayout]
TitleText | HStretchTop | (-0, -66) | 1300x135 | [TextComponent] | "Title Title Title"
GameResultPanel | Center | (-15, -32) | 1300x964 | (disabled)
Btn_Ok_1 | BottomCenter | (0, 117) | 208x89 | [Button, TextComponent] | "OK"
Img_Acc_1_1 | TopCenter | (0, -270) | 1180x6
Img_Acc_2 | TopCenter | 89x105
Img_Line_1_1_1 | StretchAll | (-3, -1) | 1240x889
IndexPanel | StretchAll | (0, 4) | 1174x625
MyResultPanel | BottomCenter | (2, 240) | 1154x109
Time | BottomRight | (-328, 85) | 599x146 | [TextComponent]
TitlePanel | TopCenter | (0, -100) | 328x98
InventoryUI | Center | (-15, -32) | 1300x963 | (disabled)
Bg_Right | Center | (243, -61) | 758x775
CloseButton | TopRight | (-61, -68) | 88x92 | [Button]
FilterPanel | Center | (369, 176) | 990x102 | [ScrollLayout]
Img_Line | StretchAll | (0, -65) | 1288x799
Item_Info | Center | (-386, 41) | 457x554
MainPanel | Center | (239, -154) | 749x578 | [ScrollLayout]
TitlePanel | HStretchCenter | (0, 412) | 1300x100
UserGoldPanel | Center | (437, 280) | 316x56
VolumePanel | Center | (-14, 279) | 173x56
UIChat | TopLeft | (369, -252) | 698x439 | [ChatComponent] | (disabled)
============================================================
Popupbutton.ui (9 entities)
============================================================
Popupbutton | GroupOrder=2 | StretchAll | 1920x1080 | [UIGroupComponent]
1 | Left | (108, 231) | 129x98 | [Button, script.Popupbutton]
UIText | Left | (64, 3) | 100x100 | [TextComponent] | "Popup 1"
2 | Left | (110, 125) | 129x98 | [Button, script.Popupbutton]
UIText | Left | (64, 3) | 100x100 | [TextComponent] | "Popup 2"
3 | Left | (109, 17) | 129x98 | [Button, script.Popupbutton]
UIText | Left | (64, 3) | 100x100 | [TextComponent] | "Popup 3"
4 | Left | (111, -91) | 129x98 | [Button, script.Popupbutton]
UIText | Left | (64, 3) | 100x100 | [TextComponent] | "Popup 4"
============================================================
ToastGroup.ui (1 entities)
============================================================
ToastGroup | GroupOrder=1 | StretchAll | 1920x1080 | [UIGroupComponent] | (disabled)
============================================================
TrashBin.ui (1 entities)
============================================================
TrashBin | GroupOrder=0 | hidden | StretchAll | 1920x1080 | [UIGroupComponent]
```
references/templates/style-2-diary/ToastGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://0bc398f9-29cb-4d89-a78d-f24742b117e8",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "0bc398f9-29cb-4d89-a78d-f24742b117e8",
"path": "/ui/ToastGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "ToastGroup",
"path": "/ui/ToastGroup",
"nameEditable": true,
"enable": false,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//",
"revision": 67,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": true,
"GroupOrder": 1,
"GroupType": 1,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-2-diary/TrashBin.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://edcc67c8-d2b9-4050-a24b-d04859947418",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "edcc67c8-d2b9-4050-a24b-d04859947418",
"path": "/ui/TrashBin",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "TrashBin",
"path": "/ui/TrashBin",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//",
"revision": 246,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": false,
"GroupOrder": 0,
"GroupType": 1,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-3-wood/ButtonGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://18a9b825-bcdf-46ff-b780-b16eb08b0e92",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "18a9b825-bcdf-46ff-b780-b16eb08b0e92",
"path": "/ui/ButtonGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "ButtonGroup",
"path": "/ui/ButtonGroup",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "//",
"revision": 35,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.0,
"y": 1.0
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": -960.0,
"y": 540.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": true,
"GroupOrder": 3,
"GroupType": 2,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "edf27c08-cb5a-4b1d-bcc6-d0e5624282fe",
"path": "/ui/ButtonGroup/Menu_Panel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Menu_Panel",
"path": "/ui/ButtonGroup/Menu_Panel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 9,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 363.0,
"y": -115.0
},
"OffsetMin": {
"x": 0.0,
"y": -965.0
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 363.0,
"y": 850.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -540.0
},
"Position": {
"x": 0.0,
"y": -540.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "f01d920b688a4937bb597e7b897d5740"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "643b7d3c-823b-4451-84c7-ca4df8c5f8ea",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ScrollLayoutGroupComponent",
"jsonString": {
"name": "ScrollList",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 9,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -24.0,
"y": -22.5
},
"OffsetMin": {
"x": 24.0,
"y": 22.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 315.0,
"y": 805.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 181.5,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
},
{
"@type": "MOD.Core.ScrollLayoutGroupComponent",
"CellSize": {
"x": 306.0,
"y": 110.0
},
"OverrideSorting": false,
"Padding": {
"left": 5,
"right": 5,
"top": 20,
"bottom": 10
},
"Type": 2,
"UseScroll": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "bd72c2a6-5ef3-4751-9306-5574ed08164a",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "1",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 311.0,
"y": -20.0
},
"OffsetMin": {
"x": 5.0,
"y": -130.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 306.0,
"y": 110.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 158.0,
"y": -75.0
},
"Position": {
"x": 158.0,
"y": -75.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9bb8e4d004fb46bb9c1b528b3c1ebf9f"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "3b3dd5c3-8c2b-460a-878d-ce87097b131a",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/1/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/1/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 90.0,
"y": 39.5
},
"OffsetMin": {
"x": 25.0,
"y": -25.5
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 65.0,
"y": 65.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 25.0,
"y": 7.0
},
"Position": {
"x": -128.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "040aafcd62604f4cb0f2f265d47409f1"
},
"OverrideSorting": false,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8b8097f6-c1c4-4959-8640-031d03d4e277",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/1/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/1/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": 37.0
},
"OffsetMin": {
"x": -200.0,
"y": -23.0
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 60.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": 7.0
},
"Position": {
"x": 123.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 0.8901961,
"b": 0.596078455,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "기본 팝업1",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "af93a8e3-a4d0-414c-bf37-e2f81da79728",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/2",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "2",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/2",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 311.0,
"y": -130.0
},
"OffsetMin": {
"x": 5.0,
"y": -240.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 306.0,
"y": 110.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 158.0,
"y": -185.0
},
"Position": {
"x": 158.0,
"y": -185.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9bb8e4d004fb46bb9c1b528b3c1ebf9f"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "a9d0a325-dd3e-4a0c-8931-360f00cdfb25",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/2/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/2/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 90.0,
"y": 39.5
},
"OffsetMin": {
"x": 25.0,
"y": -25.5
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 65.0,
"y": 65.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 25.0,
"y": 7.0
},
"Position": {
"x": -128.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "00996041bb604ffe86dc6787a71640a0"
},
"OverrideSorting": false,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "f5fed2a4-c84a-4b7c-9e74-c67c744feb93",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/2/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/2/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": 37.0
},
"OffsetMin": {
"x": -200.0,
"y": -23.0
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 60.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": 7.0
},
"Position": {
"x": 123.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 0.8901961,
"b": 0.596078455,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "기본 팝업2",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "ce4f2086-cec0-4726-8774-2a5bd6c1a8ea",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/3",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "3",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/3",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 311.0,
"y": -240.0
},
"OffsetMin": {
"x": 5.0,
"y": -350.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 306.0,
"y": 110.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 158.0,
"y": -295.0
},
"Position": {
"x": 158.0,
"y": -295.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9bb8e4d004fb46bb9c1b528b3c1ebf9f"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "d1f9fe84-ca7c-4331-9f05-c56a78830007",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/3/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/3/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 90.0,
"y": 39.5
},
"OffsetMin": {
"x": 25.0,
"y": -25.5
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 65.0,
"y": 65.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 25.0,
"y": 7.0
},
"Position": {
"x": -128.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "cc996210da3f42178dfdcf026857cc1f"
},
"OverrideSorting": false,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "c96d4812-ab58-44db-8f18-0f2de0919cce",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/3/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/3/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": 37.0
},
"OffsetMin": {
"x": -200.0,
"y": -23.0
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 60.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": 7.0
},
"Position": {
"x": 123.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 0.8901961,
"b": 0.596078455,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "업적",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "556036bf-ec60-40f9-b28e-a70424fce3e4",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/4",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "4",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/4",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "/////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 311.0,
"y": -350.0
},
"OffsetMin": {
"x": 5.0,
"y": -460.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 306.0,
"y": 110.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 158.0,
"y": -405.0
},
"Position": {
"x": 158.0,
"y": -405.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9bb8e4d004fb46bb9c1b528b3c1ebf9f"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "31ec345b-ff73-4f3a-ac32-f6157e939306",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/4/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/4/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 90.0,
"y": 39.5
},
"OffsetMin": {
"x": 25.0,
"y": -25.5
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 65.0,
"y": 65.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 25.0,
"y": 7.0
},
"Position": {
"x": -128.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "617b8c926c164cb1892f69f86673a2f6"
},
"OverrideSorting": false,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "03cfb8ff-ce3b-4a84-baec-adfbf0c2b24d",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/4/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/4/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": 37.0
},
"OffsetMin": {
"x": -200.0,
"y": -23.0
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 60.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": 7.0
},
"Position": {
"x": 123.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 0.8901961,
"b": 0.596078455,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "인벤토리",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "a0ca3b2c-9f2d-445b-88c7-2d864ac79787",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/5",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "5",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/5",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "/////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 311.0,
"y": -460.0
},
"OffsetMin": {
"x": 5.0,
"y": -570.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 306.0,
"y": 110.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 158.0,
"y": -515.0
},
"Position": {
"x": 158.0,
"y": -515.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9bb8e4d004fb46bb9c1b528b3c1ebf9f"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2fd32a49-12a8-4229-b923-6f8629c63f0d",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/5/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/5/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 90.0,
"y": 39.5
},
"OffsetMin": {
"x": 25.0,
"y": -25.5
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 65.0,
"y": 65.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 25.0,
"y": 7.0
},
"Position": {
"x": -128.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "0aea179722074bbb8bbb60329e8f7e46"
},
"OverrideSorting": false,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "ec23d77f-ddbd-49aa-9af7-c139e885ca19",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/5/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/5/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": 37.0
},
"OffsetMin": {
"x": -200.0,
"y": -23.0
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 60.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": 7.0
},
"Position": {
"x": 123.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 0.8901961,
"b": 0.596078455,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "출석",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "ecd9a0b3-72f0-426a-a4eb-7d1ea42c5f2a",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/6",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "6",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/6",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 5,
"pathConstraints": "/////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 311.0,
"y": -570.0
},
"OffsetMin": {
"x": 5.0,
"y": -680.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 306.0,
"y": 110.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 158.0,
"y": -625.0
},
"Position": {
"x": 158.0,
"y": -625.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9bb8e4d004fb46bb9c1b528b3c1ebf9f"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "9ee6125f-09cb-424d-b36e-ad065bc933fc",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/6/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/6/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 90.0,
"y": 39.5
},
"OffsetMin": {
"x": 25.0,
"y": -25.5
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 65.0,
"y": 65.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 25.0,
"y": 7.0
},
"Position": {
"x": -128.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "1d4ba1a6eeb54a21aa119d9133328ab4"
},
"OverrideSorting": false,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "c97d7d3b-b737-421b-bd34-54fb3c098d5f",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/6/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/6/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": 37.0
},
"OffsetMin": {
"x": -200.0,
"y": -23.0
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 60.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": 7.0
},
"Position": {
"x": 123.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 0.8901961,
"b": 0.596078455,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "상점",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8b589383-244a-41fb-bdd9-833ed08c5089",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/7",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "7",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/7",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 6,
"pathConstraints": "/////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 311.0,
"y": -680.0
},
"OffsetMin": {
"x": 5.0,
"y": -790.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 306.0,
"y": 110.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 158.0,
"y": -735.0
},
"Position": {
"x": 158.0,
"y": -735.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9bb8e4d004fb46bb9c1b528b3c1ebf9f"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "64b7c571-52d8-4f3a-92e6-c9441514c224",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/7/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/7/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 90.0,
"y": 39.5
},
"OffsetMin": {
"x": 25.0,
"y": -25.5
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 65.0,
"y": 65.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 25.0,
"y": 7.0
},
"Position": {
"x": -128.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "1d4ba1a6eeb54a21aa119d9133328ab4"
},
"OverrideSorting": false,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "09dc0358-5ada-40d2-8065-154ad475d7ec",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/7/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Menu_Panel/ScrollList/7/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": 37.0
},
"OffsetMin": {
"x": -200.0,
"y": -23.0
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 60.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": 7.0
},
"Position": {
"x": 123.0,
"y": 7.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 0.8901961,
"b": 0.596078455,
"a": 1.0
},
"FontSize": 28,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "상점 상세정보",
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-3-wood/DefaultGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://fd3a752b-f4aa-4864-b14c-d516b2577416",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "fd3a752b-f4aa-4864-b14c-d516b2577416",
"path": "/ui/DefaultGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "DefaultGroup",
"path": "/ui/DefaultGroup",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//",
"revision": 12,
"origin": {
"type": "Model",
"entry_id": "UIGroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 3.81469727E-06,
"y": 0.0
},
"OffsetMin": {
"x": 3.81469727E-06,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 3.81469727E-06,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": false,
"GroupOrder": 1,
"GroupType": 1,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2ca9d746-a8e6-4c21-91e8-2148be39c82c",
"path": "/ui/DefaultGroup/UIJoystick",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.JoystickComponent",
"jsonString": {
"name": "UIJoystick",
"path": "/ui/DefaultGroup/UIJoystick",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "UISprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 2,
"AlignmentOption": 7,
"AnchorsMax": {
"x": 0.0,
"y": 0.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 410.0,
"y": 330.0001
},
"OffsetMin": {
"x": 210.0,
"y": 129.999908
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 200.0,
"y": 200.0002
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 310.0,
"y": 230.0
},
"Position": {
"x": -650.0,
"y": -310.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": false,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.JoystickComponent",
"DynamicStick": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "a062f6d5-699b-407c-b2ba-f44727007436",
"path": "/ui/DefaultGroup/UIChat",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ChatComponent",
"jsonString": {
"name": "UIChat",
"path": "/ui/DefaultGroup/UIChat",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "UIEmpty",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uiempty",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 717.8341,
"y": -32.4276428
},
"OffsetMin": {
"x": 20.1109619,
"y": -471.1826
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 697.723145,
"y": 438.754944
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 368.972534,
"y": -251.805115
},
"Position": {
"x": -591.027466,
"y": 288.1949,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": false,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ChatComponent",
"Expand": true,
"UseChatBalloon": true,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-3-wood/HUDGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://fb7a3b06-7026-4590-8efe-bb33416dd8f9",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "fb7a3b06-7026-4590-8efe-bb33416dd8f9",
"path": "/ui/HUDGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "HUDGroup",
"path": "/ui/HUDGroup",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//",
"revision": 59,
"origin": {
"type": "Model",
"entry_id": "UIGroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": true,
"GroupOrder": 0,
"GroupType": 1,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "95fb359b-b952-409c-8bab-0c921f93ce03",
"path": "/ui/HUDGroup/Button_Jump",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Button_Jump",
"path": "/ui/HUDGroup/Button_Jump",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "UIButton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 8,
"AnchorsMax": {
"x": 1.0,
"y": 0.0
},
"AnchorsMin": {
"x": 1.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -290.0,
"y": 295.5699
},
"OffsetMin": {
"x": -494.0,
"y": 91.5698853
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 204.0,
"y": 204.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -392.0,
"y": 193.569885
},
"Position": {
"x": 568.0,
"y": -346.4301,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9f5e2ef4f6d44ea3b5c2faba660b8408"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 32,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "fc1a5fb6-fe1d-42f8-8ada-d2d4d08a201c",
"path": "/ui/HUDGroup/Button_Jump/UISprite",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "UISprite",
"path": "/ui/HUDGroup/Button_Jump/UISprite",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "UISprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 71.49996,
"y": 67.99994
},
"OffsetMin": {
"x": -71.49757,
"y": -57.23974
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 142.997528,
"y": 125.239677
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.00120002031,
"y": 5.3801
},
"Position": {
"x": 0.00120002031,
"y": 5.3801,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "b44742a7c3de2604ba4999a54ae0b4ed"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2a68de5c-29c1-4497-86f2-d748e4ab7b01",
"path": "/ui/HUDGroup/Button_Attack",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Button_Attack",
"path": "/ui/HUDGroup/Button_Attack",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "///",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "UIButton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 8,
"AnchorsMax": {
"x": 1.0,
"y": 0.0
},
"AnchorsMin": {
"x": 1.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -72.9000854,
"y": 434.0
},
"OffsetMin": {
"x": -276.9001,
"y": 230.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 204.0,
"y": 204.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -174.900085,
"y": 332.0
},
"Position": {
"x": 785.0999,
"y": -208.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9f5e2ef4f6d44ea3b5c2faba660b8408"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 306,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "f98a8069-d419-4cd2-a196-ca045f531d8f",
"path": "/ui/HUDGroup/Button_Attack/UISprite",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "UISprite",
"path": "/ui/HUDGroup/Button_Attack/UISprite",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "UISprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 52.00058,
"y": 53.4998932
},
"OffsetMin": {
"x": -51.85498,
"y": -51.31729
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 103.85556,
"y": 104.817184
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.07279998,
"y": 1.0913
},
"Position": {
"x": 0.07279998,
"y": 1.0913,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "cc55ed79f099cc94fae152e754984ddd"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "f05ae5c4-4e0c-482b-9158-3e8c4d769342",
"path": "/ui/HUDGroup/Money_1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Money_1",
"path": "/ui/HUDGroup/Money_1",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "///",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -25.0,
"y": -30.0
},
"OffsetMin": {
"x": -275.0,
"y": -94.0
},
"Pivot": {
"x": 0.5,
"y": 1.0
},
"RectSize": {
"x": 250.0,
"y": 64.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -150.0,
"y": -30.0
},
"Position": {
"x": -150.0,
"y": 510.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "613fc7e204c548c189eb9fac2107ab1b"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "362b61b9-7c6f-479c-9698-10b79428e869",
"path": "/ui/HUDGroup/Money_1/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/HUDGroup/Money_1/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 58.5912552,
"y": 31.1543217
},
"OffsetMin": {
"x": -6.31357574,
"y": -31.1543217
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 64.90483,
"y": 62.3086433
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 26.13884,
"y": 0.0
},
"Position": {
"x": -98.86116,
"y": -32.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "b52e57c7de6948e89ba291abb678aca6"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "a83ef511-534f-4928-be80-7e68ef42d89f",
"path": "/ui/HUDGroup/Money_1/Num",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Num",
"path": "/ui/HUDGroup/Money_1/Num",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 120.0,
"y": 29.9999
},
"OffsetMin": {
"x": -70.0,
"y": -30.0001
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 190.0,
"y": 60.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 25.0,
"y": -0.0001
},
"Position": {
"x": 25.0,
"y": -32.0001,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 27,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.1882353,
"g": 0.07450981,
"b": 0.007843138,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.6,
"OverrideSorting": false,
"Text": "9,999,999",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "87e3cf36-693b-48e4-9e38-7cea94cd5661",
"path": "/ui/HUDGroup/Money_2",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Money_2",
"path": "/ui/HUDGroup/Money_2",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "///",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 245.0,
"y": -30.0
},
"OffsetMin": {
"x": -5.0,
"y": -94.0
},
"Pivot": {
"x": 0.5,
"y": 1.0
},
"RectSize": {
"x": 250.0,
"y": 64.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 120.0,
"y": -30.0
},
"Position": {
"x": 120.0,
"y": 510.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "613fc7e204c548c189eb9fac2107ab1b"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2ff6f758-39db-4143-be05-34a59cc539d8",
"path": "/ui/HUDGroup/Money_2/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/HUDGroup/Money_2/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 66.099884,
"y": 35.28699
},
"OffsetMin": {
"x": -1.75969315,
"y": -35.28699
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 67.85958,
"y": 70.57398
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 32.1700974,
"y": 0.0
},
"Position": {
"x": -92.8299,
"y": -32.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "b7aa603d9b7645e8b9b52e1e67dd76fe"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "9fbf1b1b-ddea-4429-881c-96fa6b81ec5f",
"path": "/ui/HUDGroup/Money_2/Num",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Num",
"path": "/ui/HUDGroup/Money_2/Num",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 120.0,
"y": 29.9999
},
"OffsetMin": {
"x": -70.0,
"y": -30.0001
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 190.0,
"y": 60.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 25.0,
"y": -0.0001
},
"Position": {
"x": 25.0,
"y": -32.0001,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 27,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.1882353,
"g": 0.07450981,
"b": 0.007843138,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.6,
"OverrideSorting": false,
"Text": "9,999,999",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "519e14e2-56f9-4857-ae4c-93f1dc8de396",
"path": "/ui/HUDGroup/Button_Menu",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Button_Menu",
"path": "/ui/HUDGroup/Button_Menu",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "///",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 122.0,
"y": -20.0
},
"OffsetMin": {
"x": 10.0,
"y": -124.0
},
"Pivot": {
"x": 0.0,
"y": 1.0
},
"RectSize": {
"x": 112.0,
"y": 104.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 10.0,
"y": -20.0
},
"Position": {
"x": -950.0,
"y": 520.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "69bd72f5dbdf4bbdb449d2d0676e7553"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8f39d0a0-35de-4518-9337-293ab049f5e3",
"path": "/ui/HUDGroup/InfiniteQuest",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "InfiniteQuest",
"path": "/ui/HUDGroup/InfiniteQuest",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 5,
"pathConstraints": "///",
"revision": 11,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": 390.0
},
"OffsetMin": {
"x": -130.0,
"y": 290.0
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": 340.0
},
"Position": {
"x": 930.0,
"y": 340.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "49608c8f-5f79-4259-84e4-312c1d662732",
"path": "/ui/HUDGroup/InfiniteQuest/Paper",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Paper",
"path": "/ui/HUDGroup/InfiniteQuest/Paper",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -46.67325,
"y": 60.6336861
},
"OffsetMin": {
"x": -456.673248,
"y": -63.4200859
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 410.0,
"y": 124.053772
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -46.67325,
"y": -1.3932
},
"Position": {
"x": -46.67325,
"y": -1.3932,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "963d1a2352084f0c86e41c6618ec27ea"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "f7de8664-e009-4147-8e2c-f8f67f86e2d0",
"path": "/ui/HUDGroup/InfiniteQuest/Paper/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/HUDGroup/InfiniteQuest/Paper/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -180.000549,
"y": -6.44985962
},
"OffsetMin": {
"x": -460.000549,
"y": -45.90074
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 280.0,
"y": 39.450882
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -180.000549,
"y": -26.1753
},
"Position": {
"x": -180.000549,
"y": -26.1753,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 25,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "0/100",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "72161433-3647-41e4-954c-5cbdc6888924",
"path": "/ui/HUDGroup/InfiniteQuest/Paper/Score",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Score",
"path": "/ui/HUDGroup/InfiniteQuest/Paper/Score",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -180.0002,
"y": 52.5342026
},
"OffsetMin": {
"x": -400.000183,
"y": -7.46579933
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 220.0,
"y": 60.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -180.0002,
"y": 22.5342
},
"Position": {
"x": -180.0002,
"y": 22.5342,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 0.8352941,
"b": 0.443137258,
"a": 1.0
},
"FontSize": 26,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "퀘스트 내용",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b02a3e4d-f8d1-4ab9-9769-37023f118df2",
"path": "/ui/HUDGroup/InfiniteQuest/Paper/Reward",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Reward",
"path": "/ui/HUDGroup/InfiniteQuest/Paper/Reward",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -70.0,
"y": 50.0
},
"OffsetMin": {
"x": -170.0,
"y": -50.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -120.0,
"y": 0.0
},
"Position": {
"x": -120.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "bc411be7a24a443390c7fdaf4f86e064"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "5786e358-2afa-431c-8ae0-699bb0988e5f",
"path": "/ui/HUDGroup/InfiniteQuest/Paper/Reward/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/HUDGroup/InfiniteQuest/Paper/Reward/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 35.0,
"y": 35.0
},
"OffsetMin": {
"x": -35.0,
"y": -35.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 70.0,
"y": 70.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "8db88ae11537475c95f94d1d27c7913b"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b4b6445d-e1c1-4f13-b643-0cabe1bf6c8e",
"path": "/ui/HUDGroup/InfiniteQuest/Paper/Reward/Amount",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Amount",
"path": "/ui/HUDGroup/InfiniteQuest/Paper/Reward/Amount",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 50.0001,
"y": -3.08427429
},
"OffsetMin": {
"x": -49.9999,
"y": -50.0001259
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 46.91585
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0001,
"y": -26.5422
},
"Position": {
"x": 0.0001,
"y": -26.5422,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 24,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "999.9K",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8ab5677a-d97f-4192-91d7-04c33389762e",
"path": "/ui/HUDGroup/InfiniteQuest/QuestGauge",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "QuestGauge",
"path": "/ui/HUDGroup/InfiniteQuest/QuestGauge",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 50.0,
"y": 50.0
},
"OffsetMin": {
"x": -50.0,
"y": -50.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": -50.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"ImageRUID": {
"DataId": ""
},
"OverrideSorting": false,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "390706f6-fa28-4a53-b53a-06e3dfc4a172",
"path": "/ui/HUDGroup/InfiniteQuest/QuestGauge/Bg_QuestGauge",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Bg_QuestGauge",
"path": "/ui/HUDGroup/InfiniteQuest/QuestGauge/Bg_QuestGauge",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 59.614502,
"y": 56.3876
},
"OffsetMin": {
"x": -56.385498,
"y": -59.6124
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 116.0,
"y": 116.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 1.6145,
"y": -1.6124
},
"Position": {
"x": 1.6145,
"y": -1.6124,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "f0b32ff6cc064854835fc983acf906a9"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "d4a98673-a107-4f2d-b94f-959152815991",
"path": "/ui/HUDGroup/InfiniteQuest/QuestGauge/Bg_QuestGauge/Fill",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Fill",
"path": "/ui/HUDGroup/InfiniteQuest/QuestGauge/Bg_QuestGauge/Fill",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 48.0,
"y": 48.0
},
"OffsetMin": {
"x": -48.0,
"y": -48.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 96.0,
"y": 96.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "5a7ca912a2ce4eb9a26ebe86560f6cc5"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"FillAmount": 0.0,
"FillClockWise": true,
"FillMethod": 4,
"FillOrigin": 2,
"Type": 3,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7ca9ae93-a857-49d6-b480-7ffee19b98f5",
"path": "/ui/HUDGroup/InfiniteQuest/QuestGauge/Icon_quest",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon_quest",
"path": "/ui/HUDGroup/InfiniteQuest/QuestGauge/Icon_quest",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 38.0,
"y": 36.0002
},
"OffsetMin": {
"x": -38.0,
"y": -35.9998
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 76.0,
"y": 72.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0002
},
"Position": {
"x": 0.0,
"y": 0.0002,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "964194c82e3d43edbe4ad78c624e22df"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8f3801df-51ad-478d-bd63-001e70f998ec",
"path": "/ui/HUDGroup/InfiniteQuest/QuestGauge/Percent",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Percent",
"path": "/ui/HUDGroup/InfiniteQuest/QuestGauge/Percent",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 60.0,
"y": 40.0002
},
"OffsetMin": {
"x": -60.0,
"y": 0.000198364258
},
"Pivot": {
"x": 0.5,
"y": 0.0
},
"RectSize": {
"x": 120.0,
"y": 40.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.000198364258
},
"Position": {
"x": 0.0,
"y": -49.9998,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 26,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "0%",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "e5a8cf1f-0a2a-40b3-a6b0-4736b9c9ffe5",
"path": "/ui/HUDGroup/InfiniteQuest_Clear",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "InfiniteQuest_Clear",
"path": "/ui/HUDGroup/InfiniteQuest_Clear",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 6,
"pathConstraints": "///",
"revision": 13,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": 265.0
},
"OffsetMin": {
"x": -130.0,
"y": 165.0
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": 215.0
},
"Position": {
"x": 930.0,
"y": 215.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "42df4b21-5858-4eca-91ef-07d58fde12c5",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/Paper",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Paper",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/Paper",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -46.67325,
"y": 60.6336861
},
"OffsetMin": {
"x": -456.673248,
"y": -63.4200859
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 410.0,
"y": 124.053772
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -46.67325,
"y": -1.3932
},
"Position": {
"x": -46.67325,
"y": -1.3932,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "963d1a2352084f0c86e41c6618ec27ea"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "bdda63dd-e838-4839-871e-470de3219f8d",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/Paper/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/Paper/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -80.0,
"y": -6.44985962
},
"OffsetMin": {
"x": -360.0,
"y": -45.90074
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 280.0,
"y": 39.450882
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -80.0,
"y": -26.1753
},
"Position": {
"x": -80.0,
"y": -26.1753,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 25,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "100/100",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "70ebda6e-668d-4223-90f8-6f77e0284486",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/Paper/Score",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Score",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/Paper/Score",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 7,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -80.0,
"y": 52.5342026
},
"OffsetMin": {
"x": -300.0,
"y": -7.46579933
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 220.0,
"y": 60.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -80.0,
"y": 22.5342
},
"Position": {
"x": -80.0,
"y": 22.5342,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 0.8352941,
"b": 0.443137258,
"a": 1.0
},
"FontSize": 26,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "퀘스트 내용",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "ce9f5c28-4c0b-41f0-b48a-8bf88bb3fa29",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "QuestGauge",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 50.0,
"y": 50.0
},
"OffsetMin": {
"x": -50.0,
"y": -50.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": -50.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"ImageRUID": {
"DataId": ""
},
"OverrideSorting": false,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "55dc2cb4-1943-42d3-b540-8b3aeddafed0",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge/Bg_QuestGauge",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Bg_QuestGauge",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge/Bg_QuestGauge",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 59.614502,
"y": 56.3876
},
"OffsetMin": {
"x": -56.385498,
"y": -59.6124
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 116.0,
"y": 116.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 1.6145,
"y": -1.6124
},
"Position": {
"x": 1.6145,
"y": -1.6124,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "f0b32ff6cc064854835fc983acf906a9"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "36ffed7a-a684-457f-9876-58770ad8e4c6",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge/Bg_QuestGauge/Fill",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Fill",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge/Bg_QuestGauge/Fill",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 48.0,
"y": 48.0
},
"OffsetMin": {
"x": -48.0,
"y": -48.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 96.0,
"y": 96.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "5a7ca912a2ce4eb9a26ebe86560f6cc5"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2b018bcc-63f7-4cb1-8250-de9674bc98fe",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge/ClearButton",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "ClearButton",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge/ClearButton",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 7,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 59.6144,
"y": 56.3876
},
"OffsetMin": {
"x": -56.3856,
"y": -59.6124
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 116.0,
"y": 116.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 1.6144,
"y": -1.6124
},
"Position": {
"x": 1.6144,
"y": -1.6124,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "337f47f9-bf7e-42d6-9e34-4ba09fc99d01",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge/ClearButton/Effect_Reward",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Effect_Reward",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge/ClearButton/Effect_Reward",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 50.0,
"y": 49.99998
},
"OffsetMin": {
"x": -50.0,
"y": -50.00002
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 100.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -1.79515155E-05
},
"Position": {
"x": 0.0,
"y": -1.79515155E-05,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "00066ea098584de6a7f51bcee23fc7f4"
},
"LocalScale": {
"x": 1.4,
"y": 1.4
},
"MaterialId": "material://127c977e-17c3-46f4-ade8-60d98369f04f",
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "6c05a64f-8634-435b-989a-418de77daf2f",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge/ClearButton/Icon_Reward",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon_Reward",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge/ClearButton/Icon_Reward",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 38.0,
"y": 36.0
},
"OffsetMin": {
"x": -38.0,
"y": -36.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 76.0,
"y": 72.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "8db88ae11537475c95f94d1d27c7913b"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "19840715-7ede-4973-b94a-ce68eb6bc2b4",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge/ClearButton/Txt",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Txt",
"path": "/ui/HUDGroup/InfiniteQuest_Clear/QuestGauge/ClearButton/Txt",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "//////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 60.0,
"y": 40.0002
},
"OffsetMin": {
"x": -60.0,
"y": 0.000198364258
},
"Pivot": {
"x": 0.5,
"y": 0.0
},
"RectSize": {
"x": 120.0,
"y": 40.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.000198364258
},
"Position": {
"x": 0.0,
"y": -57.9998,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Bold": true,
"FontColor": {
"r": 0.9137255,
"g": 0.992156863,
"b": 1.0,
"a": 1.0
},
"FontSize": 26,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "999.9K",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b84d016e-33d5-4f15-9e6e-995aa55d0bbe",
"path": "/ui/HUDGroup/HP",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "HP",
"path": "/ui/HUDGroup/HP",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 7,
"pathConstraints": "///",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 59.0
},
"OffsetMin": {
"x": -410.0,
"y": 10.0
},
"Pivot": {
"x": 0.5,
"y": 0.0
},
"RectSize": {
"x": 410.0,
"y": 49.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -205.0,
"y": 10.0
},
"Position": {
"x": -205.0,
"y": -530.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "dee8cd0715454ec08c3ed1793e75bb7a"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "e8dd26e7-3b7a-4e8e-94cb-eaceeda563ca",
"path": "/ui/HUDGroup/HP/Fill",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Fill",
"path": "/ui/HUDGroup/HP/Fill",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 204.0,
"y": 25.5
},
"OffsetMin": {
"x": -100.0,
"y": -25.5
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 304.0,
"y": 51.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -100.0,
"y": 0.0
},
"Position": {
"x": -100.0,
"y": 24.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "b0b89c9ec3cf47c99d0bee6e513a3e21"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8282f48d-18e3-4be2-8f8d-5d9e7bbec8b2",
"path": "/ui/HUDGroup/HP/Num",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Num",
"path": "/ui/HUDGroup/HP/Num",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 196.5,
"y": 14.0
},
"OffsetMin": {
"x": -100.5,
"y": -14.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 297.0,
"y": 28.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 48.0,
"y": 0.0
},
"Position": {
"x": 48.0,
"y": 24.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 26,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.384313732,
"g": 0.168627456,
"b": 0.0509803928,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.5,
"OverrideSorting": false,
"Text": "100/100",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2d4c7ce1-9637-4210-bc2e-a28ab5d284bf",
"path": "/ui/HUDGroup/HP/Tiltle",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Tiltle",
"path": "/ui/HUDGroup/HP/Tiltle",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 113.0,
"y": 22.5
},
"OffsetMin": {
"x": 0.0,
"y": -28.5
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 113.0,
"y": 51.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -3.0
},
"Position": {
"x": -205.0,
"y": 21.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "5d241898526c4415a055b977e3c77fa2"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 3,
"DropShadow": true,
"DropShadowAngle": 90.0,
"DropShadowColor": {
"r": 1.0,
"g": 0.8627451,
"b": 0.6431373,
"a": 0.21
},
"DropShadowDistance": 2.0,
"FontColor": {
"r": 0.266666681,
"g": 0.184313729,
"b": 0.117647059,
"a": 1.0
},
"FontSize": 27,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Padding": {
"left": 25,
"right": 0,
"top": 0,
"bottom": 6
},
"Text": "HP",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "bbf1352e-a202-4f43-b3a7-749a5a4ca0a6",
"path": "/ui/HUDGroup/HP/Outline",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Outline",
"path": "/ui/HUDGroup/HP/Outline",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 202.0,
"y": 22.5
},
"OffsetMin": {
"x": -202.0,
"y": -22.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 404.0,
"y": 45.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 24.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "88b7d219d0e148cbb1ef879a631f4146"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "3331595f-0b20-4d3a-80e9-e29a3281d3a6",
"path": "/ui/HUDGroup/MP",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "MP",
"path": "/ui/HUDGroup/MP",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 8,
"pathConstraints": "///",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 410.0,
"y": 59.0
},
"OffsetMin": {
"x": 0.0,
"y": 10.0
},
"Pivot": {
"x": 0.5,
"y": 0.0
},
"RectSize": {
"x": 410.0,
"y": 49.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 205.0,
"y": 10.0
},
"Position": {
"x": 205.0,
"y": -530.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "dee8cd0715454ec08c3ed1793e75bb7a"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "24ec1e2a-4dff-490e-adba-38fc2a385dd2",
"path": "/ui/HUDGroup/MP/Fill",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Fill",
"path": "/ui/HUDGroup/MP/Fill",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 204.0,
"y": 25.5
},
"OffsetMin": {
"x": -100.0,
"y": -25.5
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 304.0,
"y": 51.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -100.0,
"y": 0.0
},
"Position": {
"x": -100.0,
"y": 24.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "f4cfd61e10b24cfea5ffe08aa063a23a"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "19253a5c-d6f1-496f-8a8b-3347a5162edc",
"path": "/ui/HUDGroup/MP/Num",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Num",
"path": "/ui/HUDGroup/MP/Num",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 196.5,
"y": 14.0
},
"OffsetMin": {
"x": -100.5,
"y": -14.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 297.0,
"y": 28.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 48.0,
"y": 0.0
},
"Position": {
"x": 48.0,
"y": 24.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 26,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.384313732,
"g": 0.168627456,
"b": 0.0509803928,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 1.5,
"OverrideSorting": false,
"Text": "100/100",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b6972a83-0ae2-4996-bb0b-28f872360902",
"path": "/ui/HUDGroup/MP/Tiltle",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Tiltle",
"path": "/ui/HUDGroup/MP/Tiltle",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 113.0,
"y": 22.5
},
"OffsetMin": {
"x": 0.0,
"y": -28.5
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 113.0,
"y": 51.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -3.0
},
"Position": {
"x": -205.0,
"y": 21.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "5d241898526c4415a055b977e3c77fa2"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 3,
"DropShadow": true,
"DropShadowAngle": 90.0,
"DropShadowColor": {
"r": 1.0,
"g": 0.8627451,
"b": 0.6431373,
"a": 0.21
},
"DropShadowDistance": 2.0,
"FontColor": {
"r": 0.266666681,
"g": 0.184313729,
"b": 0.117647059,
"a": 1.0
},
"FontSize": 27,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Padding": {
"left": 25,
"right": 0,
"top": 0,
"bottom": 6
},
"Text": "MP",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "e070aa02-c822-48ca-aa87-c15e2165d48f",
"path": "/ui/HUDGroup/MP/Outline",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Outline",
"path": "/ui/HUDGroup/MP/Outline",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 202.0,
"y": 22.5
},
"OffsetMin": {
"x": -202.0,
"y": -22.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 404.0,
"y": 45.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 24.5,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "88b7d219d0e148cbb1ef879a631f4146"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-3-wood/Popupbutton.mlua
@Component
script Popupbutton extends Component
@ExecSpace("ClientOnly")
@EventSender("Entity", "519e14e2-56f9-4857-ae4c-93f1dc8de396")
handler HandleButtonClickEvent(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
--MenuButton
local panel=_EntityService:GetEntityByPath("/ui/ButtonGroup/Menu_Panel")
if panel.Enable==false then
panel.Enable=true
else
panel.Enable=false
end
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "bd72c2a6-5ef3-4751-9306-5574ed08164a")
handler HandleButtonClickEvent2(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
--BasicPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup/Panel/OKButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "af93a8e3-a4d0-414c-bf37-e2f81da79728")
handler HandleButtonClickEvent3(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------"
--TabPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/TabPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/TabPopup/Panel/TitlePanel/ExitButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "ce4f2086-cec0-4726-8774-2a5bd6c1a8ea")
handler HandleButtonClickEvent4(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
--AchievementPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/AchievementPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/AchievementPopup/Panel/TitlePanel/ExitButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "556036bf-ec60-40f9-b28e-a70424fce3e4")
handler HandleButtonClickEvent5(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
--InventoryPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/InventoryPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/InventoryPopup/Panel/TitlePanel/ExitButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "a0ca3b2c-9f2d-445b-88c7-2d864ac79787")
handler HandleButtonClickEvent6(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
--DailyRewardPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/DailyRewardPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/DailyRewardPopup/Panel/TitlePanel/ExitButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "ecd9a0b3-72f0-426a-a4eb-7d1ea42c5f2a")
handler HandleButtonClickEvent7(ButtonClickEvent event)
--------------- Native Event Sender Info ----------------
-- Sender: ButtonComponent
-- Space: Client
---------------------------------------------------------
-- Parameters
local Entity = event.Entity
---------------------------------------------------------
--ShopPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/ShopPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/ShopPopup/Panel/TitlePanel/ExitButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "8b589383-244a-41fb-bdd9-833ed08c5089")
handler HandleButtonClickEvent8(ButtonClickEvent event)
--------------- Native Event Sender Info ----------------
-- Sender: ButtonComponent
-- Space: Client
---------------------------------------------------------
-- Parameters
local Entity = event.Entity
---------------------------------------------------------
--Shop_DetailInfoPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/Shop_DetailInfoPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/Shop_DetailInfoPopup/DetailInfoPopup/Panel/ExitButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
endreferences/templates/style-3-wood/ruid-map.md
# Style 3 — RUID Map
Use these `ImageRUID.DataId` values when applying this template's visual style.
## UI Frame / Panel Backgrounds
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `6dfb3edaaaf74ce5966eed140e0e09c2` | Dim overlay / popup backdrop | dim, 1, 2, 3, 4 |
| `360816ef52c648b788f50821e360e732` | Content panel (inner area) | ContentPanel |
| `25e9e89579644202805f535d038a9edb` | Panel background | Panel |
| `1b0b24ed2bc44ac1bdd4f93c9eb406c7` | Panel background (variant) | Panel |
| `c24adedc9faa457daf4e4aae7cd663bb` | Paper/scroll texture | Paper |
| `f01d920b688a4937bb597e7b897d5740` | Menu panel | Menu_Panel |
| `b5f829660fbc4a58aaac8b8f4e22775f` | Description panel | DescPanel |
| `7995ae69d68d431cac74097bc100b4b7` | Large popup background | panel_bg |
| `3fd1147f1e32418bb1fb7b114258ade6` | Day number panel (attendance) | panel_DayNum |
| `cdaf488453b54591b9893a29920dd6e5` | Next reward info panel | WhenNextRewardPanel |
## Buttons
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `9bb8e4d004fb46bb9c1b528b3c1ebf9f` | Standard button (popup-opener, tab) | ButtonGroup 1-7, PopupGroup 2-5 |
| `e22dca176e7c48b39d5b40554b546e22` | Confirm/OK button | OKButton, AbilityButton, 1 |
| `e4e06f6334ae490b9bf4732b82003c17` | Buy/purchase button | BuyButton, ReciveButton |
| `976f304c3d3340d49728226e64212ed8` | Receive button (variant) | ReciveButton |
| `085b77bb8b374a54882715d44d39bacb` | Receive/claim button | ReceiveButton |
| `221e0368e59b4a5981903eb78ac7513d` | Exit/close button (X) variant 1 | ExitButton |
| `298eb9b732264ea89c34001857d841a5` | Exit/close button (X) variant 2 | ExitButton |
| `67e476a57b0f48e4814509ab90a067b7` | Tooltip button | Btn_tooltip |
## Button Icons
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `00996041bb604ffe86dc6787a71640a0` | Menu icon | ButtonGroup Icon |
| `040aafcd62604f4cb0f2f265d47409f1` | Menu icon | ButtonGroup Icon |
| `0aea179722074bbb8bbb60329e8f7e46` | Menu icon | ButtonGroup Icon |
| `1d4ba1a6eeb54a21aa119d9133328ab4` | Menu icon | ButtonGroup Icon |
| `617b8c926c164cb1892f69f86673a2f6` | Menu icon | ButtonGroup Icon |
| `cc996210da3f42178dfdcf026857cc1f` | Menu icon | ButtonGroup Icon |
## HUD Elements
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `dee8cd0715454ec08c3ed1793e75bb7a` | HP/MP gauge frame | HP, MP, Progress_Bar |
| `f0b32ff6cc064854835fc983acf906a9` | Quest gauge background | Bg_QuestGauge |
| `5a7ca912a2ce4eb9a26ebe86560f6cc5` | Gauge fill | Fill |
| `b0b89c9ec3cf47c99d0bee6e513a3e21` | Gauge fill (variant) | Fill |
| `f4cfd61e10b24cfea5ffe08aa063a23a` | Gauge fill (variant) | Fill |
| `88b7d219d0e148cbb1ef879a631f4146` | Gauge outline | Outline |
| `9f5e2ef4f6d44ea3b5c2faba660b8408` | Action button (attack/jump) | Button_Attack, Button_Jump |
| `69bd72f5dbdf4bbdb449d2d0676e7553` | Menu hamburger button | Button_Menu |
| `963d1a2352084f0c86e41c6618ec27ea` | Quest paper background | Paper |
| `5d241898526c4415a055b977e3c77fa2` | Title bar | Tiltle |
| `964194c82e3d43edbe4ad78c624e22df` | Quest icon | Icon_quest |
## Items & Slots
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `a7928ea51274446898d8453eb96ee06f` | Item slot background | Bg_Icon, ItemSlot, slot_1-3 |
| `004e5fc9c660a1342a055ae7157e5aeb` | Equipment slot | EquipedSlot, HavingItemSlot, Text |
| `89e93d0c2c8049138f3c217ce7c648cb` | Grid slot | Slot_1 through Slot_7 |
| `4e5d2070c69c4c689ca573005b63f61d` | Single slot frame | Slot |
## Currency & Rewards
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `5a990aca536417e40bb5e01452fe374e` | Currency icon (gold/meso) | Money_1, Money_2, Money_3, Money, Time |
| `fb270c91dd5ece34ab03cbb662d9bab3` | Stat number / currency display | AbilityNum_*, AbilityTitle_*, Money, Num, ReciveDone |
| `8db88ae11537475c95f94d1d27c7913b` | Reward icon | Icon_Reward, Icon |
| `b52e57c7de6948e89ba291abb678aca6` | Item icon | Icon |
| `b7aa603d9b7645e8b9b52e1e67dd76fe` | Item icon | Icon |
| `613fc7e204c548c189eb9fac2107ab1b` | Currency display (HUD) | Money_1, Money_2 |
| `00066ea098584de6a7f51bcee23fc7f4` | Reward effect | Effect_Reward |
| `bc411be7a24a443390c7fdaf4f86e064` | Reward panel | Reward |
## Progress & Status
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `e631ce0541de3ac44a936b608c9c44f2` | Progress bar background | Progress_Bar |
| `a61b1b0386e94a288952ab4a1be55138` | Progress fill | Fill |
| `f0c4b89213b145468cbe8d752c639bcd` | Check icon (completed) | CheckIcon |
| `99804bfbea32478b8186bb1fc769fa09` | Selected state highlight | selected_line |
## Popup-specific Icons
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `00edab023c0d426daa0b98e306fcb8de` | Category icon | Icon |
| `0a0a800bf0924ff7bba89d7642881ac2` | Category icon | Icon |
| `117c825088f64409bdbc5307e770b615` | Category icon | Icon |
| `2c87d6385a60420ab55fa8d36ff3d6dc` | Category icon | Icon |
| `354f7770bded480b98c003aa3e068dc4` | Category icon | Icon |
| `67a01b8c08a74c32a510e794c5b2985e` | Category icon | Icon |
| `886d7a11f39941c785419ae68d90683d` | Category icon | Icon |
| `8d39341f72234165bc72ab505179452f` | Category icon | Icon |
| `8dc63345169d4524aa658fd5169a654d` | Category icon | Icon |
| `9a501c8920d54971ba1c6ad052629104` | Category icon | Icon |
| `a87c7b9dabb24c2396cee114a24da789` | Category icon | Icon |
| `bc755223393b4618915358e27558aba0` | Category icon | Icon |
| `c9134249e93e4ba695de15d8bb02561b` | Category icon | Icon |
## Common (shared with other styles)
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `7d614552ba7843049bb48ebd4509fb8f` | Toast message background | Toast_message |
| `b44742a7c3de2604ba4999a54ae0b4ed` | UI base sprite | UISprite |
| `cc55ed79f099cc94fae152e754984ddd` | UI base sprite | UISprite |
| `8ef238e0d0ca4bb783aca526cff35d11` | UI sprite background | UISprite |
references/templates/style-3-wood/structure.md
# Style 3 (Wood) — UI Structure
Format: `Name | Alignment | (x, y) | WxH | [Components] | (state)`
```
============================================================
ButtonGroup.ui (24 entities)
============================================================
ButtonGroup | GroupOrder=3 | StretchAll | 1920x1080 | [UIGroupComponent]
Menu_Panel | TopLeft | (0, -540) | 363x850
ScrollList | StretchAll | 315x805 | [ScrollLayout]
============================================================
DefaultGroup.ui (3 entities)
============================================================
DefaultGroup | GroupOrder=1 | hidden | StretchAll | 1920x1080 | [UIGroupComponent]
UIChat | TopLeft | (369, -252) | 698x439 | [ChatComponent]
UIJoystick | BottomLeft | (310, 230) | 200x200 | [JoystickComponent]
============================================================
HUDGroup.ui (45 entities)
============================================================
HUDGroup | GroupOrder=0 | StretchAll | 1920x1080 | [UIGroupComponent]
Button_Attack | BottomRight | (-175, 332) | 204x204 | [Button]
UISprite | Center | (0, 1) | 104x105
Button_Jump | BottomRight | (-392, 194) | 204x204 | [Button]
UISprite | Center | (0, 5) | 143x125
Button_Menu | TopLeft | (10, -20) | 112x104 | [Button]
HP | BottomCenter | (-205, 10) | 410x49 | [Button]
Fill | Center | (-100, 0) | 304x51
Num | Center | (48, 0) | 297x28 | [TextComponent] | "100/100"
Outline | Center | 404x45
Tiltle | Left | (0, -3) | 113x51 | [TextComponent] | "HP"
InfiniteQuest | Right | (-30, 340) | 100x100
Paper | Right | (-47, -1) | 410x124
QuestGauge | Center | 100x100 | [Button]
InfiniteQuest_Clear | Right | (-30, 215) | 100x100
Paper | Right | (-47, -1) | 410x124
QuestGauge | Center | 100x100 | [Button]
MP | BottomCenter | (205, 10) | 410x49 | [Button]
Fill | Center | (-100, 0) | 304x51
Num | Center | (48, 0) | 297x28 | [TextComponent] | "100/100"
Outline | Center | 404x45
Tiltle | Left | (0, -3) | 113x51 | [TextComponent] | "MP"
Money_1 | TopCenter | (-150, -30) | 250x64
Icon | Left | (26, 0) | 65x62
Num | Center | (25, -0) | 190x60 | [TextComponent] | "9,999,999"
Money_2 | TopCenter | (120, -30) | 250x64
Icon | Left | (32, 0) | 68x71
Num | Center | (25, -0) | 190x60 | [TextComponent] | "9,999,999"
============================================================
PopupGroup.ui (435 entities)
============================================================
PopupGroup | GroupOrder=4 | StretchAll | 1920x1080 | [UIGroupComponent]
AchievementPopup | StretchAll | (0, -0) | 2360x1520 | (disabled)
Panel | Center | (0, -10) | 900x950
BasicPopup | StretchAll | 2360x1520 | (disabled)
Panel | Center | (0, 10) | 810x910
DailyRewardPopup | StretchAll | (0, -0) | 2360x1520 | (disabled)
Panel | Center | 1144x980
InventoryPopup | StretchAll | 2360x1520 | (disabled)
Panel | Center | (0, -10) | 1450x950
ShopPopup | StretchAll | 2360x1520 | (disabled)
Panel | Center | (0, -10) | 1450x950
Shop_DetailInfoPopup | StretchAll | 2360x1520 | (disabled)
DetailInfoPopup | StretchAll | 2360x1520
TabPopup | StretchAll | (0, -0) | 2360x1520 | (disabled)
Panel | Center | (0, 10) | 1250x910
============================================================
ToastGroup.ui (2 entities)
============================================================
ToastGroup | GroupOrder=2 | hidden | StretchAll | 1920x1080 | [UIGroupComponent] | (disabled)
Toast_message | TopCenter | (0, -64) | 210x79 | [TextComponent] | "message"
```
references/templates/style-3-wood/ToastGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://0bc398f9-29cb-4d89-a78d-f24742b117e8",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "0bc398f9-29cb-4d89-a78d-f24742b117e8",
"path": "/ui/ToastGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "ToastGroup",
"path": "/ui/ToastGroup",
"nameEditable": true,
"enable": false,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "//",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": false,
"GroupOrder": 2,
"GroupType": 1,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7af9e538-1713-49f7-a83e-711c0f4b4a3c",
"path": "/ui/ToastGroup/Toast_message",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "Toast_message",
"path": "/ui/ToastGroup/Toast_message",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "UISprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 105.221237,
"y": -24.353981
},
"OffsetMin": {
"x": -105.221237,
"y": -103.646019
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 210.442474,
"y": 79.29204
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -64.0
},
"Position": {
"x": 0.0,
"y": 476.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "7d614552ba7843049bb48ebd4509fb8f"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.6
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 27,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 50,
"right": 50,
"top": 20,
"bottom": 20
},
"SizeFit": true,
"Text": "message",
"UseOutLine": false,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-4-blue/ButtonGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://4882c5a4-b3be-49fe-b623-50e759b30326",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "4882c5a4-b3be-49fe-b623-50e759b30326",
"path": "/ui/ButtonGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "ButtonGroup",
"path": "/ui/ButtonGroup",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "//",
"revision": 26,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 15.7800293,
"y": 0.0
},
"OffsetMin": {
"x": -15.7800293,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1951.56,
"y": 1080.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": true,
"GroupOrder": 3,
"GroupType": 2,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "a99c2783-2889-491a-8abc-5b977e8e4f81",
"path": "/ui/ButtonGroup/Btn_Basic",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_Basic",
"path": "/ui/ButtonGroup/Btn_Basic",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 7,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 5,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 1.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": -130.0
},
"OffsetMin": {
"x": -170.000061,
"y": -270.0
},
"Pivot": {
"x": 1.0,
"y": 1.0
},
"RectSize": {
"x": 140.000061,
"y": 140.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": -130.0
},
"Position": {
"x": 945.78,
"y": 410.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "32da0f3eea2a442abac8ed97fdeb442b"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "91053fb4-cf86-451d-a5d0-5be292559e2c",
"path": "/ui/ButtonGroup/Btn_Basic/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Btn_Basic/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 40.0,
"y": 43.0
},
"OffsetMin": {
"x": -40.0,
"y": -37.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 80.0,
"y": 80.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 3.0
},
"Position": {
"x": -70.0,
"y": -67.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9ff00165e3e44d9296b0de5e860cfa6c"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Outline": true,
"OutlineColor": {
"r": 0.1882353,
"g": 0.6039216,
"b": 0.7137255,
"a": 1.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "89b9cf80-d5c4-4bad-a92c-460ce0974f09",
"path": "/ui/ButtonGroup/Btn_Basic/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Btn_Basic/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 31.5
},
"OffsetMin": {
"x": -85.0,
"y": -11.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 43.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 10.0
},
"Position": {
"x": -70.0,
"y": -130.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.08627451,
"g": 0.380392164,
"b": 0.4862745,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "기본팝업1",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "c760d7e3-b80c-49c3-8b19-3b2fdd703880",
"path": "/ui/ButtonGroup/Btn_ShopMenu",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_ShopMenu",
"path": "/ui/ButtonGroup/Btn_ShopMenu",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "///",
"revision": 9,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 5,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 1.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": -281.0
},
"OffsetMin": {
"x": -170.000061,
"y": -421.0
},
"Pivot": {
"x": 1.0,
"y": 1.0
},
"RectSize": {
"x": 140.000061,
"y": 140.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": -281.0
},
"Position": {
"x": 945.78,
"y": 259.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "32da0f3eea2a442abac8ed97fdeb442b"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "1b6baa19-cc25-45bc-ba59-dcac3ac429e8",
"path": "/ui/ButtonGroup/Btn_ShopMenu/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Btn_ShopMenu/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 40.0,
"y": 43.0
},
"OffsetMin": {
"x": -40.0,
"y": -33.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 80.0,
"y": 76.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 5.0
},
"Position": {
"x": -70.0,
"y": -65.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "31442e40631e40a293981d6ac9c2de1e"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "adeac845-6950-40ab-8fa1-cdb754e09583",
"path": "/ui/ButtonGroup/Btn_ShopMenu/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Btn_ShopMenu/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 31.5
},
"OffsetMin": {
"x": -85.0,
"y": -11.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 43.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 10.0
},
"Position": {
"x": -70.0,
"y": -130.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.08627451,
"g": 0.380392164,
"b": 0.4862745,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "상점",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "654a3c00-400c-46aa-a811-1d219d350ad5",
"path": "/ui/ButtonGroup/Btn_ShopMenu/UISprite",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "UISprite",
"path": "/ui/ButtonGroup/Btn_ShopMenu/UISprite",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 44.0,
"y": 34.0
},
"OffsetMin": {
"x": -24.0,
"y": -34.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 68.0,
"y": 68.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 10.0,
"y": 0.0
},
"Position": {
"x": -130.0,
"y": -70.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "2e7233e9487d499ea3846aede8473fee"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"FlipX": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "241ee38a-8a44-4efa-a3e4-a60d121ddea1",
"path": "/ui/ButtonGroup/Btn_Shop",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_Shop",
"path": "/ui/ButtonGroup/Btn_Shop",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "///",
"revision": 10,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 5,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 1.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -330.0,
"y": -287.0
},
"OffsetMin": {
"x": -460.000061,
"y": -417.0
},
"Pivot": {
"x": 1.0,
"y": 1.0
},
"RectSize": {
"x": 130.000061,
"y": 130.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -330.0,
"y": -287.0
},
"Position": {
"x": 645.78,
"y": 253.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "32da0f3eea2a442abac8ed97fdeb442b"
},
"MaterialId": "material://1aaac6c5-fa9f-4b0e-a1fc-5f5f5091f3e5",
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b808ac4c-c63a-4dc3-a573-975fb23e4818",
"path": "/ui/ButtonGroup/Btn_Shop/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Btn_Shop/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 40.0,
"y": 43.0
},
"OffsetMin": {
"x": -40.0,
"y": -33.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 80.0,
"y": 76.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 5.0
},
"Position": {
"x": -65.0,
"y": -60.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "31442e40631e40a293981d6ac9c2de1e"
},
"MaterialId": "material://1aaac6c5-fa9f-4b0e-a1fc-5f5f5091f3e5",
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "089db7c6-5318-4c7b-9471-aa0571265f92",
"path": "/ui/ButtonGroup/Btn_Shop/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Btn_Shop/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 31.5
},
"OffsetMin": {
"x": -85.0,
"y": -11.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 43.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 10.0
},
"Position": {
"x": -65.0,
"y": -120.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.08627451,
"g": 0.380392164,
"b": 0.4862745,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "뽑기 상점",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "57602223-1930-4d68-aee3-d5c849078fd4",
"path": "/ui/ButtonGroup/Btn_ShopResult",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_ShopResult",
"path": "/ui/ButtonGroup/Btn_ShopResult",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "///",
"revision": 10,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 5,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 1.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -190.0,
"y": -287.0
},
"OffsetMin": {
"x": -320.000061,
"y": -417.0
},
"Pivot": {
"x": 1.0,
"y": 1.0
},
"RectSize": {
"x": 130.000061,
"y": 130.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -190.0,
"y": -287.0
},
"Position": {
"x": 785.78,
"y": 253.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "32da0f3eea2a442abac8ed97fdeb442b"
},
"MaterialId": "material://1aaac6c5-fa9f-4b0e-a1fc-5f5f5091f3e5",
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "d6dc2d3a-d8dc-4798-9432-c1f74f3577c8",
"path": "/ui/ButtonGroup/Btn_ShopResult/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Btn_ShopResult/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 40.0,
"y": 43.0
},
"OffsetMin": {
"x": -40.0,
"y": -33.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 80.0,
"y": 76.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 5.0
},
"Position": {
"x": -65.0,
"y": -60.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "31442e40631e40a293981d6ac9c2de1e"
},
"MaterialId": "material://1aaac6c5-fa9f-4b0e-a1fc-5f5f5091f3e5",
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "00ef18f8-6668-4272-a924-35260fffbe7c",
"path": "/ui/ButtonGroup/Btn_ShopResult/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Btn_ShopResult/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 31.5
},
"OffsetMin": {
"x": -85.0,
"y": -11.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 43.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 10.0
},
"Position": {
"x": -65.0,
"y": -120.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.08627451,
"g": 0.380392164,
"b": 0.4862745,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "뽑기 결과",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "5fbdaa56-fa92-4945-872e-e4e1450a159d",
"path": "/ui/ButtonGroup/Btn_Attendance",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_Attendance",
"path": "/ui/ButtonGroup/Btn_Attendance",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "///",
"revision": 7,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 5,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 1.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": -432.0
},
"OffsetMin": {
"x": -170.0,
"y": -572.0
},
"Pivot": {
"x": 1.0,
"y": 1.0
},
"RectSize": {
"x": 140.0,
"y": 140.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": -432.0
},
"Position": {
"x": 945.78,
"y": 108.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "32da0f3eea2a442abac8ed97fdeb442b"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "0d18d9a1-e8b0-4f34-afbb-3af76a4311a2",
"path": "/ui/ButtonGroup/Btn_Attendance/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Btn_Attendance/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 32.0,
"y": 39.0
},
"OffsetMin": {
"x": -32.0,
"y": -29.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 64.0,
"y": 68.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 5.0
},
"Position": {
"x": -70.0,
"y": -65.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "2c8b9717819c42d2afe04fa3b1a0fae1"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "361a4bce-963d-4578-aaf0-62ddd4863146",
"path": "/ui/ButtonGroup/Btn_Attendance/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Btn_Attendance/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 31.5
},
"OffsetMin": {
"x": -85.0,
"y": -11.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 43.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 10.0
},
"Position": {
"x": -70.0,
"y": -130.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.08627451,
"g": 0.380392164,
"b": 0.4862745,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "출석",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "076c41ef-1bdb-4b85-b6e4-0448b3a85970",
"path": "/ui/ButtonGroup/Btn_Achievement",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_Achievement",
"path": "/ui/ButtonGroup/Btn_Achievement",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 5,
"pathConstraints": "///",
"revision": 7,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 5,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 1.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": -583.0
},
"OffsetMin": {
"x": -170.000061,
"y": -723.0
},
"Pivot": {
"x": 1.0,
"y": 1.0
},
"RectSize": {
"x": 140.000061,
"y": 140.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": -583.0
},
"Position": {
"x": 945.78,
"y": -43.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "32da0f3eea2a442abac8ed97fdeb442b"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7b39cc0e-8be4-4ed5-a4dc-6bbaba352260",
"path": "/ui/ButtonGroup/Btn_Achievement/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Btn_Achievement/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 32.0,
"y": 38.0
},
"OffsetMin": {
"x": -32.0,
"y": -34.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 64.0,
"y": 72.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 2.0
},
"Position": {
"x": -70.0,
"y": -68.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "898a6b96567d45f4aceb3131c5969c9b"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "38a6db45-c1ff-4f49-adf3-b1c455edc693",
"path": "/ui/ButtonGroup/Btn_Achievement/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Btn_Achievement/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 31.5
},
"OffsetMin": {
"x": -85.0,
"y": -11.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 43.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 10.0
},
"Position": {
"x": -70.0,
"y": -130.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.08627451,
"g": 0.380392164,
"b": 0.4862745,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "업적",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "872aef39-d366-42a2-a12e-610e38734ed4",
"path": "/ui/ButtonGroup/Btn_Inven",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_Inven",
"path": "/ui/ButtonGroup/Btn_Inven",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 6,
"pathConstraints": "///",
"revision": 9,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 5,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 1.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": -734.0
},
"OffsetMin": {
"x": -170.000061,
"y": -874.0
},
"Pivot": {
"x": 1.0,
"y": 1.0
},
"RectSize": {
"x": 140.000061,
"y": 140.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": -734.0
},
"Position": {
"x": 945.78,
"y": -194.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "32da0f3eea2a442abac8ed97fdeb442b"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "bb7dfb3e-ba8d-4a0a-b9cb-2160faacfa17",
"path": "/ui/ButtonGroup/Btn_Inven/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Btn_Inven/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 36.0,
"y": 37.0
},
"OffsetMin": {
"x": -36.0,
"y": -27.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 72.0,
"y": 64.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 5.0
},
"Position": {
"x": -70.0,
"y": -65.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "9fdecd72fae64caebeade325efc678a1"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "dc25bbc1-d4a8-4423-8a3f-14d264a8db77",
"path": "/ui/ButtonGroup/Btn_Inven/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Btn_Inven/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 31.5
},
"OffsetMin": {
"x": -85.0,
"y": -11.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 43.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 10.0
},
"Position": {
"x": -70.0,
"y": -130.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.08627451,
"g": 0.380392164,
"b": 0.4862745,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "인벤토리",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "0cfa965e-6ef0-4975-8bb1-157e8524097b",
"path": "/ui/ButtonGroup/Btn_GameResult",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_GameResult",
"path": "/ui/ButtonGroup/Btn_GameResult",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 7,
"pathConstraints": "///",
"revision": 9,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 5,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 1.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -30.0,
"y": -885.0
},
"OffsetMin": {
"x": -170.000061,
"y": -1025.0
},
"Pivot": {
"x": 1.0,
"y": 1.0
},
"RectSize": {
"x": 140.000061,
"y": 140.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -30.0,
"y": -885.0
},
"Position": {
"x": 945.78,
"y": -345.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "32da0f3eea2a442abac8ed97fdeb442b"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "0c0dea49-283b-4a44-ae75-ef58a2340cc0",
"path": "/ui/ButtonGroup/Btn_GameResult/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/ButtonGroup/Btn_GameResult/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 24.0,
"y": 38.0
},
"OffsetMin": {
"x": -24.0,
"y": -34.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 48.0,
"y": 72.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 2.0
},
"Position": {
"x": -70.0,
"y": -68.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "490decfd1f5c4ec3a0a0118e5e2f6899"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "9f967a49-e9d0-4154-903d-b6c81e1776e6",
"path": "/ui/ButtonGroup/Btn_GameResult/Title",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Title",
"path": "/ui/ButtonGroup/Btn_GameResult/Title",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 31.5
},
"OffsetMin": {
"x": -85.0,
"y": -11.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 43.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 10.0
},
"Position": {
"x": -70.0,
"y": -130.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.08627451,
"g": 0.380392164,
"b": 0.4862745,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "게임 순위",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-4-blue/DefaultGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://7f4cbb51-2ef1-40d6-92d8-5e2bda4a2693",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "7f4cbb51-2ef1-40d6-92d8-5e2bda4a2693",
"path": "/ui/DefaultGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "DefaultGroup",
"path": "/ui/DefaultGroup",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "//",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "UIGroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 3.81469727E-06,
"y": 0.0
},
"OffsetMin": {
"x": 3.81469727E-06,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 3.81469727E-06,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": false,
"GroupOrder": 1,
"GroupType": 1,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "64a1912c-b9a5-4a27-b3ec-e942b7973df7",
"path": "/ui/DefaultGroup/Button_Attack",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Button_Attack",
"path": "/ui/DefaultGroup/Button_Attack",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "UIButton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 2,
"AlignmentOption": 8,
"AnchorsMax": {
"x": 1.0,
"y": 0.0
},
"AnchorsMin": {
"x": 1.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -72.8999939,
"y": 434.0
},
"OffsetMin": {
"x": -276.9,
"y": 230.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 204.0,
"y": 204.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -174.9,
"y": 332.0
},
"Position": {
"x": 785.1,
"y": -208.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "cd0560c4fc7f3b14994b90a502f00a21"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 306,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "43937503-8931-4d4c-b9bc-128300137953",
"path": "/ui/DefaultGroup/Button_Attack/UISprite",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "UISprite",
"path": "/ui/DefaultGroup/Button_Attack/UISprite",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "UISprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 52.0,
"y": 53.5
},
"OffsetMin": {
"x": -56.0,
"y": -55.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 108.0,
"y": 109.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -2.0,
"y": -1.0
},
"Position": {
"x": -2.0,
"y": -1.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "cc55ed79f099cc94fae152e754984ddd"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7361ca36-e745-45ad-8bde-cc40249cffa6",
"path": "/ui/DefaultGroup/Button_Jump",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Button_Jump",
"path": "/ui/DefaultGroup/Button_Jump",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "UIButton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 2,
"AlignmentOption": 8,
"AnchorsMax": {
"x": 1.0,
"y": 0.0
},
"AnchorsMin": {
"x": 1.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": -290.0,
"y": 295.57
},
"OffsetMin": {
"x": -494.0,
"y": 91.57001
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 204.0,
"y": 204.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -392.0,
"y": 193.57
},
"Position": {
"x": 568.0,
"y": -346.43,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "cd0560c4fc7f3b14994b90a502f00a21"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"KeyCode": 32,
"OverrideSorting": false,
"Transition": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "8e613db1-a9a2-4055-9a54-ed0aa584d9dd",
"path": "/ui/DefaultGroup/Button_Jump/UISprite",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "UISprite",
"path": "/ui/DefaultGroup/Button_Jump/UISprite",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "UISprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 71.5,
"y": 68.0
},
"OffsetMin": {
"x": -81.5,
"y": -66.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 153.0,
"y": 134.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -5.0,
"y": 1.0
},
"Position": {
"x": -5.0,
"y": 1.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "b44742a7c3de2604ba4999a54ae0b4ed"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b5b036da-f2d3-4757-9b11-ed1b0285b898",
"path": "/ui/DefaultGroup/UIJoystick",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.JoystickComponent",
"jsonString": {
"name": "UIJoystick",
"path": "/ui/DefaultGroup/UIJoystick",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "UISprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 2,
"AlignmentOption": 7,
"AnchorsMax": {
"x": 0.0,
"y": 0.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 410.0,
"y": 330.0001
},
"OffsetMin": {
"x": 210.0,
"y": 129.999908
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 200.0,
"y": 200.0002
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 310.0,
"y": 230.0
},
"Position": {
"x": -650.0,
"y": -310.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": false,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.JoystickComponent",
"DynamicStick": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "1319ec48-cc57-413a-a7f7-23e9ddf6840e",
"path": "/ui/DefaultGroup/UIChat",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ChatComponent",
"jsonString": {
"name": "UIChat",
"path": "/ui/DefaultGroup/UIChat",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "UIEmpty",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uiempty",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 717.8341,
"y": -32.4276428
},
"OffsetMin": {
"x": 20.1109619,
"y": -471.1826
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 697.723145,
"y": 438.754944
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 368.972534,
"y": -251.805115
},
"Position": {
"x": -591.027466,
"y": 288.1949,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.0
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": false,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.ChatComponent",
"Expand": true,
"UseChatBalloon": true,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-4-blue/HUDGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://ab78b9ea-303f-433a-a14d-7f4b2ad71644",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "ab78b9ea-303f-433a-a14d-7f4b2ad71644",
"path": "/ui/HUDGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "HUDGroup",
"path": "/ui/HUDGroup",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//",
"revision": 28,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": true,
"GroupOrder": 0,
"GroupType": 2,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2af0142a-2193-4fe0-9f78-3156671ae0cb",
"path": "/ui/HUDGroup/ButtonGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "ButtonGroup",
"path": "/ui/HUDGroup/ButtonGroup",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 400.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": -200.0
},
"Pivot": {
"x": 0.0,
"y": 1.0
},
"RectSize": {
"x": 400.0,
"y": 200.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": -960.0,
"y": 540.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "1b3d2696-26ba-4fcd-85ef-c3c34400459d",
"path": "/ui/HUDGroup/ButtonGroup/Btn_Hall",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Btn_Hall",
"path": "/ui/HUDGroup/ButtonGroup/Btn_Hall",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 170.0,
"y": -10.0
},
"OffsetMin": {
"x": 30.0,
"y": -150.0
},
"Pivot": {
"x": 0.0,
"y": 1.0
},
"RectSize": {
"x": 140.0,
"y": 140.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 30.0,
"y": -10.0
},
"Position": {
"x": 30.0,
"y": -10.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "0ceac756-b371-4882-95b7-ee26aecdf2b6",
"path": "/ui/HUDGroup/ButtonGroup/Btn_Hall/Btn_Hall",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_Hall",
"path": "/ui/HUDGroup/ButtonGroup/Btn_Hall/Btn_Hall",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 70.0,
"y": 70.0
},
"OffsetMin": {
"x": -70.0,
"y": -70.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 140.0,
"y": 140.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 70.0,
"y": -70.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "d3865a3e0da44a25b01957f59c531837"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "52393033-c8e4-42d0-8999-c88bc4575ba9",
"path": "/ui/HUDGroup/ButtonGroup/Btn_Hall/Btn_Hall/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/HUDGroup/ButtonGroup/Btn_Hall/Btn_Hall/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 31.5
},
"OffsetMin": {
"x": -85.0,
"y": -11.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 43.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 10.0
},
"Position": {
"x": 0.0,
"y": -60.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.5254902,
"g": 0.345098048,
"b": 0.07450981,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "명예의 전당",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "63ac3777-8aa5-4cb9-85be-ad4fb27d0241",
"path": "/ui/HUDGroup/ButtonGroup/Btn_Hall/Btn_Hall_Back",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_Hall_Back",
"path": "/ui/HUDGroup/ButtonGroup/Btn_Hall/Btn_Hall_Back",
"nameEditable": true,
"enable": false,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 70.0,
"y": 70.0
},
"OffsetMin": {
"x": -70.0,
"y": -70.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 140.0,
"y": 140.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 70.0,
"y": -70.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "3eb9cd4ca7d64ba382c544f1b55cc855"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "3b0fc279-eb41-41ca-bf69-117f0f12e709",
"path": "/ui/HUDGroup/ButtonGroup/Btn_Hall/Btn_Hall_Back/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/HUDGroup/ButtonGroup/Btn_Hall/Btn_Hall_Back/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 31.5
},
"OffsetMin": {
"x": -85.0,
"y": -11.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 43.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 10.0
},
"Position": {
"x": 0.0,
"y": -60.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.698039234,
"g": 0.219607845,
"b": 0.117647059,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "돌아가기",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b51cc159-b5b2-4939-94f6-4123665ebb09",
"path": "/ui/HUDGroup/ButtonGroup/Btn_FreeZone",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Btn_FreeZone",
"path": "/ui/HUDGroup/ButtonGroup/Btn_FreeZone",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 337.0,
"y": -10.0
},
"OffsetMin": {
"x": 197.0,
"y": -150.0
},
"Pivot": {
"x": 0.0,
"y": 1.0
},
"RectSize": {
"x": 140.0,
"y": 140.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 197.0,
"y": -10.0
},
"Position": {
"x": 197.0,
"y": -10.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "b274cb24-b564-4f1f-955b-53c7de1acffa",
"path": "/ui/HUDGroup/ButtonGroup/Btn_FreeZone/Btn_FreeZone",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_FreeZone",
"path": "/ui/HUDGroup/ButtonGroup/Btn_FreeZone/Btn_FreeZone",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 70.0,
"y": 70.0
},
"OffsetMin": {
"x": -70.0,
"y": -70.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 140.0,
"y": 140.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 70.0,
"y": -70.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "53ac36379071457e8ba0fb532ad0f351"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "c321e645-6225-456c-9240-ac8810d98b93",
"path": "/ui/HUDGroup/ButtonGroup/Btn_FreeZone/Btn_FreeZone/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/HUDGroup/ButtonGroup/Btn_FreeZone/Btn_FreeZone/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 31.5
},
"OffsetMin": {
"x": -85.0,
"y": -11.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 43.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 10.0
},
"Position": {
"x": 0.0,
"y": -60.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.5254902,
"g": 0.345098048,
"b": 0.07450981,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "연습 게임",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2fa52a8a-325f-43ce-9035-e7b4b36258d2",
"path": "/ui/HUDGroup/ButtonGroup/Btn_FreeZone/Btn_FreeZone_Back",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Btn_FreeZone_Back",
"path": "/ui/HUDGroup/ButtonGroup/Btn_FreeZone/Btn_FreeZone_Back",
"nameEditable": true,
"enable": false,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 70.0,
"y": 70.0
},
"OffsetMin": {
"x": -70.0,
"y": -70.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 140.0,
"y": 140.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 70.0,
"y": -70.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "3eb9cd4ca7d64ba382c544f1b55cc855"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "a04d7b87-6b45-4aac-8485-46a0318973bf",
"path": "/ui/HUDGroup/ButtonGroup/Btn_FreeZone/Btn_FreeZone_Back/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/HUDGroup/ButtonGroup/Btn_FreeZone/Btn_FreeZone_Back/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 6,
"AnchorsMax": {
"x": 0.5,
"y": 0.0
},
"AnchorsMin": {
"x": 0.5,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 31.5
},
"OffsetMin": {
"x": -85.0,
"y": -11.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 170.0,
"y": 43.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 10.0
},
"Position": {
"x": 0.0,
"y": -60.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 30,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.698039234,
"g": 0.219607845,
"b": 0.117647059,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "돌아가기",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "0917619d-e5de-4745-aa6f-056f647f862f",
"path": "/ui/HUDGroup/PlayerInfo",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "PlayerInfo",
"path": "/ui/HUDGroup/PlayerInfo",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "///",
"revision": 7,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 450.0,
"y": -25.0
},
"OffsetMin": {
"x": -450.0,
"y": -125.0
},
"Pivot": {
"x": 0.5,
"y": 1.0
},
"RectSize": {
"x": 900.0,
"y": 100.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -25.0
},
"Position": {
"x": 0.0,
"y": 515.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "db38d7e0-f39a-4f14-b12d-fd16c047a2dd",
"path": "/ui/HUDGroup/PlayerInfo/LevelInfoBG",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "LevelInfoBG",
"path": "/ui/HUDGroup/PlayerInfo/LevelInfoBG",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 350.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": -100.0
},
"Pivot": {
"x": 0.0,
"y": 1.0
},
"RectSize": {
"x": 350.0,
"y": 100.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": -450.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "31f0e1a4-585a-40cb-a3c0-e6e680c384c6",
"path": "/ui/HUDGroup/PlayerInfo/LevelInfoBG/Exp",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Exp",
"path": "/ui/HUDGroup/PlayerInfo/LevelInfoBG/Exp",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 155.0,
"y": 42.0
},
"OffsetMin": {
"x": -145.0,
"y": -42.0
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 300.0,
"y": 84.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -145.0,
"y": 0.0
},
"Position": {
"x": 30.0,
"y": -50.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "6e6629b7f2bc438cbff8e817504d589c"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "23cb3369-db72-4371-8059-65869623d3a4",
"path": "/ui/HUDGroup/PlayerInfo/LevelInfoBG/Exp/Gauge",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Gauge",
"path": "/ui/HUDGroup/PlayerInfo/LevelInfoBG/Exp/Gauge",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 132.0,
"y": 24.0
},
"OffsetMin": {
"x": -132.0,
"y": -24.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 264.0,
"y": 48.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 150.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "b8d2dcc4c80d4c83a3257ec6b388a5be"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"FillAmount": 0.2,
"FillOrigin": 0,
"Type": 3,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "fd0caf6b-74c9-4734-84b4-749422024e55",
"path": "/ui/HUDGroup/PlayerInfo/LevelInfoBG/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/HUDGroup/PlayerInfo/LevelInfoBG/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 112.0,
"y": 52.0
},
"OffsetMin": {
"x": 0.0,
"y": -52.0
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 112.0,
"y": 104.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": -50.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "02c060f966f84cef962fc7252c2bce06"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "fa5d119a-0f21-40b4-a1fe-f80d19830156",
"path": "/ui/HUDGroup/PlayerInfo/LevelInfoBG/Icon/Level",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Level",
"path": "/ui/HUDGroup/PlayerInfo/LevelInfoBG/Icon/Level",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "//////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 50.0,
"y": 27.5
},
"OffsetMin": {
"x": -50.0,
"y": -27.5
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 100.0,
"y": 55.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 56.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 34,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.635294139,
"g": 0.454901963,
"b": 0.172549024,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "2",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "1986383b-0449-4dad-a371-a422c65506ef",
"path": "/ui/HUDGroup/PlayerInfo/LevelInfoBG/Value",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Value",
"path": "/ui/HUDGroup/PlayerInfo/LevelInfoBG/Value",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 120.0,
"y": 25.0
},
"OffsetMin": {
"x": -80.0,
"y": -25.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 200.0,
"y": 50.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 20.0,
"y": 0.0
},
"Position": {
"x": 195.0,
"y": -50.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 23,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.4745098,
"g": 0.470588237,
"b": 0.4627451,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 2.0,
"OverrideSorting": false,
"Text": "1/10",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "a6f978a2-f9c1-4b98-8dea-f6eb728f159b",
"path": "/ui/HUDGroup/PlayerInfo/MesoInfoBG",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "MesoInfoBG",
"path": "/ui/HUDGroup/PlayerInfo/MesoInfoBG",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 7,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 170.0,
"y": 0.0
},
"OffsetMin": {
"x": -130.0,
"y": -100.0
},
"Pivot": {
"x": 0.5,
"y": 1.0
},
"RectSize": {
"x": 300.0,
"y": 100.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 20.0,
"y": 0.0
},
"Position": {
"x": 20.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "09a3d7c7-4038-464b-b1c5-d50fca467751",
"path": "/ui/HUDGroup/PlayerInfo/MesoInfoBG/Exp",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Exp",
"path": "/ui/HUDGroup/PlayerInfo/MesoInfoBG/Exp",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 5,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 140.56662,
"y": 37.98759
},
"OffsetMin": {
"x": -130.7732,
"y": -37.98759
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 271.3398,
"y": 75.97518
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -130.7732,
"y": 0.0
},
"Position": {
"x": -130.7732,
"y": -50.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "dec9e874622a4b269fab6552a126e0c9"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7ea29938-16bc-48b9-b388-62f61aa27f0b",
"path": "/ui/HUDGroup/PlayerInfo/MesoInfoBG/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/HUDGroup/PlayerInfo/MesoInfoBG/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 85.0,
"y": 22.5
},
"OffsetMin": {
"x": 40.0,
"y": -22.5
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 45.0,
"y": 45.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 40.0,
"y": 0.0
},
"Position": {
"x": -110.0,
"y": -50.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "f9f7e2d4a75a494c9c9227057abf6eb9"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "e5a9cdc6-dba1-4a3c-8fd6-96e47b0fe3c4",
"path": "/ui/HUDGroup/PlayerInfo/MesoInfoBG/Value",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Value",
"path": "/ui/HUDGroup/PlayerInfo/MesoInfoBG/Value",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -40.0,
"y": 25.0
},
"OffsetMin": {
"x": -240.0,
"y": -25.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 200.0,
"y": 50.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -140.0,
"y": 0.0
},
"Position": {
"x": 10.0,
"y": -50.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"FontColor": {
"r": 0.5529412,
"g": 0.349019617,
"b": 0.0431372561,
"a": 1.0
},
"FontSize": 34,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.4745098,
"g": 0.470588237,
"b": 0.4627451,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 2.0,
"OverrideSorting": false,
"Text": "100",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "82cf92a7-e10b-45ea-955d-189cc8c886d7",
"path": "/ui/HUDGroup/PlayerInfo/DiaInfoBG",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "DiaInfoBG",
"path": "/ui/HUDGroup/PlayerInfo/DiaInfoBG",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "////",
"revision": 7,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 5,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 1.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": -300.0,
"y": -100.0
},
"Pivot": {
"x": 1.0,
"y": 1.0
},
"RectSize": {
"x": 300.0,
"y": 100.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 450.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "a76b8c76-735d-4e16-b2cb-6f484eaf80eb",
"path": "/ui/HUDGroup/PlayerInfo/DiaInfoBG/Exp",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Exp",
"path": "/ui/HUDGroup/PlayerInfo/DiaInfoBG/Exp",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 140.56662,
"y": 37.98759
},
"OffsetMin": {
"x": -130.7732,
"y": -37.98759
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 271.3398,
"y": 75.97518
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": -130.7732,
"y": 0.0
},
"Position": {
"x": -280.7732,
"y": -50.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "dec9e874622a4b269fab6552a126e0c9"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "6de748c4-59ba-48a2-b018-f624fac563c0",
"path": "/ui/HUDGroup/PlayerInfo/DiaInfoBG/Icon",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "Icon",
"path": "/ui/HUDGroup/PlayerInfo/DiaInfoBG/Icon",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "/////",
"revision": 6,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 82.21744,
"y": 26.8666134
},
"OffsetMin": {
"x": 40.848175,
"y": -23.6958141
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 41.3692627,
"y": 50.5624275
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 40.848175,
"y": 1.58539963
},
"Position": {
"x": -259.151825,
"y": -48.4146,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "3379f47863864748ac54c848500abb1b"
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "24be38e8-017a-4601-a700-cf23e89ac1c4",
"path": "/ui/HUDGroup/PlayerInfo/DiaInfoBG/Value",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Value",
"path": "/ui/HUDGroup/PlayerInfo/DiaInfoBG/Value",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "/////",
"revision": 4,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -40.0,
"y": 25.0
},
"OffsetMin": {
"x": -240.0,
"y": -25.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 200.0,
"y": 50.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -140.0,
"y": 0.0
},
"Position": {
"x": -140.0,
"y": -50.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 5,
"Bold": true,
"FontColor": {
"r": 0.1882353,
"g": 0.5058824,
"b": 0.709803939,
"a": 1.0
},
"FontSize": 34,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.4745098,
"g": 0.470588237,
"b": 0.4627451,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 2.0,
"OverrideSorting": false,
"Text": "100",
"UseOutLine": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "9be0bebc-848a-4df1-a836-7a5330232814",
"path": "/ui/HUDGroup/MatchingPanel",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "MatchingPanel",
"path": "/ui/HUDGroup/MatchingPanel",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "///",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 300.0,
"y": -150.0
},
"OffsetMin": {
"x": -300.0,
"y": -300.0
},
"Pivot": {
"x": 0.5,
"y": 1.0
},
"RectSize": {
"x": 600.0,
"y": 150.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -150.0
},
"Position": {
"x": 0.0,
"y": 390.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.0
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "d86f552e-55c7-4eaf-aa76-9e4c0eca917a",
"path": "/ui/HUDGroup/MatchingPanel/MatchingBG",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "MatchingBG",
"path": "/ui/HUDGroup/MatchingPanel/MatchingBG",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 150.0,
"y": 44.0
},
"OffsetMin": {
"x": -150.0,
"y": -44.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 300.0,
"y": 88.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": -75.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "dec9e874622a4b269fab6552a126e0c9"
},
"LocalScale": {
"x": 2.0,
"y": 2.0
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.6
},
"Enable": true
}
],
"@version": 1
}
},
{
"id": "4bf01040-0463-4610-b83b-9a550239ee75",
"path": "/ui/HUDGroup/MatchingPanel/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/HUDGroup/MatchingPanel/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 1,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 1,
"AnchorsMax": {
"x": 0.0,
"y": 0.5
},
"AnchorsMin": {
"x": 0.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 320.0,
"y": 25.0
},
"OffsetMin": {
"x": 60.0,
"y": -25.0
},
"Pivot": {
"x": 0.0,
"y": 0.5
},
"RectSize": {
"x": 260.0,
"y": 50.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 60.0,
"y": 0.0
},
"Position": {
"x": -240.0,
"y": -75.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Bold": true,
"FontColor": {
"r": 0.458823532,
"g": 0.458823532,
"b": 0.458823532,
"a": 1.0
},
"FontSize": 34,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "게임 맵 이름",
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7da83c1a-b787-499a-b1e4-4a23c40fdadf",
"path": "/ui/HUDGroup/MatchingPanel/StartButton",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "StartButton",
"path": "/ui/HUDGroup/MatchingPanel/StartButton",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uibutton",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uibutton",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 2,
"AnchorsMax": {
"x": 1.0,
"y": 0.5
},
"AnchorsMin": {
"x": 1.0,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": -18.3837738,
"y": 52.0001
},
"OffsetMin": {
"x": -268.3838,
"y": -51.9999
},
"Pivot": {
"x": 1.0,
"y": 0.5
},
"RectSize": {
"x": 250.0,
"y": 104.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": -18.3837738,
"y": 9.918213E-05
},
"Position": {
"x": 281.6162,
"y": -74.9999,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "8dd32e31466d4470992943556215a6e4"
},
"LocalScale": {
"x": 0.8,
"y": 0.8
},
"OverrideSorting": false,
"StartFrameIndex": 0,
"Enable": true
},
{
"@type": "MOD.Core.ButtonComponent",
"Colors": {
"NormalColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"HighlightedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"PressedColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 1.0
},
"SelectedColor": {
"r": 0.9607843,
"g": 0.9607843,
"b": 0.9607843,
"a": 1.0
},
"DisabledColor": {
"r": 0.784313738,
"g": 0.784313738,
"b": 0.784313738,
"a": 0.5019608
},
"ColorMultiplier": 1.0,
"FadeDuration": 0.1
},
"ImageRUIDs": {
"HighlightedSprite": null,
"PressedSprite": null,
"SelectedSprite": null,
"DisabledSprite": null
},
"OverrideSorting": false,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2c7f4244-e78c-49f6-aff1-bde759f2cf6b",
"path": "/ui/HUDGroup/MatchingPanel/StartButton/UIText",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "UIText",
"path": "/ui/HUDGroup/MatchingPanel/StartButton/UIText",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "/////",
"revision": 2,
"origin": {
"type": "Model",
"entry_id": "uitext",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uitext",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 100.0,
"y": 30.0
},
"OffsetMin": {
"x": -100.0,
"y": -30.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 200.0,
"y": 60.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": -125.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"OverrideSorting": false,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Bold": true,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 27,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.184313729,
"g": 0.635294139,
"b": 0.75686276,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OutlineWidth": 3.0,
"OverrideSorting": false,
"Text": "시작하기",
"UseOutLine": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "2b71fab8-7cd5-4dd2-b173-f5e7e1c009c6",
"path": "/ui/HUDGroup/MatchingPanel/MatchingPlayers",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "MatchingPlayers",
"path": "/ui/HUDGroup/MatchingPanel/MatchingPlayers",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "////",
"revision": 3,
"origin": {
"type": "Model",
"entry_id": "uisprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 4,
"AnchorsMax": {
"x": 0.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 260.672455,
"y": -5.0
},
"OffsetMin": {
"x": 59.9999771,
"y": -40.0
},
"Pivot": {
"x": 0.0,
"y": 1.0
},
"RectSize": {
"x": 200.67247,
"y": 35.0
},
"UIMode": 1,
"UIVersion": 2,
"anchoredPosition": {
"x": 59.9999771,
"y": -5.0
},
"Position": {
"x": -240.000031,
"y": -5.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"ImageRUID": {
"DataId": "e631ce0541de3ac44a936b608c9c44f2"
},
"OverrideSorting": false,
"Color": {
"r": 0.219607845,
"g": 0.7254902,
"b": 0.854901969,
"a": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 22,
"MaxSize": 40,
"MinSize": 10,
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"OverrideSorting": false,
"Text": "매칭 인원 : 10",
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/style-4-blue/Popupbutton.mlua
@Component
script Popupbutton extends Component
@ExecSpace("ClientOnly")
@EventSender("Entity", "a99c2783-2889-491a-8abc-5b977e8e4f81")
handler HandleButtonClickEvent(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
--BasicPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup/Panel/PopupBtnCancel")
local cancelbutton2=_EntityService:GetEntityByPath("/ui/PopupGroup/BasicPopup/Panel/PopupBtnOK")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
cancelbutton2:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "241ee38a-8a44-4efa-a3e4-a60d121ddea1")
handler HandleButtonClickEvent2(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
--ShopPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/ShopPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/ShopPopup/Panel/CloseButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "57602223-1930-4d68-aee3-d5c849078fd4")
handler HandleButtonClickEvent3(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
--ShopResult
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/ShopResult")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/ShopResult/PopupBtnOK")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "076c41ef-1bdb-4b85-b6e4-0448b3a85970")
handler HandleButtonClickEvent4(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
--AchievementPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/AchievementPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/AchievementPopup/Panel/CloseButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "5fbdaa56-fa92-4945-872e-e4e1450a159d")
handler HandleButtonClickEvent5(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
--DailyRewardPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/DailyRewardPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/DailyRewardPopup/Panel/CloseButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "872aef39-d366-42a2-a12e-610e38734ed4")
handler HandleButtonClickEvent6(ButtonClickEvent event)
-- Parameters
local Entity = event.Entity
--------------------------------------------------------
--InventoryPopup
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/InventoryPopup")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/InventoryPopup/Panel/CloseButton")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "0cfa965e-6ef0-4975-8bb1-157e8524097b")
handler HandleButtonClickEvent7(ButtonClickEvent event)
--------------- Native Event Sender Info ----------------
-- Sender: ButtonComponent
-- Space: Client
---------------------------------------------------------
-- Parameters
local Entity = event.Entity
---------------------------------------------------------
--ResultPanel
local panel=_EntityService:GetEntityByPath("/ui/PopupGroup/ResultPanel")
panel.Enable=true
local cancelbutton=_EntityService:GetEntityByPath("/ui/PopupGroup/ResultPanel/ReturnToLobby")
local cancel=function()
panel.Enable=false
end
cancelbutton:ConnectEvent(ButtonClickEvent,cancel)
end
@ExecSpace("ClientOnly")
@EventSender("Entity", "c760d7e3-b80c-49c3-8b19-3b2fdd703880")
handler HandleButtonClickEvent8(ButtonClickEvent event)
--------------- Native Event Sender Info ----------------
-- Sender: ButtonComponent
-- Space: Client
---------------------------------------------------------
-- Parameters
local Entity = event.Entity
local shopbutton=_EntityService:GetEntityByPath("/ui/ButtonGroup/Btn_Shop")
local shopresult=_EntityService:GetEntityByPath("/ui/ButtonGroup/Btn_ShopResult")
---------------------------------------------------------
if shopbutton.Enable and shopresult.Enable then
Entity:GetChildByName("UISprite").SpriteGUIRendererComponent.FlipX=true
shopbutton.Enable=false
shopresult.Enable=false
else
Entity:GetChildByName("UISprite").SpriteGUIRendererComponent.FlipX=false
shopbutton.Enable=true
shopresult.Enable=true
end
end
endreferences/templates/style-4-blue/ruid-map.md
# Style 4 — RUID Map
Use these `ImageRUID.DataId` values when applying this template's visual style.
## UI Frame / Panel Backgrounds
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `e631ce0541de3ac44a936b608c9c44f2` | Popup dim/backdrop | Bg |
| `46e8524818bb4962b4192a59305ed9df` | Popup main background | Bg |
| `9a43d767d2e8495396eae6fcded4b19d` | Popup background (variant) / reward item BG | Bg, Reward_Item |
| `4451f62837514c69853fe9feea7c34ac` | Panel background (large) | PanelBG |
| `f88f6e69aaab4034a25fd13af54403e1` | Panel background (variant) | PanelBG |
| `24fd83e2b4324378b706c245093f2d4a` | Inner panel | Panel |
| `8d60afa125c14851b1e782d6b4b4ac2b` | Panel / title area | Panel, Title |
| `3460c32c862b465ba482984562a11a1b` | Popup name/header | PopupName |
| `108f74f2769747089e2ceb46199e09b2` | Result panel | ResultPanel |
| `68221c9a70128be45b3e1d383c6fc6d4` | Inventory list area | Inventory_List |
| `be2df1ab4321430da2e24578b402f83a` | Info display panel | Info |
## Buttons
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `32da0f3eea2a442abac8ed97fdeb442b` | Standard button (menu-opener) | Btn_Achievement, Btn_Attendance, Btn_Basic, Btn_GameResult, Btn_Inven, Btn_Shop, Btn_ShopMenu, Btn_ShopResult, Btn_Achievement, Btn_Daily |
| `0a0194a2dc554eaabe47240600e2b109` | Confirm/claim button | PopupBtnOK, ButtonAllReceive, Claim_Button, CodiKingInvenTab |
| `c6d376a4daba46cea8f03166f8637f91` | Cancel/return button | PopupBtnCancel, ReturnToLobby |
| `f3f01d21d6234e41bc6cf8495d28ce7f` | Close button (X) | CloseButton |
| `8dd32e31466d4470992943556215a6e4` | Start/save button (accent) | StartButton, SaveResult |
| `87091fbe60c54ecab1fa9c862f09684f` | Sort button | ButtonSort |
| `8361ce21b66a51a4a8ab1dfccba66614` | Expand button / player info | ButtonExpand, PlayerInfo |
| `6efbbb88fb1b4ea9960c04320dbc211d` | Claim button (variant) | Claim_Button |
## Button & Menu Icons
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `2c8b9717819c42d2afe04fa3b1a0fae1` | Menu icon | ButtonGroup Icon |
| `31442e40631e40a293981d6ac9c2de1e` | Menu icon | ButtonGroup Icon |
| `490decfd1f5c4ec3a0a0118e5e2f6899` | Menu icon | ButtonGroup/PopupGroup Icon |
| `898a6b96567d45f4aceb3131c5969c9b` | Menu icon | ButtonGroup Icon |
| `9fdecd72fae64caebeade325efc678a1` | Menu icon | ButtonGroup/PopupGroup Icon |
| `9ff00165e3e44d9296b0de5e860cfa6c` | Menu icon | ButtonGroup/PopupGroup Icon |
| `2e7233e9487d499ea3846aede8473fee` | Button fold/unfold sprite | UISprite, Selected |
## HUD Elements
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `dec9e874622a4b269fab6552a126e0c9` | EXP/gauge background | Exp, MatchingBG, Sort1, Sort2 |
| `6e6629b7f2bc438cbff8e817504d589c` | EXP fill bar | Exp, PopupGroup Exp |
| `b8d2dcc4c80d4c83a3257ec6b388a5be` | Gauge frame | Gauge |
| `53ac36379071457e8ba0fb532ad0f351` | Zone button (FreeZone) | Btn_FreeZone |
| `d3865a3e0da44a25b01957f59c531837` | Zone button (Hall) | Btn_Hall |
| `3eb9cd4ca7d64ba382c544f1b55cc855` | Zone back button | Btn_FreeZone_Back, Btn_Hall_Back |
| `cd0560c4fc7f3b14994b90a502f00a21` | Action button (attack/jump) | Button_Attack, Button_Jump |
| `e631ce0541de3ac44a936b608c9c44f2` | Matching players display | MatchingPlayers |
## Items & Slots
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `004e5fc9c660a1342a055ae7157e5aeb` | Equipment/inventory slot | All Slot_1~27, Cape, Cap, Coat, EarAcc, Ear, EyeAcc, FaceAcc, Face, Glove, Hair, Pants, Shoes, Skin, Weapon, Slot_Item, Slot |
| `bddc2a8eac874999bf46a931ca457090` | Shop item frame | Item_1, Item_2, Item_3, Item_4 |
| `a0ea29a36ce140049bcc088d25469dc5` | Selection highlight | Select |
## Currency & Rewards
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `5a990aca536417e40bb5e01452fe374e` | Currency/meso icon | Meso_Exp |
| `dae61a53e2bb4037b7fb4b1d72c1e3d5` | Result effect | ResultEffect |
| `6e2353a49573413185b6ce2145c8b61d` | Result item background | ResultItemBG |
| `2e1b38f022ae46c1ae62ab56360085c2` | Reward background | RewardBG |
| `47f4ea87b6354405b4cefe85f83508c5` | Score display | Score |
## Shop & Purchase
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `f723641a53a34a788e77b46762b86ba1` | Normal rarity item display | NormalMany, NormalOne |
| `4eb502b6eb4749aba15a98bca5894435` | Rare rarity item display | RareMany, RareOne |
| `76359b32034643c6b5da0717f9c380bb` | Default state | Default |
| `2dec7e8f456f4d7d8183fa69b23a7a5d` | Type indicator image | Type_Image |
## Progress & Attendance
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `37e99a87c65c4cc3a932fcad527fbd32` | Attendance check box | CheckBG, Date_1~7, Date_*_* |
| `c1fe97cecf624d60a961d0d7eb77fe8f` | Check mark icon | CheckIcon, Icon |
| `d980439ff61044b5ba7379f7c58a440d` | Date header | Date |
| `165cbdf9923440169e71731dc9f4c6b2` | Progress gauge | Progress_Gauge |
| `b1b803aab1b74de98d9271e0f1aa6342` | Progress UI frame | Progress_Ui |
| `dd52e4cb2cf642bdaf73fa5b57b1f619` | Decoration dot/particle | Deco_Dpt, Deco_Dpt_1~5 |
| `3c0deeb9417649679df6b00ab63c9f31` | Decoration particle | DecoParticle1~3 |
| `67a3b29cdb9b4261b9225507863f04c3` | Decoration | Deco |
## Player & Profile
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `8a07e5eb41b74bc9825054e9f308b7f3` | Player background | PlayerBG |
| `42e5e834544e4b05b11160213f712635` | Tab icon | TabIcon, Icon |
## Popup-specific Icons
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `010e525869c443b6b0e48e134d35d107` | Category icon | Icon |
| `02331b16768f42c8904981eeaf0411a6` | Category icon | Icon |
| `02c060f966f84cef962fc7252c2bce06` | Category icon | Icon |
| `0d9f55ab18c04e418faba12771bb9c49` | Category icon | Icon |
| `14d135968aa141e8ab5086a2b2a56819` | Category icon | Icon |
| `19409cb86e9a4c709db38ca6c286e9c0` | Category icon | Icon |
| `1c9eba05b6c142e789f5a197c472c066` | Category icon | Icon |
| `1d74d38d49ac41c5a14009e6f6414772` | Category icon | Icon |
| `2ceb2ac2b3c64ab4b459241ccb468d3d` | Category icon | Icon |
| `2eae82f0c21c43088ae83c7bdc72abaf` | Category icon | Icon |
| `3379f47863864748ac54c848500abb1b` | Category icon | Icon |
| `3ceaa3af732e4956b623b5f470f628c5` | Category icon | Icon |
| `b41b2a76b9cf4074baa4c727ca5e1ac9` | Category icon | Icon |
| `bf0898d989784e259059a112876e6bfe` | Category icon | Icon |
| `c4760132e8684aa8b85bc24928fad4f0` | Category icon | Icon |
| `c9a065e195784b9dacc41465a8192df2` | Category icon | Icon |
| `ccb67addbf654a8f8eb2ee79226fe710` | Category icon | Icon |
| `d2ec0cf2d65144688729a905e6b2e2f4` | Category icon | Icon |
| `d56c963d3f964e5fa71753c0976795d2` | Category icon | Icon |
| `e0153c2b1ac5418381dc35f95653e3d4` | Category icon | Icon |
| `f0c990b0fd7649cc937d608a74d0a322` | Category icon | Icon |
| `f9f7e2d4a75a494c9c9227057abf6eb9` | Category icon | Icon |
## Common (shared with other styles)
| RUID | Used As | Entity Examples |
|------|---------|-----------------|
| `7d614552ba7843049bb48ebd4509fb8f` | Toast message background | Toast_message |
| `b44742a7c3de2604ba4999a54ae0b4ed` | UI base sprite | UISprite |
| `cc55ed79f099cc94fae152e754984ddd` | UI base sprite | UISprite |
references/templates/style-4-blue/structure.md
# Style 4 (Blue) — UI Structure
Format: `Name | Alignment | (x, y) | WxH | [Components] | (state)`
```
============================================================
ButtonGroup.ui (26 entities)
============================================================
ButtonGroup | GroupOrder=3 | StretchAll | 1952x1080 | [UIGroupComponent]
Btn_Achievement | TopRight | (-30, -583) | 140x140 | [Button]
Icon | Center | (0, 2) | 64x72
Title | BottomCenter | (0, 10) | 170x43 | [TextComponent] | "Achievement"
Btn_Attendance | TopRight | (-30, -432) | 140x140 | [Button]
Icon | Center | (0, 5) | 64x68
Title | BottomCenter | (0, 10) | 170x43 | [TextComponent] | "Attendance"
Btn_Basic | TopRight | (-30, -130) | 140x140 | [Button]
Icon | Center | (0, 3) | 80x80
Title | BottomCenter | (0, 10) | 170x43 | [TextComponent] | "Basic Popup 1"
Btn_GameResult | TopRight | (-30, -885) | 140x140 | [Button]
Icon | Center | (0, 2) | 48x72
Title | BottomCenter | (0, 10) | 170x43 | [TextComponent] | "Game Ranking"
Btn_Inven | TopRight | (-30, -734) | 140x140 | [Button]
Icon | Center | (0, 5) | 72x64
Title | BottomCenter | (0, 10) | 170x43 | [TextComponent] | "Inventory"
Btn_Shop | TopRight | (-330, -287) | 130x130 | [Button]
Icon | Center | (0, 5) | 80x76
Title | BottomCenter | (0, 10) | 170x43 | [TextComponent] | "Gacha Shop"
Btn_ShopMenu | TopRight | (-30, -281) | 140x140 | [Button]
Icon | Center | (0, 5) | 80x76
Title | BottomCenter | (0, 10) | 170x43 | [TextComponent] | "Shop"
UISprite | Left | (10, 0) | 68x68
Btn_ShopResult | TopRight | (-190, -287) | 130x130 | [Button]
Icon | Center | (0, 5) | 80x76
Title | BottomCenter | (0, 10) | 170x43 | [TextComponent] | "Gacha Result"
============================================================
DefaultGroup.ui (7 entities)
============================================================
DefaultGroup | GroupOrder=1 | hidden | StretchAll | 1920x1080 | [UIGroupComponent]
Button_Attack | BottomRight | (-175, 332) | 204x204 | [Button]
UISprite | Center | (-2, -1) | 108x109
Button_Jump | BottomRight | (-392, 194) | 204x204 | [Button]
UISprite | Center | (-5, 1) | 153x134
UIChat | TopLeft | (369, -252) | 698x439 | [ChatComponent]
UIJoystick | BottomLeft | (310, 230) | 200x200 | [JoystickComponent]
============================================================
HUDGroup.ui (33 entities)
============================================================
HUDGroup | GroupOrder=0 | StretchAll | 1920x1080 | [UIGroupComponent]
ButtonGroup | TopLeft | 400x200
Btn_FreeZone | TopLeft | (197, -10) | 140x140
Btn_Hall | TopLeft | (30, -10) | 140x140
MatchingPanel | TopCenter | (0, -150) | 600x150
MatchingBG | Center | 300x88
MatchingPlayers | TopLeft | (60, -5) | 201x35 | [TextComponent] | "Matching Players: 10"
StartButton | Right | (-18, 0) | 250x104 | [Button]
UIText | Left | (60, 0) | 260x50 | [TextComponent] | "Game Map Name"
PlayerInfo | TopCenter | (0, -25) | 900x100
DiaInfoBG | TopRight | 300x100
LevelInfoBG | TopLeft | 350x100
MesoInfoBG | TopCenter | (20, 0) | 300x100
============================================================
PopupGroup.ui (644 entities)
============================================================
PopupGroup | GroupOrder=4 | StretchAll | 1920x1080 | [UIGroupComponent]
AchievementPopup | StretchAll | 2520x1680 | (disabled)
Panel | Center | (0, -30) | 1400x900
BasicPopup | StretchAll | 2520x1680 | (disabled)
Panel | Center | 850x540
DailyRewardPopup | StretchAll | 2520x1680 | (disabled)
Panel | Center | (0, -50) | 1500x900
InventoryPopup | StretchAll | 2520x1680 | (disabled)
Panel | Center | (0, -20) | 1550x881
ResultPanel | Right | (-20, -35) | 725x900 | (disabled)
Bg | BottomCenter | (0, 9) | 706x196
MyInfo | TopCenter | (0, -780) | 676x130
Ranking | TopCenter | (0, -364) | 675x679 | [ScrollLayout]
ReturnToLobby | BottomCenter | (-155, 10) | 300x104 | [Button, TextComponent] | "Return to Lobby"
SaveResult | BottomCenter | (155, 10) | 300x104 | [Button, TextComponent] | "Save Result"
ShopPopup | StretchAll | 2520x1680 | (disabled)
Panel | Center | (0, -50) | 900x850
ShopResult | StretchAll | 2520x1680 | (disabled)
Deco | Center | (0, 220) | 750x750 | [TweenCircularComponent]
DecoDpt | Center | (0, 6) | 100x100
PopupBtnOK | Center | (0, -280) | 300x104 | [Button, TextComponent] | "OK"
PopupName | Center | (0, 200) | 916x176
ResultEffect | Center | (0, -300) | 800x760 | (disabled)
ResultItemBG | HStretchCenter | (0, -47) | 1680x460
============================================================
ToastGroup.ui (2 entities)
============================================================
ToastGroup | GroupOrder=2 | hidden | StretchAll | 1920x1080 | [UIGroupComponent]
Toast_message | TopCenter | (0, -64) | 210x79 | [TextComponent] | "message"
```
references/templates/style-4-blue/ToastGroup.ui
{
"Id": "",
"GameId": "",
"EntryKey": "ui://0bc398f9-29cb-4d89-a78d-f24742b117e8",
"ContentType": "x-mod/ui",
"Content": "",
"Usage": 0,
"UsePublish": 1,
"UseService": 0,
"CoreVersion": "26.7.0.0",
"StudioVersion": "0.1.0.0",
"DynamicLoading": 0,
"ContentProto": {
"Use": "Binary",
"Entities": [
{
"id": "0bc398f9-29cb-4d89-a78d-f24742b117e8",
"path": "/ui/ToastGroup",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "ToastGroup",
"path": "/ui/ToastGroup",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 2,
"pathConstraints": "//",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "uigroup",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uigroup",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 15,
"AnchorsMax": {
"x": 1.0,
"y": 1.0
},
"AnchorsMin": {
"x": 0.0,
"y": 0.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 0.0,
"y": 0.0
},
"OffsetMin": {
"x": 0.0,
"y": 0.0
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 1920.0,
"y": 1080.0
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": 0.0
},
"Position": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.UIGroupComponent",
"DefaultShow": false,
"GroupOrder": 2,
"GroupType": 1,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "7af9e538-1713-49f7-a83e-711c0f4b4a3c",
"path": "/ui/ToastGroup/Toast_message",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent,MOD.Core.CanvasGroupComponent",
"jsonString": {
"name": "Toast_message",
"path": "/ui/ToastGroup/Toast_message",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 0,
"pathConstraints": "///",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "UISprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"AlignmentOption": 3,
"AnchorsMax": {
"x": 0.5,
"y": 1.0
},
"AnchorsMin": {
"x": 0.5,
"y": 1.0
},
"MobileOnly": false,
"OffsetMax": {
"x": 105.221237,
"y": -24.353981
},
"OffsetMin": {
"x": -105.221237,
"y": -103.646019
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 210.442474,
"y": 79.29204
},
"UIMode": 1,
"UIScale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0.0,
"y": -64.0
},
"Position": {
"x": 0.0,
"y": 476.0,
"z": 0.0
},
"QuaternionRotation": {
"x": 0.0,
"y": 0.0,
"z": 0.0,
"w": 1.0
},
"Scale": {
"x": 1.0,
"y": 1.0,
"z": 1.0
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": "7d614552ba7843049bb48ebd4509fb8f"
},
"LocalPosition": {
"x": 0.0,
"y": 0.0
},
"LocalScale": {
"x": 1.0,
"y": 1.0
},
"OverrideSorting": false,
"PlayRate": 1.0,
"StartFrameIndex": 0,
"Color": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 0.6
},
"DropShadow": false,
"DropShadowAngle": 120.0,
"DropShadowColor": {
"r": 0.0,
"g": 0.0,
"b": 0.0,
"a": 0.72
},
"DropShadowDistance": 3.0,
"FillAmount": 1.0,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"OutlineWidth": 3.0,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
{
"@type": "MOD.Core.TextComponent",
"Alignment": 4,
"Font": 0,
"FontColor": {
"r": 1.0,
"g": 1.0,
"b": 1.0,
"a": 1.0
},
"FontSize": 27,
"MaxSize": 40,
"MinSize": 10,
"OutlineColor": {
"r": 0.7,
"g": 0.7,
"b": 0.7,
"a": 1.0
},
"OutlineDistance": {
"x": 1.0,
"y": -1.0
},
"Overflow": 0,
"OverrideSorting": false,
"Padding": {
"left": 50,
"right": 50,
"top": 20,
"bottom": 20
},
"SizeFit": true,
"Text": "message",
"UseOutLine": false,
"Enable": true
},
{
"@type": "MOD.Core.CanvasGroupComponent",
"BlocksRaycasts": true,
"GroupAlpha": 1.0,
"Interactable": true,
"Enable": true
}
],
"@version": 1
}
}
]
}
}references/templates/templates.md
# MSW UI Style Templates
> **Entry point**: This document is reached from [`../../SKILL.md`](../../SKILL.md). Read `msw-ui-system` first for routing, components, anchors, lifecycle, and builder protocol — then return here when you need style-coherent template bundles.
Style-specific template files for building game UI. **Each style is a coherent bundle**: `.ui` structure templates + matching RUIDs (each style's `ruid-map.md`, e.g. [`style-1-black/ruid-map.md`](style-1-black/ruid-map.md)) + button handler patterns (`Popupbutton.mlua`). Pick a style first, then use its files together for visual consistency.
## Style Selection Guide
Pick based on **UI complexity and interaction pattern**, not game genre.
| Folder | Visual Theme | Pattern | Best For | Key Features |
|--------|--------------|---------|----------|--------------|
| `style-1-black/` | Black | Simple Popups | Games with a few feature popups | Multiple popups, simple open/close buttons |
| `style-2-diary/` | Diary | Minimal HUD | Lightweight or single-screen games | Minimal UI, result screen, drag-drop delete |
| `style-3-wood/` | Wood | Multi-Tab | Games with many menus/features | Menu toggle, tab switching, many popup types |
| `style-4-blue/` | Blue | Transaction Flow | Games with purchase/reward flows | Purchase confirmation, button fold/unfold, result panels |
## File Structure Per Style
| File | style-1 | style-2 | style-3 | style-4 | Role |
|------|:-------:|:-------:|:-------:|:-------:|------|
| `ruid-map.md` | O | O | O | O | RUID lookup by UI role (e.g. [`style-1-black/ruid-map.md`](style-1-black/ruid-map.md)) |
| `structure.md` | O | O | O | O | Entity hierarchy, layout, sizes (compact) (e.g. [`style-1-black/structure.md`](style-1-black/structure.md)) |
| `HUDGroup.ui` | O | O | O | O | Always-visible HUD |
| `DefaultGroup.ui` | O | N/A | O | O | Joystick, Chat |
| `ToastGroup.ui` | O | O | O | O | Toast notifications |
| `ButtonGroup.ui` | O | `Popupbutton.ui` | O | O | Buttons that open popups |
| `PopupGroup.ui` | O | O | O | O | Popup panel collection |
| `Popupbutton.mlua` | O | O | O | O | Button→Popup handler script |
| `TrashBin.ui` | N/A | O | N/A | N/A | Item delete UI |
## Button Handler Patterns
| Pattern | Behavior | Used In |
|---------|----------|---------|
| A: Open/Close | Button opens popup, close button closes it | All styles |
| B: Toggle | Same button opens and closes | Style 3 |
| C: Group Control | Show/hide multiple buttons at once + flip image | Style 4 |
See the `Popupbutton.mlua` in the corresponding style folder for implementation details.
## Common UI Rules
- Base resolution: 1920 x 1080
- .ui file format: JSON (`ContentType: "x-mod/ui"`)
- .mlua scripts: `@Component` + `ButtonClickEvent` handlers
- Popup panels start with `enable: false` → set `Enable = true` on button click
- Entity access: `_EntityService:GetEntityByPath(path)`
- Higher GroupOrder renders on top
## RUID Handling
Template `.ui` files contain `ImageRUID.DataId` values that define the visual style — button sprites, panel backgrounds, icons, etc. These are **platform-shared resources** and can be used directly in any project.
### Infrastructure vs. Style files
Not all `.ui` files in a project define its visual style:
| File | Role | Style-defining? |
|------|------|:---:|
| `DefaultGroup.ui` | Joystick, chat — functional scaffolding | No |
| `ToastGroup.ui` | Toast notification container | No |
| `HUDGroup.ui` | Game HUD (HP, score, minimap, etc.) | **Yes** |
| `ButtonGroup.ui` | Buttons that open popups | **Yes** |
| `PopupGroup.ui` | Popup panels, modals | **Yes** |
**When deciding whether to use template RUIDs:**
- If the project only has `DefaultGroup.ui` + `ToastGroup.ui` → these are infrastructure, not a style. **Use template RUIDs as-is.**
- If the project has custom `HUDGroup`/`ButtonGroup`/`PopupGroup` with intentional visuals → match that existing custom style. Use templates for structure and patterns only.
- `DataId: ""` in templates means intentionally blank — fill via `msw-search` only if the element should be visible.
**RUID source priority (when using a template style):**
1. **The style's `ruid-map.md`** (e.g. [`style-1-black/ruid-map.md`](style-1-black/ruid-map.md)) — first choice. Look up the role (panel background, button, close icon, etc.) and use the listed DataId directly.
2. **`msw-search`** — only when the style's `ruid-map.md` has no suitable RUID for the needed role (e.g. game-specific sprites like a custom character icon).
## Searching Template Files
The `.ui` files are large JSON. Use the helper scripts in `scripts/` or `rg` to find specific entities without reading the full file.
### Helper Scripts
Located in `./scripts/`:
**`ui-structure.cjs`** — Entity hierarchy viewer
```bash
# Show all .ui files in a style (top-level only)
node scripts/ui-structure.cjs --style 1 --depth 0
# Show specific file with full hierarchy
node scripts/ui-structure.cjs --style 1 --file PopupGroup.ui
# Limit hierarchy depth
node scripts/ui-structure.cjs --style 1 --file PopupGroup.ui --depth 2
# Dump full JSON for an entity by exact name
node scripts/ui-structure.cjs --style 1 --entity BasicPopup
# Search entity name across all files (substring match)
node scripts/ui-structure.cjs --style 1 --grep ExitButton
```
**`ruid-lookup.cjs`** — RUID lookup by style and role
```bash
# List available styles
node scripts/ruid-lookup.cjs
# Dump all RUIDs for a style
node scripts/ruid-lookup.cjs --style 1
# Filter by role keyword (button, panel, slot, icon, gauge, etc.)
node scripts/ruid-lookup.cjs --style 1 --role button
```
### ripgrep patterns
For quick one-off searches (from workspace root):
```bash
# Entity by name — use -A 50 to capture full layout + components + RUID
rg '"name": "ExitButton"' -A 50 ./style-1-black/PopupGroup.ui
# Find where a specific RUID is used
rg '6efba31a09bb434f833edaceac5fd12a' ./style-1-black/
# Disabled entities (hidden popups) — -B 3 shows entity name above
rg '"enable": false' -B 3 ./style-1-black/PopupGroup.ui
```
**Entity JSON field order** (what you'll see in `-A 50` output):
```
"name" → "path" → "enable" → "displayOrder" → "origin" → "modelId" → "@components": [
{ "@type": "UITransformComponent", "AlignmentOption", "anchoredPosition", "RectSize", ... },
{ "@type": "SpriteGUIRendererComponent", "ImageRUID": { "DataId": "..." }, ... },
{ "@type": "ButtonComponent", ... }
]
```
## Workflow
The end-to-end UI authoring workflow (anchors, 4-value formula, `refresh_workspace` cycle, lifecycle) lives in [`../../SKILL.md`](../../SKILL.md) and [`../../../msw-general/references/builder-protocol-ui.md`](../../../msw-general/references/builder-protocol-ui.md) §3 (unified call entry point). The template-specific decision steps below feed into that workflow.
### Style-Source Decision (planning-time, BEFORE writing any `.ui`)
| Situation | Action |
|---|---|
| User specified a visual style (color, mood, reference image, "like X") | Follow user's intent for visuals. Use templates for **structure/patterns only**; pick RUIDs per user's intent (may need `msw-search`). |
| Project already has custom UI (`HUDGroup`/`ButtonGroup`/`PopupGroup` with intentional visuals) | Match existing style — keep naming, path, and RUID conventions consistent across new files. |
| Fresh project (only `DefaultGroup.ui` / `ToastGroup.ui`, or no UI yet) AND user gave no visual guidance | **Pick one of the 4 template styles** and use its full bundle (`.ui` + `ruid-map` + `Popupbutton.mlua`). Default behavior — do **not** ask the user "which style?"; pick one and tell them. |
**Rule of thumb**: when style source is unclear, pick a template style and proceed. The user can redirect.
### Reading Template Files
1. **Mention chosen style** — briefly tell the user which style is being used (e.g. "Using `style-3-wood` as reference"). Switch immediately if user prefers a different style.
2. **Read the style's `ruid-map.md` + `structure.md`** (e.g. [`style-1-black/ruid-map.md`](style-1-black/ruid-map.md) + [`style-1-black/structure.md`](style-1-black/structure.md)) — these two files give you everything needed without reading full `.ui` files:
- `ruid-map.md` — which RUID to use for each UI role (buttons, panels, icons, etc.)
- `structure.md` — entity hierarchy, alignment, position, size, components
3. **Read `.mlua` handler** — `Popupbutton.mlua` for button handler patterns.
4. **Read `.ui` files only as needed** — only when you need exact JSON to copy/paste.
5. **Apply template RUIDs** — keep visual consistency.
6. **Avoid conflicts** — do not duplicate existing Entity UUIDs, `displayOrder`, or `GroupOrder` values.
references/ui-fundamentals.md
# UI Fundamentals — Mental Model
MSW UI uses **the same coordinate model as Unity RectTransform**. If you have Unity experience, almost everything carries over directly. The root cause of AI placing UI elements incorrectly is almost always a fuzzy understanding of the relationship between these 3 things: anchor / pivot / anchoredPosition.
---
## 1. Coordinate System
```
(0, +540)
▲ +Y
│
(-960, 0) ◄──────┼──────► (+960, 0)
│ +X
▼
(0, -540)
```
- Reference resolution: **1920 × 1080** (fixed). Regardless of the actual device resolution (1440×2960, 800×600, etc.), the canvas is calculated as 1920×1080
- Origin: exact center of the screen `(0, 0)`
- X: `[-960, +960]` — right is +, left is -
- Y: `[-540, +540]` — **up is +, down is -** (Unity convention. Opposite of screen coordinates where top is 0)
- Unit: **pixels** (different from world map units)
- When the device aspect ratio differs, the engine handles scaling and letterboxing → always design in 1920×1080 coordinates
### Layout Design Implications
- **Anchors must be used correctly.** Using center anchor + absolute coordinates will break on wide or tall screens
- **Screen edge elements must use the corresponding corner/edge anchor** — edges stay in place even when resolution changes
- **Center content uses middle-center** — stays centered even with letterboxing
---
## 2. Three RectTransform Elements
The position and size of every UI entity is determined by a combination of these 3 fields.
```
AnchorsMin / AnchorsMax ─── "reference line" position within the parent Rect (normalized 0~1)
Pivot ─── rotation/scale reference point of own Rect (normalized 0~1)
anchoredPosition ─── offset from anchor → pivot direction (pixels)
OffsetMin / OffsetMax ─── margins in stretch mode (pixels)
```
### 2-1. anchor — "Where on my parent do I attach?"
- `(0, 0)` = parent's **bottom-left**
- `(1, 1)` = parent's **top-right**
- `(0.5, 0.5)` = parent's **center**
- If Min and Max are the **same point** → **fixed anchor** (size is preserved even when parent resizes)
- If Min and Max are **different points** → **stretch anchor** (stretches proportionally with parent size)
### 2-2. pivot — "Which point of my box do I use as the reference?"
The reference point for rotation, scale, and `anchoredPosition`.
```
Pivot (0.5, 0.5) — center reference Pivot (0, 0) — bottom-left reference
┌────────┐ ┌────────┐
│ │ │ │
│ ● │ │ │
│ │ │ │
└────────┘ ●────────┘
```
**The MSW builder default is `(0.5, 0.5)`**. Do not change it without a specific reason. If you change the pivot, the entity will render at a different position even with the same `anchoredPosition`.
### 2-3. anchoredPosition — "How far is my pivot from the anchor?"
```
Parent Rect
┌──────────────────────────────┐
│ │
│ ● anchor (0.5, 0.5) │
│ ╲ │
│ ╲ anchoredPosition │
│ ╲ (+200, +100) │
│ ┌──────┐ │
│ │ │ │
│ │ ● │ pivot │
│ │ │ │
│ └──────┘ │
│ │
└──────────────────────────────┘
```
If the anchor is at the parent's center and `anchoredPosition = (200, 100)`, then my pivot is 200 to the right and 100 up from the parent's center.
---
## 3. Two Modes — Must Distinguish
### Mode A: Fixed Anchor (AnchorsMin == AnchorsMax)
When you determine the size yourself. HUD elements, buttons, and most UI fall into this category.
- **Size**: determined by `RectSize` field (pixels)
- **Position**: offset from anchor via `anchoredPosition`
- `OffsetMin/Max` is not used (the builder calculates automatically)
```
AnchorsMin = AnchorsMax = (0, 1) ← parent top-left anchor
RectSize = (500, 160)
Pivot = (0.5, 0.5)
anchoredPosition = (260, -90)
→ a 500×160 box with margin 10 from the top-left (formula: pos = ±(margin + size/2))
```
### Mode B: Stretch Anchor (AnchorsMin ≠ AnchorsMax)
When stretching proportionally with parent size. Fullscreen backgrounds, top bars, side panels, etc.
- **Size**: adjust margins from the anchor range via `OffsetMin/OffsetMax`
- `RectSize`, `anchoredPosition` are meaningless (the engine fills in calculated values)
```
AnchorsMin = (0, 0), AnchorsMax = (1, 1) ← full stretch
OffsetMin = (20, 20), OffsetMax = (-20, -20)
→ fullscreen panel with 20px margin on all sides inside the parent
```
### Never Mix Modes
- Using `OffsetMin/Max` arbitrarily on a fixed anchor → breaks pivot position calculation
- Using `anchoredPosition` on stretch → no effect or engine overwrites it
- The builder receives the mode as an anchor preset string (`top-left`, `stretch-top`, etc.) and routes automatically. **Do not manually edit OffsetMin/Max.**
---
## 4. Edge Placement Formula
When placing with a fixed anchor at the edge of the screen with a given margin:
```
pos = ±(margin + size/2)
```
Since the pivot is `(0.5, 0.5)`, `anchoredPosition` is the offset of the box's **center**. If you only add the margin, half the box will be clipped.
### 4-Corner & 4-Edge Formula (for pivot 0.5, 0.5)
| Anchor | anchoredPosition for margin 10, size 500×160 |
|------|------------------------------------------------|
| `top-left` | `(+260, -90)` |
| `top-right` | `(-260, -90)` |
| `top-center` | `(0, -90)` |
| `bottom-left` | `(+260, +90)` |
| `bottom-right` | `(-260, +90)` |
| `bottom-center` | `(0, +90)` |
| `middle-left` | `(+260, 0)` |
| `middle-right` | `(-260, 0)` |
| `middle-center` | `(0, 0)` |
Sign convention: determined by **which side/corner of the parent** the anchor is on.
- `top-*` → y is negative (must go downward to stay on screen)
- `bottom-*` → y is positive
- `*-left` → x is positive (move to the right)
- `*-right` → x is negative
---
## 5. Parent-Child Coordinate Inheritance
In nested panels, the child's `anchoredPosition` is relative to the **parent Rect**, not the entire screen.
```
UIGroup (1920×1080, full)
└── Panel (anchoredPosition=(0, 0), RectSize=(600, 400), centered)
└── BtnOk (anchoredPosition=(0, -120), RectSize=(200, 60))
↑ This BtnOk is 120px below the Panel's center (= 120px below the screen center)
```
If you move the Panel, the child Button moves with it. For child placement, just think: **"Where inside my parent Rect?"**
---
## 6. AlignmentOption ↔ Anchor Mapping
`UITransformComponent.AlignmentOption` is the anchor preset number. Builder string ↔ engine value mapping:
| Builder String | AlignmentOption | AnchorsMin | AnchorsMax |
|-------------|-----------------|------------|------------|
| `middle-center` (default) | 0 Center | (0.5, 0.5) | (0.5, 0.5) |
| `middle-left` | 1 Left | (0, 0.5) | (0, 0.5) |
| `middle-right` | 2 Right | (1, 0.5) | (1, 0.5) |
| `top-center` | 3 TopCenter | (0.5, 1) | (0.5, 1) |
| `top-left` | 4 TopLeft | (0, 1) | (0, 1) |
| `top-right` | 5 TopRight | (1, 1) | (1, 1) |
| `bottom-center` | 6 BottomCenter | (0.5, 0) | (0.5, 0) |
| `bottom-left` | 7 BottomLeft | (0, 0) | (0, 0) |
| `bottom-right` | 8 BottomRight | (1, 0) | (1, 0) |
| `stretch-top` | 9 HorizontalTop | (0, 1) | (1, 1) |
| `stretch-middle` | 10 HorizontalCenter | (0, 0.5) | (1, 0.5) |
| `stretch-bottom` | 11 HorizontalBottom | (0, 0) | (1, 0) |
| `stretch-left` | 12 VerticalLeft | (0, 0) | (0, 1) |
| `stretch-center` | 13 VerticalCenter | (0.5, 0) | (0.5, 1) |
| `stretch-right` | 14 VerticalRight | (1, 0) | (1, 1) |
| `stretch` | 15 StretchAll | (0, 0) | (1, 1) |
The builder handles this mapping automatically. Only refer to this when manually editing JSON.
> ⚠️ **`AlignmentOption` overrides `AnchorsMin/Max` on load.** When a UI entity is deserialized, the engine recomputes `AnchorsMin/Max` from `AlignmentOption` (by design — `AlignmentOption` is the source of truth). Writing `AnchorsMin/Max` in `.ui` JSON or via patches without a matching `AlignmentOption` is silently undone on the next load / `refresh`. Symptom: anchors revert to the preset that matches the current `AlignmentOption`. Fix: change `AlignmentOption` to the preset whose anchors you want, or set the anchors at runtime *after* `OnBeginPlay` (note: runtime anchor writes are also overwritten the next time the entity is reloaded).
---
## 7. UIMode — Screen vs World
`UITransformComponent.UIMode` field.
| Value | Name | Usage |
|---|------|------|
| 1 | **Screen** | HUD, menus, popups. Fixed to the screen. **Default** |
| 2 | **World** | Nametags above characters, UI in 3D space. Placed using world coordinates |
Decision criteria: "**If the camera moves, should this UI move with it?**"
- Moves with it (fixed in world) → World
- Doesn't move (fixed on screen) → Screen
In World mode, the meaning of RectTransform coordinates changes. Unless it's a special case like character nametags, damage skins, or NPC speech bubbles, keep it on Screen.
---
## 8. Common Pitfalls (anchor/pivot related only)
> The full failure pattern catalog is outside the scope of this skill. Here we only briefly cover **those directly caused by mental model confusion**.
- **Touching the Position field**: `Position` is managed by the engine. Only modify `anchoredPosition`.
- **Trying to control stretch size with RectSize**: In stretch mode, only `OffsetMin/Max` is effective.
- **Changing an entity's mode midway**: Switching an existing anchor to stretch changes the coordinate system and causes a jump to a completely different position. Regenerating via the builder is safer.
- **Calculating child coordinates as screen absolute values when the parent is stretch**: Children are always relative to the parent Rect.
---
## 9. Resolution & Platform Handling
MSW runs on both PC and mobile. Rules for designing a single `.ui` that displays correctly on both platforms.
### 9.1 Platform Separation — ActivePlatform
Per-entity platform control via the `UITransformComponent.ActivePlatform` field.
```lua
property PlatformType ActivePlatform = PlatformType.All
```
| Value | Name | Displayed On |
|---|------|-------------|
| 1 | `PlatformType.PC` | PC only |
| 2 | `PlatformType.Mobile` | Mobile only |
| 255 | `PlatformType.All` | **Default**, both |
**Typical use cases**:
- **Mobile-only joystick** → `PlatformType.Mobile`
- **PC-only shortcut hint** ("Press R to reload") → `PlatformType.PC`
- **Shared HUD** → `PlatformType.All`
**How to set** — patch after creating an entity in the builder:
```javascript
b.patchComponent("Joystick", "MOD.Core.UITransformComponent", {
ActivePlatform: 2, // Mobile only
});
```
mlua runtime change:
```lua
self.joystick.UITransformComponent.ActivePlatform = PlatformType.Mobile
```
### 9.2 Safe Area
Handling mobile notches, punch-holes, and home indicators. MSW does not have a dedicated component — instead it uses the **convention of inserting a Safe Area entity into the hierarchy**.
**Structure**:
```
UIGroup Root (stretch, 1920×1080)
└── SafeArea entity (stretch, OffsetMin/Max dynamically adjusted)
└── Actual HUD elements
├── TopBar (relative to top-* anchor)
├── BottomBar (relative to bottom-* anchor)
└── ...
```
- The SafeArea entity uses a `stretch` anchor in `UITransformComponent`
- At runtime, it receives the device safe area values and adjusts `OffsetMin/OffsetMax` (e.g., excluding the iPhone notch area)
- HUD elements must be placed as **children of** SafeArea to automatically stay within the safe area
**Rules**:
- **For mobile-targeting projects, place a SafeArea layer under the HUD root**
- Place outside SafeArea: fullscreen Dimmer (black overlay), background images
- Whether popups go inside or outside SafeArea is a design decision (usually inside)
**Builder example**:
```javascript
const b = new UIBuilder("DefaultGroup", 1, true);
// SafeArea layer
b.panel("SafeArea", { anchor: "stretch" });
// HUD as children of SafeArea
b.panel("SafeArea/HPBar", {
anchor: "bottom-left",
pos: [120, 50],
rect_size: [220, 30],
});
b.write("ui/DefaultGroup.ui");
```
Adjusting SafeArea `OffsetMin/Max` to device-specific values at runtime requires project scripts (querying device safe area uses engine/OS APIs).
### 9.3 Reserved Zones — MSW Default UI Occupied Areas (PC/Desktop)
The desktop client permanently displays **system UI drawn directly by the engine** in the top two corners of the screen. Your `.ui` must be **designed not to overlap** with them.
**Position and size (based on 1920×1080, conservative estimates)**:
| Position | Content | Recommended Avoidance Area (W × H) | Anchor-relative Coordinates |
|------|------|----------------------|---------------|
| **Top-left** | Chat button (≈120×120) + entry toast ("Welcome to ...") | **≈ 260 × 170 px** | Inward from top-left corner |
| **Top-right** | Friends button + menu (…) button — each ≈90×90, side by side | **≈ 220 × 130 px** | Inward from top-right corner |
The toast only appears briefly upon entry, but is included in the avoidance area as a safety margin.
**Recommended placement principles (PC/Desktop)**:
- **Place top-left / top-right corner-anchored elements outside the reserved zone**:
- top-left anchor → content starts from `(x ≥ 260, y ≤ -170)` (assuming pivot 0.5: `anchoredPosition = (260 + w/2, -170 - h/2)`)
- top-right anchor → content starts from `(x ≤ -220, y ≤ -130)`
- **top-center anchor** is safe — system UI only exists at left/right corners (the x=-130~+110 range is empty)
- To use **stretch-top** as a full-width bar (e.g., header), apply left/right padding: `OffsetMin.x = +260`, `OffsetMax.x = -220`
- Push important persistent HUD elements (health, currency, minimap, etc.) to **bottom corners or vertical center of left/right edges**
**How to disable system UI** — **you can't.** There is no public API available in user world scripts to globally hide or disable the platform system UI. `ScreenshotService`'s `includeUI` and `ScreenRecordService`'s `excludeSystemUI` are options that only apply to capture/recording results.
Workarounds:
1. **Avoidance by design is the default.** Place elements outside the reserved zones listed above
2. **Modal popup**: Covering system UI with a fullscreen dimmer + popup is possible (visual occlusion). However, system UI **clicks may still be active** — verify that the game design allows this
3. **Mobile-only layout**: Branching with `ActivePlatform = Mobile` allows designing independently from desktop since the system UI layout differs on mobile
**Builder example**:
```javascript
// top-right menu (avoiding system UI)
b.button("SettingsBtn", "Settings", {
anchor: "top-right",
pos: [-270, -50],
rect_size: [100, 100],
});
// stretch-top header bar (reserved left/right padding)
b.panel("TopHeader", { anchor: "stretch-top", rect_size: [1920, 80] });
b.patchComponent("TopHeader", "MOD.Core.UITransformComponent", {
OffsetMin: { x: 260, y: -80 },
OffsetMax: { x: -220, y: 0 },
});
```
> Lint rule `L012` (in `scripts/ui_lint.cjs`) warns when an entity overlaps these reserved zones. See this subsection for remediation.
### 9.4 Minimum Touch Target Size
Mobile touch guidelines:
| Standard | Minimum Size | Recommended |
|------|---------|------|
| Apple HIG | 44×44 pt (≈88×88 px) | 44pt |
| Google Material | 48×48 dp | 48dp |
| **MSW Project Standard** | **88×88 px** | 100×100 or larger |
**Application**:
- Button `RectSize` ≥ 88×88 (even on narrow screens)
- **Gap ≥ 16 px** between adjacent buttons (to prevent accidental taps)
- Even if visually small, the **hit area can be kept large**:
- The Button entity's own `RectSize` is 100×100
- A child Sprite displays only a visual 60×60 icon
- The Button's `RaycastTarget` applies to the entire RectSize area
`scripts/preview_ui_layout.cjs` outputs warnings for buttons smaller than 88px. **Do not ignore them.**
### 9.5 Font Size Guide
Based on 1920×1080 resolution. Maintaining readability even on small mobile screens.
| Purpose | Recommended FontSize |
|------|--------------|
| Body text / descriptions | 24~28 |
| Button labels | 26~32 |
| Titles (Panel Title) | 36~48 |
| Popup main messages | 28~36 |
| Damage / notification floaters | 32~56 |
| Small quantities / secondary text | 18~22 (nearly unreadable on mobile, **avoid using**) |
**Handling long text**:
- **`BestFit = true`** + `MinSize`/`MaxSize` → auto-fits within the Rect. Essential for handling multilingual text length variations
- **`Overflow = Ellipsis(2)`** (or `Truncate(1)`) → clips overflow text; `Ellipsis` appends `...` (recommended for names and item names). Values are for `TextComponent` (`OverflowType`: `Truncate=1`, `Ellipsis=2`); `TextGUIRendererComponent` uses `TextOverflowMode` where the two are swapped (`Ellipsis=1`, `Truncate=2`)
- **`SizeFit = true`** → Text Rect expands to fit its content. When used with a background Sprite, the background also needs separate logic to expand
- **Drive panel height from content — `ui_lint` cannot.** Its geometry rules (overflow/containment) read only `RectSize`; they have **no font metrics and cannot measure rendered text height**, so a fixed-height panel holding variable-length or wrapping text can silently overflow (or leave dead space) while lint stays clean. For such panels, resize to `GetPreferredHeight(text, width)` at runtime, or contain the text via `SizeFit`/`BestFit`/`Overflow`. A clean lint never proves the text fits.
### 9.6 Resolution Handling Checklist
When designing or reviewing a `.ui`:
- [ ] Is centered UI using `middle-center` anchor? (letterbox handling)
- [ ] Is edge UI using the corresponding corner/edge anchor? (aspect ratio change handling)
- [ ] Is the full background using `stretch` anchor?
- [ ] Are fullscreen Dimmer / background images **outside** SafeArea?
- [ ] Are HUD elements **inside** SafeArea? (when targeting mobile)
- [ ] Are mobile-only elements (joystick) set to `ActivePlatform = Mobile`?
- [ ] Are PC-only elements (keyboard hints) set to `ActivePlatform = PC`?
- [ ] **When targeting PC, are elements placed outside the top-left 260×170 / top-right 220×130 reserved zones?** (preventing system UI overlap)
- [ ] Are all button `RectSize` ≥ 88×88? (when targeting mobile)
- [ ] Are long text fields set with `BestFit` or `Overflow = Ellipsis`?
- [ ] Does `preview_ui_layout.cjs` pass with no warnings?
### 9.7 Frequently Confused Topics
**"Does the aspect ratio stay the same when resolution changes?"**
- The engine adjusts via `FitMode` (scaling method). Most use `Height fit` or `Expand`
- When designing a `.ui`, **always think in terms of 1920×1080**
- However, prepare for extra edge space on ultrawide screens (21:9) by combining **center-fixed UI + edge-anchored UI**
**"I want completely different layouts on PC vs. mobile"**
- Create both versions of entities in the same `.ui` and toggle each with `ActivePlatform`
- Or create two separate `.ui` files and detect the platform at startup to Enable only one
- The latter approach is cleaner, but comes with the cost of maintaining two files
**"Fonts look wrong on Android"**
- MSW default fonts: `Default`, `Maple`, `Bazzi`, `Football`
- Project-specific fonts require resource registration
- Check the `Font` value; `Default` is safe in most cases. On `TextGUIRendererComponent`, `Font` is a **string** (`"Default"`)
references/ui-hierarchy.md
# UI Hierarchy — Layers, Groups & Ordering
A single `.ui` file contains one **UIGroup**, which holds an entity tree inside it. Show/hide, opacity, interaction, and render order are all determined by these hierarchy rules.
---
## 1. Four-Layer Structure
```
.ui file (e.g. PopupGroup.ui)
└── Root entity (UITransform + UIGroup + CanvasGroup) ← one per file, represents a screen
└── Panel entity (UITransform, optional CanvasGroup) ← functional grouping
└── Element entity (UITransform + Text/Sprite/Button)
└── Child element (icon, text, etc.)
```
- **File = Screen unit** (HUD / Popup / Toast / Menu, etc.)
- **UIGroup** is root-only; use entity `Enable` or `CanvasGroup` for inner chunks
- **CanvasGroup** is the boundary of "a chunk whose opacity and interaction can be controlled at once"
---
## 2. UIGroupComponent — The Identity of a "Screen" Unit
**Must be attached only to the root entity** of a `.ui` file. Do not nest `UIGroupComponent` under another UIGroup; inner `UIGroup` entities are not a supported container pattern and can fail to render correctly. For sub-popups, cards, gauges, tabs, and reusable sections, create an `empty()` / `panel()` container and toggle the container entity or its CanvasGroup.
| Field | Meaning | Default |
|------|------|-------|
| `DefaultShow` | Whether to auto-display on start | `false` recommended (popups/toasts), `true` for HUD |
| `GroupOrder` | **Z-order** among multiple UIGroups. Higher = on top | 3 (UIGroup.ui default) |
| `GroupType` | `DefaultType(1)` = default HUD layer / `UIType(2)` = popup/menu layer | `2` |
### GroupType Selection Criteria
- `DefaultType(1)` : **Always-visible HUD layer** — HP bar, minimap, score
- `UIType(2)` : **Openable/closable screens** — inventory, settings, popups, menus
The two layers are managed separately by the engine. If you want the HUD to remain unobscured when a popup opens, set the popup's GroupType to 2.
### Ordering Within the Same Layer via GroupOrder
Within the same GroupType, a UIGroup with a higher GroupOrder number is rendered on top. Since the default UIGroup value is 3:
| Purpose | Recommended GroupOrder |
|------|----------------|
| Background / World UI | 0 |
| Default HUD | 1~3 |
| Inventory / Menu | 5~7 |
| Popup Dialog | 10 |
| Toast / Notification | 20 |
| System Modal (network error, etc.) | 50+ |
---
## 3. CanvasGroupComponent — Opacity & Interaction Bundle
By default, attached to the root **as a set with UIGroup**. Can also be attached to intermediate Panels.
| Field | Meaning | Propagation |
|------|------|------|
| `GroupAlpha` | Opacity 0~1 | **Multiplied across all children** |
| `Interactable` | Accepts input | If false, all children are blocked |
| `BlocksRaycasts` | Blocks touch pass-through to UI behind | Only within its own Rect area |
### Core Behavior — Values Are Multiplied
```
Root CanvasGroup GroupAlpha = 0.5
└── Panel CanvasGroup GroupAlpha = 0.5
→ Panel final alpha = 0.5 × 0.5 = 0.25
→ Even if child Text's FontColor.a = 1, actual render alpha = 0.25
```
- Don't touch individual element alphas — use **a single CanvasGroup** for fade in/out
- The standard approach for popup fade animation: just one line — `popupGroup.CanvasGroupComponent.GroupAlpha = t`
### Effect of Interactable = false
- Blocks clicking on all child buttons
- But **rendering remains unchanged** (opacity stays at 1)
- Useful for disabling background HUD buttons when a popup opens
### BlocksRaycasts — Locking the HUD Behind a Popup
Set `BlocksRaycasts = true` on the popup Root + place a semi-transparent Sprite covering the full screen at the bottom of the popup, and the UI behind is automatically input-blocked. This is the standard setup for modal popups.
---
## 4. displayOrder — Sibling Order Within the Same Parent
The `.ui` entity field `displayOrder` is the **render order among siblings under the same parent**. Higher = on top.
```
Popup (UIGroup)
├── Background (displayOrder=0) ← furthest back
├── Panel (displayOrder=1)
│ ├── Title (displayOrder=0)
│ ├── Message (displayOrder=1)
│ └── BtnOk (displayOrder=2)
└── CloseIcon (displayOrder=2) ← furthest front (floating above Panel)
```
### GroupOrder vs displayOrder
| Field | Scope | Used For |
|------|------|--------|
| `UIGroupComponent.GroupOrder` | Z-order between different `.ui` files | Screen-level (popup vs HUD) |
| Entity `displayOrder` | Among siblings under the same parent | Layout within a panel |
| `OrderInLayer` (Sprite/Button) | Fine-tuning within the same entity | Rarely needs adjustment |
Rule: **Group vs group uses GroupOrder; within a group uses displayOrder.**
For runtime reordering of overlapping siblings, use `_UILogic:SetSiblingIndex(UITransformComponent, index)` from client code. See [`runtime-patterns.md`](runtime-patterns.md) §7 for the dynamic card/drag/popup pattern. Do not assume Unity-style `SetAsLastSibling()` exists.
---
## 5. Enable vs Visible — Standard UI Show/Hide
Two flags on `.ui` entities. **The standard for show/hide is `Enable`; `Visible` is an anti-pattern.** Behavior differences:
| Flag | Entity Active State | Child Tree Propagation | Lifecycle (OnUpdate, etc.) | Input (clicks) | Recommended Use |
|-------|------------------|---------------|------------------------|---------|------------|
| **`Enable`** | Inactive (entity entirely off) | Entire child tree deactivated | **Stopped** | **Blocked** | The standard for UIGroup show/hide |
| **`Visible`** | Remains active | Children remain as-is | **Continues running** | **Still active** | Almost never used |
### Behavior Summary
- `Enable = false` → The entity + its entire child subtree are deactivated. OnUpdate, OnComponentEnabled, and input callbacks all stop. `EntityEnabledInHierarchyChangedEvent` is automatically dispatched so other scripts can detect the change.
- `Visible = false` → Only turns off the renderer. Children, input, and OnUpdate all remain active. Depending on the component, there may not even be a visual effect.
→ With `Visible = false`, **button clicks still work, and child UI may still be visible**. If your intent is show/hide, always use `Enable`.
### The Standard Way to Open/Close Popups
```lua
-- Open popup
self.popupGroup.Enable = true -- Enable on the UIGroup entity
-- Close popup
self.popupGroup.Enable = false
```
- When `Enable = false`, the entire subtree is deactivated at the GameObject level → button clicks, OnUpdate, and OnComponentEnabled callbacks all stop
- When `Enable` changes, `EntityEnabledInHierarchyChangedEvent` is automatically dispatched → other scripts can detect the on/off state
### When to Use Visible
**Almost never.** The only justified cases are roughly:
- When you want to keep the UI tree's lifecycle running (timers, OnUpdate, event subscriptions) while **temporarily hiding just the graphics** (e.g. a one-frame hide trick right before a fade)
- Even in this case, `CanvasGroup.GroupAlpha = 0` is safer — it consistently makes everything transparent including children
**Forbidden pattern**:
```lua
-- ❌ An "invisible popup" where clicks still register
self.popupGroup.Visible = false -- child buttons still receive raycasts
```
```lua
-- ✅ Standard
self.popupGroup.Enable = false
```
### Caution When Using the Builder
`UIBuilder.patch(visible=False)` writes `"visible": false` into the JSON. The same pitfall applies. **If your intent is show/hide, use `enable=False`, or more generally, set `UIGroupComponent.DefaultShow = False` for hidden-on-start and toggle `Enable` at runtime.**
---
## 6. File Splitting Strategy
**Don't put too much into a single `.ui` file.** It tangles management, fading, and loading units.
### Default 4 Files (starter workspace setup)
| File | GroupType | GroupOrder | Purpose |
|------|-----------|-----------|------|
| `UIGroup.ui` | 2 | 3 | Overall container (for example purposes; rarely used in real apps) |
| `DefaultGroup.ui` | 1 | 1~3 | HP bar, score, minimap, etc. — **always-on HUD** |
| `PopupGroup.ui` | 2 | 10 | Dialogs and confirmation popups |
| `ToastGroup.ui` | 2 | 20 | Toasts and notifications |
### Criteria for Additional File Splits
- **Screens that open/close independently** → separate `.ui` (inventory, shop, quest window)
- **Per menu tab** → tabs internally are child Panels in the same file; tab switching uses `Enable` toggle
- **Reusable widgets** → separate into `.model` (acts as a prefab). Reusing `.ui` files is not recommended
---
## 7. Hierarchy Checklist
When creating or modifying a `.ui` file:
- [ ] Does the root entity have the 3-piece set of `UITransform + UIGroup + CanvasGroup` attached?
- [ ] Is the root `UITransform` set to `stretch` anchor + `RectSize(1920, 1080)`?
- [ ] Does `UIGroup.GroupType` match the purpose (HUD=1, popup/menu=2)?
- [ ] Does `UIGroup.GroupOrder` not conflict with other `.ui` files (per the recommended table above)?
- [ ] If it's a popup/toast, is `UIGroup.DefaultShow = false`? (otherwise it appears immediately on start)
- [ ] If it's a modal, does it have a semi-transparent fullscreen background Sprite + `BlocksRaycasts = true`?
- [ ] Are all inner containers `empty()` / `panel()` entities, not nested UIGroups?
references/ui-sound.md
# UI Sound Integration
Pattern for attaching sounds to UI button / touch interactions.
## API
- `_SoundService:PlaySound(id: string, volume: number)` — ExecSpace("Client")
- `volume` range: `0.0 ~ 1.0`
- RUID acquisition: `msw-search` resource API (type=sound), or use the default UI SFX RUIDs below
## Default UI SFX RUIDs
Project-standard button sounds:
| Purpose | RUID |
|---------|------|
| Hover (pointer/touch enter) | `159bf70a74634bfc8e91a29e527a4be5` |
| Click (button click) | `972843e759204d3e9ad84e7d3fa94f83` |
When creating a new button without a specific sound requirement, reuse these two RUIDs as-is.
## Hook Points
| Event | Required Component | Purpose |
|-------|-------------------|---------|
| `ButtonClickEvent` | `ButtonComponent` | Click SFX |
| `UITouchEnterEvent` | `UITouchReceiveComponent` (required) | Hover SFX |
Without `UITouchReceiveComponent`, `UITouchEnterEvent` is never fired — check this first if hover SFX is silent. The component also needs a raycast-enabled GUI renderer on the same entity (or a child) — a sibling renderer does not work (see [`component-api.md`](component-api.md) §UITouchReceiveComponent).
## Pattern (Full Sample)
Complete copy-paste-ready implementation:
```lua
@Logic
script UISoundSample extends Logic
property Entity btn = "<button entity uuid>"
property string hoverSoundRUID = "159bf70a74634bfc8e91a29e527a4be5"
property string clickSoundRUID = "972843e759204d3e9ad84e7d3fa94f83"
property number volume = 1.0
property any clickHandler = nil
property any hoverHandler = nil
@ExecSpace("ClientOnly")
method void OnBeginPlay()
if isvalid(self.btn) == false then
return
end
self.clickHandler = self.btn:ConnectEvent(ButtonClickEvent, self.OnClick)
self.hoverHandler = self.btn:ConnectEvent(UITouchEnterEvent, self.OnHover)
end
@ExecSpace("ClientOnly")
method void OnClick()
_SoundService:PlaySound(self.clickSoundRUID, self.volume)
end
@ExecSpace("ClientOnly")
method void OnHover()
_SoundService:PlaySound(self.hoverSoundRUID, self.volume)
end
@ExecSpace("ClientOnly")
method void OnEndPlay()
if self.clickHandler ~= nil and isvalid(self.btn) then
self.btn:DisconnectEvent(ButtonClickEvent, self.clickHandler)
end
if self.hoverHandler ~= nil and isvalid(self.btn) then
self.btn:DisconnectEvent(UITouchEnterEvent, self.hoverHandler)
end
self.clickHandler = nil
self.hoverHandler = nil
end
end
```
**Required components on the button entity:**
- `ButtonComponent` — fires `ButtonClickEvent`
- `UITouchReceiveComponent` — fires `UITouchEnterEvent` (hover)
## Gotchas
- **ClientOnly script context** — UI itself is client-only, so sound-calling scripts should use `@ExecSpace("ClientOnly")`. `PlaySound` is `ExecSpace("Client")` but there is no reason to trigger UI SFX directly from the server.
- **Missing hover events** — When building a button via the `.ui` builder, `UITouchReceiveComponent` is not always added automatically. Add it explicitly with `b.addComponent(identifier, "MOD.Core.UITouchReceiveComponent")`.
- **Overlapping SFX on rapid input** — `PlaySound` spawns a new instance on every call. Short SFX is fine; guard long sounds with a cooldown variable.
## Reference
- `Environment/NativeScripts/Service/SoundService.d.mlua` — Full SoundService API
- `Environment/NativeScripts/Component/SoundComponent.d.mlua` — Entity-attached sound (for 3D positional, etc.)
scripts/msw_ui_builder.cjs
"use strict";
const fs = require("fs");
const path = require("path");
const crypto = require("crypto");
// SpriteGUIRendererComponent defaults applied to EVERY UI entity the builder
// mints with a sprite renderer (panel / sprite / button / slider / textInput /
// joystick, ...). A 9-slice RUID, Sliced image type, and a dark translucent fill
// (RGBA 26,26,26,60).
//
// These are DEFAULTS, not constraints: they only fill in what the caller leaves
// unspecified. Pass `color` (panel/sprite) or `bg_color` (button/slider/textInput)
// — as a hex string or { r, g, b, a } — plus `alpha` / `sprite_type` / `image_ruid`
// to tint or restyle any individual element. Do not assume every panel must be gray.
const DEFAULT_SPRITE_RUID = "2860136c06ab075439721c027de365af";
const DEFAULT_SPRITE_TYPE = 1; // ImageType.Sliced
const DEFAULT_SPRITE_COLOR = { r: 26 / 255, g: 26 / 255, b: 26 / 255, a: 60 / 255 };
// PreserveSprite (PreserveSpriteType) — how a sprite keeps its source proportions:
// 0 None (stretch to RectSize) / 1 AspectOnly (fit inside RectSize, keep ratio) /
// 2 NativeSize (draw at native pixel size). This enum is the only proportion control
// the renderer honors. The legacy `preserve_aspect: true` option maps to AspectOnly(1).
const PRESERVE_SPRITE = { none: 0, aspectonly: 1, aspect: 1, nativesize: 2, native: 2 };
function resolvePreserveSprite(extra = {}) {
const v = extra.preserve_sprite;
if (v != null) {
if (typeof v === "number") return v;
const k = String(v).toLowerCase();
if (k in PRESERVE_SPRITE) return PRESERVE_SPRITE[k];
throw new Error(`unknown preserve_sprite: '${v}' (use 0|1|2 or none|aspectOnly|nativeSize)`);
}
return extra.preserve_aspect ? 1 : 0;
}
// >>> BEGIN AUTO-GENERATED: native component catalog + resolver — do not hand-edit; run tools/gen-native-components.cjs
// Native MSW component class names (CoreVersion 26.7.0.0). A bare name in this
// set is auto-qualified to "MOD.Core.<name>"; any other bare name is treated as a
// "script.<name>" custom component, with a one-time advisory on stderr.
const NATIVE_COMPONENTS = new Set([
"AIChaseComponent", "AIComponent", "AIWanderComponent", "AnimationSequenceControllerComponent",
"AreaParticleComponent", "AttackComponent", "AvatarBodyActionSelectorComponent", "AvatarFaceActionSelectorComponent",
"AvatarGUIRendererComponent", "AvatarRendererComponent", "AvatarStateAnimationComponent", "BackgroundComponent",
"BasicParticleComponent", "ButtonComponent", "CameraComponent", "CanvasGroupComponent",
"ChatBalloonComponent", "ChatComponent", "ClimbableComponent", "ClimbableSpriteRendererComponent",
"Component", "CostumeManagerComponent", "CustomFootholdComponent", "DamageSkinComponent",
"DamageSkinSettingComponent", "DamageSkinSpawnerComponent", "DirectionSynchronizerComponent", "DistanceJointComponent",
"FootholdComponent", "GridViewComponent", "HitComponent", "HitEffectSpawnerComponent",
"InteractionComponent", "InventoryComponent", "JoystickComponent", "KinematicbodyComponent",
"LightComponent", "LineGUIRendererComponent", "LineRendererComponent", "MapComponent",
"MapLayerComponent", "MaskComponent", "MissingComponent", "MovementComponent",
"NameTagComponent", "OverlayLightComponent", "PhysicsColliderComponent", "PhysicsRigidbodyComponent",
"PhysicsSimulatorComponent", "PixelGUIRendererComponent", "PixelRendererComponent", "PlayerComponent",
"PlayerControllerComponent", "PolygonGUIRendererComponent", "PolygonRendererComponent", "PortalComponent",
"PrismaticJointComponent", "PulleyJointComponent", "RawImageGUIRendererComponent", "RawImageRendererComponent",
"RectTileMapComponent", "RevoluteJointComponent", "RigidbodyComponent", "ScrollLayoutGroupComponent",
"SideviewbodyComponent", "SkeletonGUIRendererComponent", "SkeletonRendererComponent", "SliderComponent",
"SoundComponent", "SpawnLocationComponent", "SpriteGUIRendererComponent", "SpriteParticleComponent",
"SpriteRendererComponent", "StateAnimationComponent", "StateComponent", "StateStringToAvatarActionComponent",
"StateStringToMonsterActionComponent", "TagComponent", "TextComponent", "TextGUIRendererComponent",
"TextGUIRendererInputComponent", "TextInputComponent", "TextRendererComponent", "TileMapComponent",
"TouchReceiveComponent", "TransformComponent", "TriggerComponent", "TweenCircularComponent",
"TweenFloatingComponent", "TweenLineComponent", "UIAreaParticleComponent", "UIBasicParticleComponent",
"UIGroupComponent", "UISpriteParticleComponent", "UITouchReceiveComponent", "UITransformComponent",
"WebSpriteComponent", "WebViewComponent", "WeldJointComponent", "WheelJointComponent",
"WorldComponent", "YoutubePlayerCommonComponent", "YoutubePlayerGUIComponent", "YoutubePlayerWorldComponent"
]);
const _resolveWarned = new Set();
function _editDistance(a, b) {
const m = a.length, n = b.length;
if (Math.abs(m - n) > 2) return 3;
const prev = new Array(n + 1);
for (let j = 0; j <= n; j++) prev[j] = j;
for (let i = 1; i <= m; i++) {
let diag = prev[0];
prev[0] = i;
for (let j = 1; j <= n; j++) {
const tmp = prev[j];
prev[j] = Math.min(
prev[j] + 1,
prev[j - 1] + 1,
diag + (a[i - 1] === b[j - 1] ? 0 : 1)
);
diag = tmp;
}
}
return prev[n];
}
function _nearestNative(name) {
const limit = name.length <= 6 ? 1 : 2;
let best = null, bestD = limit + 1;
for (const n of NATIVE_COMPONENTS) {
const d = _editDistance(name, n);
if (d < bestD) { bestD = d; best = n; }
}
return bestD <= limit ? best : null;
}
function normalizeComponentName(name) {
if (name == null) throw new TypeError("Component name must not be null");
const value = String(name);
if (value.startsWith("MOD.") || value.startsWith("script.")) return value;
if (NATIVE_COMPONENTS.has(value)) {
const out = "MOD.Core." + value;
if (!_resolveWarned.has(value)) {
_resolveWarned.add(value);
console.warn(`[builder:ui] component "${value}" -> ${out} (native; auto-qualified). Pass "${out}" to silence this.`);
}
return out;
}
const near = _nearestNative(value);
const out = "script." + value;
if (!_resolveWarned.has(value)) {
_resolveWarned.add(value);
if (near) {
console.warn(`[builder:ui] component "${value}" is not a native component -> treated as ${out}. Looks like a typo of native "MOD.Core.${near}": if you meant the native, pass "MOD.Core.${near}"; if it is your own script component, pass "${out}".`);
} else {
console.warn(`[builder:ui] component "${value}" -> ${out} (assumed custom script component). Next time pass "${out}" if it is yours, or "MOD.Core.${value}" if it is native.`);
}
}
return out;
}
// <<< END AUTO-GENERATED
// A UI entity renders text through exactly one text component. TextComponent is the
// legacy renderer; TextGUIRendererComponent is the current one. Adding either must drop
// the other, otherwise an entity migrated from a legacy .ui carries both — two text
// layers that double-render and fight over the same glyphs.
const MUTUALLY_EXCLUSIVE_COMPONENTS = new Map([
["MOD.Core.TextComponent", ["MOD.Core.TextGUIRendererComponent"]],
["MOD.Core.TextGUIRendererComponent", ["MOD.Core.TextComponent"]],
]);
const ANCHOR_DEFAULT_PIVOT = {
"middle-center": [0.5, 0.5],
"middle-left": [0.0, 0.5],
"middle-right": [1.0, 0.5],
"top-center": [0.5, 1.0],
"top-left": [0.0, 1.0],
"top-right": [1.0, 1.0],
"bottom-center": [0.5, 0.0],
"bottom-left": [0.0, 0.0],
"bottom-right": [1.0, 0.0],
"stretch-top": [0.5, 1.0],
"stretch-middle": [0.5, 0.5],
"stretch-bottom": [0.5, 0.0],
"stretch-left": [0.0, 0.5],
"stretch-center": [0.5, 0.5],
"stretch-right": [1.0, 0.5],
stretch: [0.5, 0.5],
};
const ANCHOR_PRESETS = {
"middle-center": { min: [0.5, 0.5], max: [0.5, 0.5], alignment: 0 },
"middle-left": { min: [0.0, 0.5], max: [0.0, 0.5], alignment: 1 },
"middle-right": { min: [1.0, 0.5], max: [1.0, 0.5], alignment: 2 },
"top-center": { min: [0.5, 1.0], max: [0.5, 1.0], alignment: 3 },
"top-left": { min: [0.0, 1.0], max: [0.0, 1.0], alignment: 4 },
"top-right": { min: [1.0, 1.0], max: [1.0, 1.0], alignment: 5 },
"bottom-center": { min: [0.5, 0.0], max: [0.5, 0.0], alignment: 6 },
"bottom-left": { min: [0.0, 0.0], max: [0.0, 0.0], alignment: 7 },
"bottom-right": { min: [1.0, 0.0], max: [1.0, 0.0], alignment: 8 },
"stretch-top": { min: [0.0, 1.0], max: [1.0, 1.0], alignment: 9 },
"stretch-middle": { min: [0.0, 0.5], max: [1.0, 0.5], alignment: 10 },
"stretch-bottom": { min: [0.0, 0.0], max: [1.0, 0.0], alignment: 11 },
"stretch-left": { min: [0.0, 0.0], max: [0.0, 1.0], alignment: 12 },
"stretch-center": { min: [0.5, 0.0], max: [0.5, 1.0], alignment: 13 },
"stretch-right": { min: [1.0, 0.0], max: [1.0, 1.0], alignment: 14 },
stretch: { min: [0.0, 0.0], max: [1.0, 1.0], alignment: 15 },
};
function hasExplicitTransformOptions(options = {}) {
return options.anchor != null || options.pos != null || options.rect_size != null || options.pivot != null;
}
function assertNoParentOption(methodName, name, options = {}) {
if (options && Object.prototype.hasOwnProperty.call(options, "parent")) {
throw new Error(
`UIBuilder.${methodName}() does not accept options.parent. ` +
`Use path notation in the entity name instead, such as "Parent/Child".`
);
}
}
const KNOWN_COMPONENTS = new Set([
"MOD.Core.UITransformComponent",
"MOD.Core.SpriteGUIRendererComponent",
"MOD.Core.TextComponent",
"MOD.Core.TextGUIRendererComponent",
"MOD.Core.TextGUIRendererInputComponent",
"MOD.Core.ButtonComponent",
"MOD.Core.UIGroupComponent",
"MOD.Core.CanvasGroupComponent",
"MOD.Core.SliderComponent",
"MOD.Core.ScrollLayoutGroupComponent",
"MOD.Core.TextInputComponent",
"MOD.Core.MaskComponent",
"MOD.Core.GridViewComponent",
"MOD.Core.AvatarGUIRendererComponent",
"MOD.Core.UITouchReceiveComponent",
"MOD.Core.SkeletonGUIRendererComponent",
"MOD.Core.UIAreaParticleComponent",
"MOD.Core.UIBasicParticleComponent",
"MOD.Core.UISpriteParticleComponent",
"MOD.Core.JoystickComponent",
"MOD.Core.SoftMaskComponent",
"MOD.Core.ChatComponent",
"MOD.Core.LineGUIRendererComponent",
"MOD.Core.PolygonGUIRendererComponent",
]);
const INT32_COMPONENT_FIELDS = new Set([
"ActivePlatform", "Alignment", "AlignmentOption", "AnimClipPlayType", "Axis", "ChildAlignment",
"Constraint", "ConstraintCount", "ContentType", "Direction", "DownArrow", "EndFrameIndex",
"FillMethod", "FillOrigin", "FixedCount", "FixedType", "Font", "FontSize", "FontStyle", "FrameColumn",
"FrameRate", "FrameRow", "GridChildAlignment", "GroupOrder", "GroupType", "HorizontalAlignment",
"HorizontalScrollBarDirection", "KeyCode", "LeftArrow", "LineType", "MaxSize", "MinSize",
"VerticalAlignment",
"OrderInLayer", "Overflow", "ParticleType", "PreserveAvatar", "PreserveMode",
"PreserveSprite", "PreserveSpriteType", "PreserveType", "RandomSeed", "RightArrow", "ScrollBarVisible",
"Shape", "StartAxis", "StartCorner", "StartFrameIndex", "TotalCount", "Transition", "Type",
"UIVersion", "UpArrow", "VerticalScrollBarDirection",
]);
const NUMBER_COMPONENT_FIELDS = new Set([
"ChatEmotionDuration", "ColorMultiplier", "ConstraintX", "ConstraintY", "DropShadowAngle",
"DropShadowDistance", "FadeDuration", "FillAmount", "Flexibility", "GroupAlpha",
"MaxValue", "MinValue", "OutlineWidth", "ParticleCount", "ParticleLifeTime", "ParticleSize",
"ParticleSpeed", "PlayRate", "PlaySpeed", "ScrollBarThickness", "Spacing", "Value", "Width",
]);
const BOOLEAN_COMPONENT_FIELDS = new Set([
"AllowAutomaticTranslation", "ApplySpriteColor", "AutoClear", "AutoRandomSeed", "BestFit",
"BlocksRaycasts", "Bold", "DefaultShow", "DynamicStick", "Enable", "EnableVoiceChat",
"Expand", "FillCenter", "FillClockWise", "FlipX", "FlipY", "HideWorldChatButton",
"IgnoreMapLayerCheck", "Interactable", "InvertMask", "InvertOutsides", "IsEmitting",
"IsFlexible", "IsLocalizationKey", "IsSmooth", "Loop", "MessageAlignBottom", "OverrideSorting",
"PlayOnEnable", "Prewarm", "RaycastTarget", "ReverseArrangement",
"SizeFit", "UseChatBalloon", "UseChatEmotion", "UseConstraintX", "UseConstraintY",
"UseCustomUVs", "UseHandle", "UseIntegerValue", "UseOutLine", "UseScroll",
]);
const COMPONENT_FIELD_TYPE_OVERRIDES = new Map([
["MOD.Core.GridViewComponent.Spacing", "Vector2"],
["MOD.Core.TextGUIRendererComponent.Font", "String"],
["MOD.Core.TextGUIRendererComponent.FontSize", "Single"],
["MOD.Core.TextGUIRendererComponent.MinSize", "Single"],
["MOD.Core.TextGUIRendererComponent.MaxSize", "Single"],
]);
function isFiniteNumber(v) {
return typeof v === "number" && Number.isFinite(v);
}
function isVector2Shape(value) {
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
return isFiniteNumber(value.x) && isFiniteNumber(value.y);
}
function hexToRgba(hexColor, alpha = 1.0) {
const h = String(hexColor).replace(/^#/, "");
if (!/^[0-9a-fA-F]{6}$/.test(h)) {
throw new Error(`Invalid hex color: ${hexColor}`);
}
return {
r: parseInt(h.slice(0, 2), 16) / 255.0,
g: parseInt(h.slice(2, 4), 16) / 255.0,
b: parseInt(h.slice(4, 6), 16) / 255.0,
a: alpha,
};
}
function colorDict(color, alpha = 1.0) {
if (color == null) return { r: 1.0, g: 1.0, b: 1.0, a: alpha };
if (typeof color === "string") return hexToRgba(color, alpha);
if (Array.isArray(color)) {
if ((color.length === 3 || color.length === 4) && color.every(isFiniteNumber)) {
return { r: color[0], g: color[1], b: color[2], a: color.length === 4 ? color[3] : alpha };
}
throw new Error(`Invalid color array: ${JSON.stringify(color)} (use [r,g,b] or [r,g,b,a] with 0..1 floats, a hex string, or {r,g,b,a})`);
}
return color;
}
function clone(value) {
return JSON.parse(JSON.stringify(value));
}
function tuple(value, fallback) {
if (value == null) return fallback;
if (Array.isArray(value)) return value;
if (typeof value === "object") {
const arity = Array.isArray(fallback) ? fallback.length : 2;
const keys = ["x", "y", "z", "w"].slice(0, arity);
if (keys.some((k) => k in value)) return keys.map((k) => Number(value[k] ?? 0));
}
return fallback;
}
function sortFields(extra = {}) {
return {
SortingLayer: String(extra.sorting_layer ?? "UI"),
OrderInLayer: Number(extra.order_in_layer ?? 0),
IgnoreMapLayerCheck: Boolean(extra.ignore_map_layer_check ?? false),
OverrideSorting: Boolean(extra.override_sorting ?? false),
};
}
function _resolveSortOptions(options = {}) {
if (options.world_ui === true) {
return {
sorting_layer: options.sorting_layer ?? "UI",
order_in_layer: options.order_in_layer ?? 0,
ignore_map_layer_check: options.ignore_map_layer_check ?? false,
override_sorting: options.override_sorting ?? true,
};
}
const picked = {};
if (options.sorting_layer !== undefined) picked.sorting_layer = options.sorting_layer;
if (options.order_in_layer !== undefined) picked.order_in_layer = options.order_in_layer;
if (options.ignore_map_layer_check !== undefined) picked.ignore_map_layer_check = options.ignore_map_layer_check;
if (options.override_sorting !== undefined) picked.override_sorting = options.override_sorting;
return picked;
}
function int32Field(value, fieldName) {
const n = Number(value);
if (!Number.isInteger(n) || n < -2147483648 || n > 2147483647) {
throw new TypeError(`${fieldName} must be an int32. Got ${JSON.stringify(value)}`);
}
return n;
}
function collectInvalidNumbers(value, pathLabel, findings) {
if (typeof value === "number") {
if (!Number.isFinite(value)) {
findings.push({ severity: "error", rule: "U001", message: `${pathLabel} must be a finite number. Got ${String(value)}` });
}
return;
}
if (Array.isArray(value)) {
value.forEach((item, idx) => collectInvalidNumbers(item, `${pathLabel}[${idx}]`, findings));
return;
}
if (value && typeof value === "object") {
for (const [key, item] of Object.entries(value)) {
collectInvalidNumbers(item, `${pathLabel}.${key}`, findings);
}
}
}
function collectComponentScalarTypeIssues(data, findings) {
const entities = data?.ContentProto?.Entities || [];
for (const entity of entities) {
const js = typeof entity.jsonString === "string" ? JSON.parse(entity.jsonString) : entity.jsonString;
const entityPath = js?.path || entity.path || "?";
for (const component of js?.["@components"] || []) {
const compType = component["@type"] || "?";
for (const [key, value] of Object.entries(component)) {
const label = `${entityPath}.${compType}.${key}`;
const overrideType = COMPONENT_FIELD_TYPE_OVERRIDES.get(`${compType}.${key}`);
if (overrideType === "Vector2") {
if (!isVector2Shape(value)) {
findings.push({ severity: "error", rule: "U005", message: `${label} must be Vector2 {x, y} with finite numbers. Got ${JSON.stringify(value)}` });
}
continue;
}
if (overrideType === "String") {
if (typeof value !== "string") {
findings.push({ severity: "error", rule: "U006", message: `${label} must be a string. Got ${JSON.stringify(value)}` });
}
continue;
}
if (overrideType === "Single") {
if (typeof value !== "number" || !Number.isFinite(value)) {
findings.push({ severity: "error", rule: "U003", message: `${label} must be a finite number. Got ${JSON.stringify(value)}` });
}
continue;
}
if (INT32_COMPONENT_FIELDS.has(key) && !Number.isInteger(value)) {
findings.push({ severity: "error", rule: "U002", message: `${label} must be int32. Got ${JSON.stringify(value)}` });
}
if (NUMBER_COMPONENT_FIELDS.has(key) && (typeof value !== "number" || !Number.isFinite(value))) {
findings.push({ severity: "error", rule: "U003", message: `${label} must be a finite number. Got ${JSON.stringify(value)}` });
}
if (BOOLEAN_COMPONENT_FIELDS.has(key) && typeof value !== "boolean") {
findings.push({ severity: "error", rule: "U004", message: `${label} must be boolean. Got ${JSON.stringify(value)}` });
}
}
}
}
}
function assertNoInvalidNumbers(value, pathLabel = "$") {
const findings = [];
collectInvalidNumbers(value, pathLabel, findings);
if (findings.length) throw new TypeError(findings[0].message);
}
function assertComponentScalarTypes(data) {
const findings = [];
collectComponentScalarTypeIssues(data, findings);
if (findings.length) throw new TypeError(findings[0].message);
}
class UIBuilder {
constructor(groupName, displayOrder = 1, defaultShow = true, defaultRuid = DEFAULT_SPRITE_RUID) {
this.group_name = groupName;
this.root_uuid = crypto.randomUUID();
this.root_path = `/ui/${groupName}`;
this.default_ruid = defaultRuid;
this.entities = [];
this._data = null;
this._display_counters = {};
this._lastId = null;
this._createRoot(int32Field(displayOrder, "displayOrder"), defaultShow);
}
static load(filepath) {
let data;
try {
data = JSON.parse(fs.readFileSync(filepath, "utf8"));
} catch (err) {
if (err && err.code === "ENOENT") throw new Error(`UI file not found: ${filepath}`);
throw new Error(`Invalid JSON in UI file ${filepath}: ${err.message}`);
}
if (!data.ContentProto || !Array.isArray(data.ContentProto.Entities)) {
throw new Error(`Missing ContentProto.Entities in UI file: ${filepath}`);
}
const entities = data.ContentProto.Entities;
if (entities.length === 0) throw new Error(`No entities found in UI file: ${filepath}`);
for (const entity of entities) {
if (typeof entity.jsonString === "string") entity.jsonString = JSON.parse(entity.jsonString);
}
const rootJs = entities[0].jsonString;
const instance = new UIBuilder(rootJs.name || "Unnamed");
instance.root_uuid = entities[0].id;
instance.root_path = rootJs.path || instance.root_path;
instance.entities = entities;
instance._data = data;
instance._display_counters = {};
for (const entity of entities) {
const js = entity.jsonString;
const entityPath = js.path || "";
const parent = entityPath.includes("/") ? entityPath.split("/").slice(0, -1).join("/") : "";
const displayOrder = js.displayOrder || 0;
if (parent && displayOrder >= (instance._display_counters[parent] || 0)) {
instance._display_counters[parent] = displayOrder + 1;
}
}
console.log(`Loaded ${entities.length} entities from ${filepath}`);
return instance;
}
static read(filepath) {
return UIBuilder.load(filepath);
}
static snapshot(filepath) {
return UIBuilder.load(filepath).listEntities();
}
_createRoot(displayOrder, defaultShow) {
this.entities.push({
id: this.root_uuid,
path: this.root_path,
componentNames: "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent",
jsonString: {
name: this.group_name,
path: this.root_path,
nameEditable: true,
enable: true,
visible: true,
localize: true,
displayOrder,
pathConstraints: "//",
revision: 0,
origin: {
type: "Model",
entry_id: "UIGroup",
sub_entity_id: null,
root_entity_id: null,
replaced_model_id: null,
},
modelId: "uigroup",
"@components": [
this._uiTransform("stretch", [0, 0], [1920, 1080]),
{
"@type": "MOD.Core.UIGroupComponent",
DefaultShow: defaultShow,
GroupOrder: displayOrder,
GroupType: 1,
Enable: true,
},
{
"@type": "MOD.Core.CanvasGroupComponent",
BlocksRaycasts: true,
GroupAlpha: 1.0,
Interactable: true,
Enable: true,
},
],
"@version": 1,
},
});
}
_normalizePath(identifier) {
const value = String(identifier).trim();
if (!value) throw new Error("Entity identifier must not be empty");
if (value.startsWith("/ui/")) {
if (!value.startsWith(this.root_path)) {
throw new Error(`Entity path '${value}' is outside this UI root '${this.root_path}'`);
}
return value;
}
const rel = value.replace(/^\/+/, "");
if (!rel) return this.root_path;
if (rel === this.group_name || rel.startsWith(`${this.group_name}/`)) return `/ui/${rel}`;
return `${this.root_path}/${rel}`;
}
_resolve(identifier) {
const fullPath = this._normalizePath(identifier);
const parentPath = fullPath.includes("/") ? fullPath.split("/").slice(0, -1).join("/") : this.root_path;
const entityName = fullPath.split("/").pop();
return [fullPath, parentPath, entityName];
}
_nextDisplayOrder(parentPath) {
const n = this._display_counters[parentPath] || 0;
this._display_counters[parentPath] = n + 1;
return n;
}
_pathConstraints(fullPath) {
if (fullPath === this.root_path) return "//";
return "/".repeat((fullPath.slice(this.root_path.length).match(/\//g) || []).length + 2);
}
_entityJson(entity) {
return entity.jsonString;
}
_findComponent(entity, compType) {
for (const component of this._entityJson(entity)["@components"] || []) {
if (component["@type"] === compType) return component;
}
return null;
}
_refreshComponentNamesFromComponents(entity) {
entity.componentNames = (this._entityJson(entity)["@components"] || [])
.map((component) => component["@type"])
.filter(Boolean)
.join(",");
}
_normalizeTextGuiRendererModelIdentity(entity) {
const js = this._entityJson(entity);
if (!this._findComponent(entity, "MOD.Core.TextGUIRendererComponent")) return;
if (js.modelId === "uitext") js.modelId = "uitextguirenderer";
if (js.origin?.entry_id === "UIText" || js.origin?.entry_id === "uitext") js.origin.entry_id = "UITextGUIRenderer";
}
_uiTransform(anchor = "middle-center", pos = [0, 0], rectSize = [100, 100], pivot = null) {
const preset = ANCHOR_PRESETS[anchor] || ANCHOR_PRESETS["middle-center"];
const px = Number(pos[0]);
const py = Number(pos[1]);
const sx = Number(rectSize[0]);
const sy = Number(rectSize[1]);
const [pvx, pvy] = pivot == null ? (ANCHOR_DEFAULT_PIVOT[anchor] || [0.5, 0.5]) : [Number(pivot[0]), Number(pivot[1])];
const mn = preset.min;
const mx = preset.max;
const stretchX = mn[0] !== mx[0];
const stretchY = mn[1] !== mx[1];
let ominX;
let ominY;
let omaxX;
let omaxY;
if (stretchX && stretchY) {
ominX = px; ominY = py; omaxX = px; omaxY = py;
} else if (stretchX) {
ominX = px; omaxX = px; ominY = py - pvy * sy; omaxY = py + (1.0 - pvy) * sy;
} else if (stretchY) {
ominX = px - pvx * sx; omaxX = px + (1.0 - pvx) * sx; ominY = py; omaxY = py;
} else {
ominX = px - pvx * sx; omaxX = px + (1.0 - pvx) * sx;
ominY = py - pvy * sy; omaxY = py + (1.0 - pvy) * sy;
}
return {
"@type": "MOD.Core.UITransformComponent",
ActivePlatform: 255,
AlignmentOption: preset.alignment,
AnchorsMax: { x: preset.max[0], y: preset.max[1] },
AnchorsMin: { x: preset.min[0], y: preset.min[1] },
MobileOnly: false,
OffsetMax: { x: omaxX, y: omaxY },
OffsetMin: { x: ominX, y: ominY },
Pivot: { x: pvx, y: pvy },
RectSize: { x: sx, y: sy },
UIMode: 1,
UIScale: { x: 1.0, y: 1.0, z: 1.0 },
UIVersion: 2,
anchoredPosition: { x: px, y: py },
Position: { x: 0.0, y: 0.0, z: 0.0 },
QuaternionRotation: { x: 0.0, y: 0.0, z: 0.0, w: 1.0 },
Scale: { x: 1.0, y: 1.0, z: 1.0 },
Enable: true,
};
}
_anchorNameFromTransform(transform) {
for (const [presetName, preset] of Object.entries(ANCHOR_PRESETS)) {
const amin = transform.AnchorsMin || {};
const amax = transform.AnchorsMax || {};
if (Number(amin.x) === preset.min[0] && Number(amin.y) === preset.min[1] && Number(amax.x) === preset.max[0] && Number(amax.y) === preset.max[1]) {
return presetName;
}
}
return "middle-center";
}
_mergeUiTransform(existingTransform, options = {}) {
const curPos = existingTransform.anchoredPosition || {};
const curSize = existingTransform.RectSize || {};
const curPivot = existingTransform.Pivot || {};
const curOffMin = existingTransform.OffsetMin || {};
const curOffMax = existingTransform.OffsetMax || {};
const nextPos = options.pos != null ? tuple(options.pos, [0, 0]) : [Number(curPos.x ?? 0.0), Number(curPos.y ?? 0.0)];
const nextSize = options.rect_size != null ? tuple(options.rect_size, [100, 100]) : [Number(curSize.x ?? 100.0), Number(curSize.y ?? 100.0)];
let nextPivot = null;
if (options.pivot != null) nextPivot = tuple(options.pivot, [0.5, 0.5]);
else if (curPivot.x != null && curPivot.y != null) nextPivot = [Number(curPivot.x), Number(curPivot.y)];
const nextAnchor = options.anchor ?? this._anchorNameFromTransform(existingTransform);
const rebuilt = this._uiTransform(nextAnchor, nextPos, nextSize, nextPivot);
if (options.anchor == null) {
const preset = ANCHOR_PRESETS[nextAnchor] || ANCHOR_PRESETS["middle-center"];
const stretchX = preset.min[0] !== preset.max[0];
const stretchY = preset.min[1] !== preset.max[1];
if ((stretchX || stretchY) && curOffMin.x != null && curOffMin.y != null && curOffMax.x != null && curOffMax.y != null) {
if (stretchX) {
rebuilt.OffsetMin.x = Number(curOffMin.x);
rebuilt.OffsetMax.x = Number(curOffMax.x);
rebuilt.anchoredPosition.x = options.pos != null ? Number(nextPos[0]) : Number(curPos.x ?? 0.0);
}
if (stretchY) {
rebuilt.OffsetMin.y = Number(curOffMin.y);
rebuilt.OffsetMax.y = Number(curOffMax.y);
rebuilt.anchoredPosition.y = options.pos != null ? Number(nextPos[1]) : Number(curPos.y ?? 0.0);
}
if (options.rect_size == null && curSize.x != null && curSize.y != null) {
rebuilt.RectSize = { x: Number(curSize.x), y: Number(curSize.y) };
}
}
}
return rebuilt;
}
static _spriteRenderer(color = null, alpha = null, raycast = false, fillMethod = 0, spriteType = null, imageRuid = null, extra = {}) {
const sort = sortFields(extra);
const resolvedType = spriteType != null ? spriteType : DEFAULT_SPRITE_TYPE;
const resolvedRuid = imageRuid != null ? imageRuid : DEFAULT_SPRITE_RUID;
let resolvedColor;
if (color != null) {
resolvedColor = colorDict(color, alpha != null ? alpha : 1.0);
} else {
resolvedColor = { ...DEFAULT_SPRITE_COLOR };
if (alpha != null) resolvedColor.a = alpha;
}
return {
"@type": "MOD.Core.SpriteGUIRendererComponent",
AnimClipPlayType: 0,
EndFrameIndex: 2147483647,
ImageRUID: { DataId: resolvedRuid },
IgnoreMapLayerCheck: sort.IgnoreMapLayerCheck,
LocalPosition: { x: 0.0, y: 0.0 },
LocalScale: { x: 1.0, y: 1.0 },
MaterialId: String(extra.material_id ?? ""),
OrderInLayer: sort.OrderInLayer,
OverrideSorting: sort.OverrideSorting,
PlayRate: 1.0,
PreserveSprite: resolvePreserveSprite(extra),
SortingLayer: sort.SortingLayer,
StartFrameIndex: 0,
Color: resolvedColor,
DropShadow: false,
DropShadowAngle: 120.0,
DropShadowColor: { r: 0.0, g: 0.0, b: 0.0, a: 0.72 },
DropShadowDistance: 3.0,
FillAmount: 1.0,
FillCenter: true,
FillClockWise: true,
FillMethod: fillMethod,
FillOrigin: 0,
FlipX: false,
FlipY: false,
FrameColumn: 1,
FrameRate: 0,
FrameRow: 1,
Outline: false,
OutlineColor: { r: 0.0, g: 0.0, b: 0.0, a: 1.0 },
OutlineWidth: 3.0,
RaycastTarget: raycast,
Type: resolvedType,
Enable: true,
};
}
_spriteRenderer(...args) {
return UIBuilder._spriteRenderer(...args);
}
// `alignment`: 9-cell value 0-8 (default 4 = MiddleCenter), split into the H/V axes below.
static _textGuiRenderer(text = "", fontSize = 24, color = null, bold = false, alignment = 4, options = {}) {
const maxSize = options.max_size != null ? options.max_size : Math.max(fontSize + 12, 40);
const sort = sortFields(options);
const a = Number.parseInt(alignment, 10) || 0;
const HORIZONTAL = [1, 2, 4]; // Left, Center, Right
const VERTICAL = [256, 512, 1024]; // Top, Middle, Bottom
const horizontal = HORIZONTAL[((a % 3) + 3) % 3];
const vertical = VERTICAL[Math.min(Math.max(Math.floor(a / 3), 0), 2)];
const outlineOn = Boolean(options.outline);
return {
"@type": "MOD.Core.TextGUIRendererComponent",
BestFit: Boolean(options.bestfit),
ConstraintX: Number(options.constraint_x ?? 100.0),
ConstraintY: Number(options.constraint_y ?? 100.0),
Font: "Default",
FontColor: colorDict(color),
FontSize: Number(fontSize),
FontStyle: bold ? 1 : 0, // FontStyleType: Normal 0, Bold 1 (bit flags)
HorizontalAlignment: horizontal,
IgnoreMapLayerCheck: sort.IgnoreMapLayerCheck,
MaxSize: maxSize,
MinSize: options.min_size != null ? options.min_size : 10,
OrderInLayer: sort.OrderInLayer,
OutlineColor: options.outline_color != null ? colorDict(options.outline_color) : { r: 0.0, g: 0.0, b: 0.0, a: 1.0 },
OutlineWidth: outlineOn ? Number(options.outline_width ?? 0.2) : 0.0,
Overflow: options.overflow != null ? options.overflow : 0, // TextOverflowMode: Overflow 0, Ellipsis 1, Truncate 2, Page 3
OverrideSorting: sort.OverrideSorting,
Padding: { left: 0, right: 0, top: 0, bottom: 0 },
SizeFit: false,
SortingLayer: sort.SortingLayer,
Text: text,
Underlay: false,
UseConstraintX: Boolean(options.use_constraint_x ?? false),
UseConstraintY: Boolean(options.use_constraint_y ?? false),
VerticalAlignment: vertical,
Enable: true,
};
}
_textGuiRenderer(...args) {
return UIBuilder._textGuiRenderer(...args);
}
_textFromOptions(options = {}) {
if (!Object.prototype.hasOwnProperty.call(options, "text")) return null;
return this._textGuiRenderer(
String(options.text ?? ""),
options.text_size ?? options.font_size ?? 24,
options.text_color ?? "#FFFFFF",
options.text_bold ?? false,
options.text_alignment ?? 4,
{
overflow: options.text_overflow ?? options.overflow ?? 0,
bestfit: options.text_bestfit ?? options.bestfit ?? false,
min_size: options.text_min_size ?? options.min_size ?? 10,
max_size: options.text_max_size ?? options.max_size ?? null,
outline: options.text_outline ?? options.outline ?? false,
outline_color: options.text_outline_color ?? options.outline_color ?? null,
outline_width: options.text_outline_width ?? options.outline_width ?? null,
use_constraint_x: options.text_use_constraint_x ?? options.use_constraint_x ?? false,
constraint_x: options.text_constraint_x ?? options.constraint_x ?? 100.0,
use_constraint_y: options.text_use_constraint_y ?? options.use_constraint_y ?? false,
constraint_y: options.text_constraint_y ?? options.constraint_y ?? 100.0,
..._resolveSortOptions(options),
},
);
}
static _buttonComponent(extra = {}) {
const sort = sortFields(extra);
return {
"@type": "MOD.Core.ButtonComponent",
Colors: {
NormalColor: { r: 1.0, g: 1.0, b: 1.0, a: 1.0 },
HighlightedColor: { r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1.0 },
PressedColor: { r: 0.784313738, g: 0.784313738, b: 0.784313738, a: 1.0 },
SelectedColor: { r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1.0 },
DisabledColor: { r: 0.784313738, g: 0.784313738, b: 0.784313738, a: 0.5019608 },
ColorMultiplier: 1.0,
FadeDuration: 0.1,
},
IgnoreMapLayerCheck: sort.IgnoreMapLayerCheck,
ImageRUIDs: {
HighlightedSprite: null,
PressedSprite: null,
SelectedSprite: null,
DisabledSprite: null,
},
KeyCode: 0,
OrderInLayer: sort.OrderInLayer,
OverrideSorting: sort.OverrideSorting,
SortingLayer: sort.SortingLayer,
Transition: 1,
Enable: true,
};
}
_buttonComponent(...args) {
return UIBuilder._buttonComponent(...args);
}
static _sliderComponent(minVal = 0, maxVal = 1, value = 0, direction = 0, useHandle = true, useInteger = false, extra = {}) {
const fillPadding = tuple(extra.fill_padding, [10, 10, 10, 10]);
const handlePadding = tuple(extra.handle_padding, [0, 0, 0, 0]);
const handleSize = tuple(extra.handle_size, [50, 50]);
const sort = sortFields(extra);
return {
"@type": "MOD.Core.SliderComponent",
Direction: direction,
FillRectColor: extra.fill_color != null ? colorDict(extra.fill_color) : { r: 1.0, g: 1.0, b: 1.0, a: 1.0 },
FillRectImageRUID: { DataId: String(extra.fill_image_ruid ?? "") },
FillRectPadding: { left: Number(fillPadding[0]), right: Number(fillPadding[1]), top: Number(fillPadding[2]), bottom: Number(fillPadding[3]) },
HandleAreaPadding: { left: Number(handlePadding[0]), right: Number(handlePadding[1]), top: Number(handlePadding[2]), bottom: Number(handlePadding[3]) },
HandleColor: extra.handle_color != null ? colorDict(extra.handle_color) : { r: 1.0, g: 1.0, b: 1.0, a: 1.0 },
HandleImageRUID: { DataId: String(extra.handle_image_ruid ?? "") },
HandleSize: { x: Number(handleSize[0]), y: Number(handleSize[1]) },
IgnoreMapLayerCheck: sort.IgnoreMapLayerCheck,
MaxValue: Number(maxVal),
MinValue: Number(minVal),
OrderInLayer: sort.OrderInLayer,
OverrideSorting: sort.OverrideSorting,
SortingLayer: sort.SortingLayer,
UseHandle: useHandle,
UseIntegerValue: useInteger,
Value: Number(value),
Enable: true,
};
}
_sliderComponent(...args) {
return UIBuilder._sliderComponent(...args);
}
static _scrollLayoutComponent(layoutType = 1, spacing = 0, cellSize = [100, 100], useScroll = true, padding = [0, 0, 0, 0], extra = {}) {
const gridSpacing = tuple(extra.grid_spacing, [0, 0]);
const sort = sortFields(extra);
return {
"@type": "MOD.Core.ScrollLayoutGroupComponent",
CellSize: { x: Number(cellSize[0]), y: Number(cellSize[1]) },
ChildAlignment: Number(extra.child_alignment ?? 0),
Constraint: Number(extra.constraint ?? 0),
ConstraintCount: Number(extra.constraint_count ?? 1),
GridChildAlignment: Number(extra.grid_child_alignment ?? 0),
GridSpacing: { x: Number(gridSpacing[0]), y: Number(gridSpacing[1]) },
HorizontalScrollBarDirection: Number(extra.h_scroll_dir ?? 0),
IgnoreMapLayerCheck: sort.IgnoreMapLayerCheck,
OrderInLayer: sort.OrderInLayer,
OverrideSorting: sort.OverrideSorting,
Padding: { left: padding[0], right: padding[1], top: padding[2], bottom: padding[3] },
ReverseArrangement: Boolean(extra.reverse_arrangement ?? false),
ScrollBarBackgroundColor: extra.scroll_bar_bg_color != null ? colorDict(extra.scroll_bar_bg_color) : { r: 1.0, g: 1.0, b: 1.0, a: 0.4 },
ScrollBarBgImageRUID: { DataId: String(extra.scroll_bar_bg_ruid ?? "") },
ScrollBarHandleColor: extra.scroll_bar_handle_color != null ? colorDict(extra.scroll_bar_handle_color) : { r: 0.5, g: 0.5, b: 0.5, a: 1.0 },
ScrollBarHandleImageRUID: { DataId: String(extra.scroll_bar_handle_ruid ?? "") },
ScrollBarThickness: Number(extra.scroll_bar_thickness ?? 20.0),
ScrollBarVisible: Number(extra.scroll_bar_visible ?? 0),
SortingLayer: sort.SortingLayer,
Spacing: Number(spacing),
StartAxis: Number(extra.start_axis ?? 0),
StartCorner: Number(extra.start_corner ?? 0),
Type: layoutType,
UseScroll: useScroll,
VerticalScrollBarDirection: Number(extra.v_scroll_dir ?? 2),
Enable: true,
};
}
_scrollLayoutComponent(...args) {
return UIBuilder._scrollLayoutComponent(...args);
}
static _textInputComponent(placeholder = "", charLimit = 0, contentType = 0, lineType = 0, extra = {}) {
const sort = sortFields(extra);
return {
"@type": "MOD.Core.TextGUIRendererInputComponent",
AllowAutomaticTranslation: Boolean(extra.allow_auto_translation ?? true),
AutoClear: Boolean(extra.auto_clear ?? false),
CharacterLimit: charLimit,
ContentType: contentType,
IgnoreMapLayerCheck: sort.IgnoreMapLayerCheck,
IsLocalizationKey: Boolean(extra.is_localization_key ?? false),
LineType: lineType,
OrderInLayer: sort.OrderInLayer,
OverrideSorting: sort.OverrideSorting,
PlaceHolder: String(placeholder ?? ""),
PlaceHolderColor: extra.placeholder_color != null ? colorDict(extra.placeholder_color) : { r: 0.1953125, g: 0.1953125, b: 0.1953125, a: 0.5 },
SortingLayer: sort.SortingLayer,
Text: String(extra.text ?? ""),
Enable: true,
};
}
_textInputComponent(...args) {
return UIBuilder._textInputComponent(...args);
}
static _uiGroupComponent(defaultShow = true, groupOrder = 0, groupType = 1) {
return {
"@type": "MOD.Core.UIGroupComponent",
DefaultShow: Boolean(defaultShow),
GroupOrder: int32Field(groupOrder, "UIGroupComponent.GroupOrder"),
GroupType: int32Field(groupType, "UIGroupComponent.GroupType"),
Enable: true,
};
}
_uiGroupComponent(...args) {
return UIBuilder._uiGroupComponent(...args);
}
static _canvasGroupComponent(blocksRaycasts = true, groupAlpha = 1.0, interactable = true) {
return {
"@type": "MOD.Core.CanvasGroupComponent",
BlocksRaycasts: Boolean(blocksRaycasts),
GroupAlpha: Number(groupAlpha),
Interactable: Boolean(interactable),
Enable: true,
};
}
_canvasGroupComponent(...args) {
return UIBuilder._canvasGroupComponent(...args);
}
static _maskComponent(shape = 0, padding = [0, 0, 0, 0], softness = [0, 0]) {
return {
"@type": "MOD.Core.MaskComponent",
Shape: Number(shape),
Padding: { left: padding[0], right: padding[1], top: padding[2], bottom: padding[3] },
Softness: { x: Number(softness[0]), y: Number(softness[1]) },
Enable: true,
};
}
_maskComponent(...args) {
return UIBuilder._maskComponent(...args);
}
static _gridViewComponent(totalCount = 0, cellSize = [100, 100], fixedCount = 1, fixedType = 0, spacing = [0, 0], padding = [0, 0, 0, 0], useScroll = true, scrollBarVisible = 1, scrollBarThickness = 10.0, hScrollDir = 0, vScrollDir = 0, scrollBarBgColor = null, scrollBarHandleColor = null, scrollBarBgRuid = "", scrollBarHandleRuid = "") {
return {
"@type": "MOD.Core.GridViewComponent",
CellSize: { x: Number(cellSize[0]), y: Number(cellSize[1]) },
FixedCount: Number(fixedCount),
FixedType: Number(fixedType),
HorizontalScrollBarDirection: Number(hScrollDir),
Padding: { left: padding[0], right: padding[1], top: padding[2], bottom: padding[3] },
ScrollBarBackgroundColor: scrollBarBgColor != null ? colorDict(scrollBarBgColor) : { r: 1.0, g: 1.0, b: 1.0, a: 0.0 },
ScrollBarBackgroundImageRUID: { DataId: scrollBarBgRuid },
ScrollBarHandleColor: scrollBarHandleColor != null ? colorDict(scrollBarHandleColor) : { r: 0.725, g: 0.71, b: 0.698, a: 1.0 },
ScrollBarHandleImageRUID: { DataId: scrollBarHandleRuid },
ScrollBarThickness: Number(scrollBarThickness),
ScrollBarVisible: Number(scrollBarVisible),
Spacing: { x: Number(spacing[0]), y: Number(spacing[1]) },
TotalCount: Number(totalCount),
UseScroll: Boolean(useScroll),
VerticalScrollBarDirection: Number(vScrollDir),
Enable: true,
};
}
_gridViewComponent(...args) {
return UIBuilder._gridViewComponent(...args);
}
static _avatarRendererComponent(color = null, flipX = false, flipY = false, playRate = 1.0, preserveAvatar = 0, raycast = true, materialId = "") {
return {
"@type": "MOD.Core.AvatarGUIRendererComponent",
Color: colorDict(color),
FlipX: Boolean(flipX),
FlipY: Boolean(flipY),
MaterialId: materialId,
PlayRate: Number(playRate),
PreserveAvatar: Number(preserveAvatar),
RaycastTarget: Boolean(raycast),
Enable: true,
};
}
_avatarRendererComponent(...args) {
return UIBuilder._avatarRendererComponent(...args);
}
static _touchReceiveComponent() {
return { "@type": "MOD.Core.UITouchReceiveComponent", Enable: true };
}
_touchReceiveComponent() {
return UIBuilder._touchReceiveComponent();
}
static _skeletonRendererComponent(skeletonRuid = "", animations = null, skins = null, color = null, flipX = false, flipY = false, loop = true, playRate = 1.0, preserveMode = 0, raycast = true) {
return {
"@type": "MOD.Core.SkeletonGUIRendererComponent",
AnimationNames: animations ? [...animations] : [],
Color: colorDict(color),
FlipX: Boolean(flipX),
FlipY: Boolean(flipY),
Loop: Boolean(loop),
PlayRate: Number(playRate),
PreserveMode: Number(preserveMode),
RaycastTarget: Boolean(raycast),
SkeletonRUID: String(skeletonRuid),
SkinNames: skins ? [...skins] : [],
Enable: true,
};
}
_skeletonRendererComponent(...args) {
return UIBuilder._skeletonRendererComponent(...args);
}
static _areaParticleComponent(particleType = 0, areaSize = [100, 100], areaOffset = [0, 0], color = null, localScale = [1, 1], loop = true, playOnEnable = true, prewarm = false, autoRandomSeed = true, randomSeed = 0, playSpeed = 1.0, particleSize = 1.0, particleSpeed = 1.0, particleCount = 1.0, particleLifetime = 1.0) {
return {
"@type": "MOD.Core.UIAreaParticleComponent",
AreaOffset: { x: Number(areaOffset[0]), y: Number(areaOffset[1]) },
AreaSize: { x: Number(areaSize[0]), y: Number(areaSize[1]) },
AutoRandomSeed: Boolean(autoRandomSeed),
Color: color != null ? colorDict(color) : { r: 0.5, g: 0.25, b: 0.25, a: 1.0 },
IsEmitting: false,
LocalScale: { x: Number(localScale[0]), y: Number(localScale[1]) },
Loop: Boolean(loop),
ParticleCount: Number(particleCount),
ParticleLifeTime: Number(particleLifetime),
ParticleSize: Number(particleSize),
ParticleSpeed: Number(particleSpeed),
ParticleType: Number(particleType),
PlayOnEnable: Boolean(playOnEnable),
PlaySpeed: Number(playSpeed),
Prewarm: Boolean(prewarm),
RandomSeed: Number(randomSeed),
Enable: true,
};
}
_areaParticleComponent(...args) {
return UIBuilder._areaParticleComponent(...args);
}
static _basicParticleComponent(particleType = 0, color = null, localScale = [1, 1], loop = true, playOnEnable = true, prewarm = false, autoRandomSeed = true, randomSeed = 0, playSpeed = 1.0, particleSize = 1.0, particleSpeed = 1.0, particleCount = 1.0, particleLifetime = 1.0) {
return {
"@type": "MOD.Core.UIBasicParticleComponent",
AutoRandomSeed: Boolean(autoRandomSeed),
Color: color != null ? colorDict(color) : { r: 0.5, g: 0.25, b: 0.25, a: 1.0 },
IsEmitting: false,
LocalScale: { x: Number(localScale[0]), y: Number(localScale[1]) },
Loop: Boolean(loop),
ParticleCount: Number(particleCount),
ParticleLifeTime: Number(particleLifetime),
ParticleSize: Number(particleSize),
ParticleSpeed: Number(particleSpeed),
ParticleType: Number(particleType),
PlayOnEnable: Boolean(playOnEnable),
PlaySpeed: Number(playSpeed),
Prewarm: Boolean(prewarm),
RandomSeed: Number(randomSeed),
Enable: true,
};
}
_basicParticleComponent(...args) {
return UIBuilder._basicParticleComponent(...args);
}
static _spriteParticleComponent(particleType = 0, spriteRuid = "", applySpriteColor = false, localScale = [1, 1], loop = true, playOnEnable = true, prewarm = false, autoRandomSeed = true, randomSeed = 0, playSpeed = 1.0, particleSize = 1.0, particleSpeed = 1.0, particleCount = 1.0, particleLifetime = 1.0, color = null) {
return {
"@type": "MOD.Core.UISpriteParticleComponent",
ApplySpriteColor: Boolean(applySpriteColor),
AutoRandomSeed: Boolean(autoRandomSeed),
Color: color != null ? colorDict(color) : { r: 0.5, g: 0.25, b: 0.25, a: 1.0 },
IsEmitting: false,
LocalScale: { x: Number(localScale[0]), y: Number(localScale[1]) },
Loop: Boolean(loop),
ParticleCount: Number(particleCount),
ParticleLifeTime: Number(particleLifetime),
ParticleSize: Number(particleSize),
ParticleSpeed: Number(particleSpeed),
ParticleType: Number(particleType),
PlayOnEnable: Boolean(playOnEnable),
PlaySpeed: Number(playSpeed),
Prewarm: Boolean(prewarm),
RandomSeed: Number(randomSeed),
SpriteRUID: String(spriteRuid ?? ""),
Enable: true,
};
}
_spriteParticleComponent(...args) {
return UIBuilder._spriteParticleComponent(...args);
}
static _joystickComponent(dynamicStick = true, axis = 1, upArrow = 273, downArrow = 274, leftArrow = 276, rightArrow = 275) {
return {
"@type": "MOD.Core.JoystickComponent",
Axis: Number(axis),
DownArrow: Number(downArrow),
DynamicStick: Boolean(dynamicStick),
LeftArrow: Number(leftArrow),
RightArrow: Number(rightArrow),
UpArrow: Number(upArrow),
Enable: true,
};
}
_joystickComponent(...args) {
return UIBuilder._joystickComponent(...args);
}
static _softMaskComponent(invertMask = false, invertOutsides = false) {
return {
"@type": "MOD.Core.SoftMaskComponent",
InvertMask: Boolean(invertMask),
InvertOutsides: Boolean(invertOutsides),
Enable: true,
};
}
_softMaskComponent(...args) {
return UIBuilder._softMaskComponent(...args);
}
static _chatComponent(useChatBalloon = false, expand = true, useChatEmotion = true, chatEmotionDuration = 5.0, enableVoiceChat = true, hideWorldChatButton = false, messageAlignBottom = false) {
return {
"@type": "MOD.Core.ChatComponent",
ChatEmotionDuration: Number(chatEmotionDuration),
EnableVoiceChat: Boolean(enableVoiceChat),
Expand: Boolean(expand),
HideWorldChatButton: Boolean(hideWorldChatButton),
MessageAlignBottom: Boolean(messageAlignBottom),
UseChatBalloon: Boolean(useChatBalloon),
UseChatEmotion: Boolean(useChatEmotion),
Enable: true,
};
}
_chatComponent(...args) {
return UIBuilder._chatComponent(...args);
}
static _lineGuiRendererComponent(points = null, isFlexible = true, flexibility = 3.0, isSmooth = false, loop = false, materialId = "") {
const pointList = Array.isArray(points) ? points.map((point) => {
const pos = tuple(point.pos != null ? point.pos : point.position, [0, 0]);
const colorValue = point.color != null ? colorDict(point.color) : { r: 1.0, g: 1.0, b: 1.0, a: 1.0 };
const width = point.width != null ? Number(point.width) : 1.0;
return {
Position: { x: Number(pos[0]), y: Number(pos[1]) },
Color: colorValue,
Width: width,
};
}) : [];
return {
"@type": "MOD.Core.LineGUIRendererComponent",
Flexibility: Number(flexibility),
IsFlexible: Boolean(isFlexible),
IsSmooth: Boolean(isSmooth),
Loop: Boolean(loop),
MaterialId: String(materialId ?? ""),
Points: pointList,
Enable: true,
};
}
_lineGuiRendererComponent(...args) {
return UIBuilder._lineGuiRendererComponent(...args);
}
static _polygonGuiRendererComponent(points = null, color = null, useCustomUvs = false, uvs = null, materialId = "") {
const pointList = Array.isArray(points) ? points.map((point) => {
const arr = tuple(point, [0, 0]);
return { x: Number(arr[0]), y: Number(arr[1]) };
}) : [];
const uvList = Array.isArray(uvs) ? uvs.map((uv) => {
const arr = tuple(uv, [0, 0]);
return { x: Number(arr[0]), y: Number(arr[1]) };
}) : [];
return {
"@type": "MOD.Core.PolygonGUIRendererComponent",
Color: color != null ? colorDict(color) : { r: 1.0, g: 1.0, b: 1.0, a: 1.0 },
MaterialId: String(materialId ?? ""),
Points: pointList,
UseCustomUVs: Boolean(useCustomUvs),
UVs: uvList,
Enable: true,
};
}
_polygonGuiRendererComponent(...args) {
return UIBuilder._polygonGuiRendererComponent(...args);
}
getId(identifier) {
const idx = this._findIndex(identifier);
return idx >= 0 ? this.entities[idx].id : null;
}
lastId() {
return this._lastId;
}
_findIndex(identifier) {
const fullPath = this._normalizePath(identifier);
return this.entities.findIndex((entity) => this._entityJson(entity).path === fullPath);
}
find(identifier) {
const idx = this._findIndex(identifier);
return idx < 0 ? null : this.entities[idx];
}
hasComponent(identifier, compType) {
normalizeComponentName(compType);
const entity = this.find(identifier);
return entity != null && this._findComponent(entity, compType) != null;
}
getComponent(identifier, compType) {
normalizeComponentName(compType);
const entity = this.find(identifier);
return entity == null ? null : this._findComponent(entity, compType);
}
remove(identifier) {
const fullPath = this._normalizePath(identifier);
if (fullPath === this.root_path) throw new Error("Cannot remove root UI group entity");
const before = this.entities.length;
this.entities = this.entities.filter((entity) => {
const entityPath = this._entityJson(entity).path || "";
return entityPath !== fullPath && !entityPath.startsWith(`${fullPath}/`);
});
const removed = before - this.entities.length;
if (removed === 0) throw new Error(`UI entity not found: ${identifier}`);
console.log(` Removed: ${fullPath} (${removed} entities)`);
return this;
}
_add(name, compNames, entryId, modelId, components, enable = true, preserveExistingTransform = false, transformOptions = {}) {
const [fullPath, parentPath, entityName] = this._resolve(name);
const idx = this._findIndex(name);
let eid;
let displayOrder;
let action;
let existingJs = null;
let finalComponents = components;
if (idx >= 0) {
eid = this.entities[idx].id;
existingJs = this.entities[idx].jsonString;
displayOrder = existingJs.displayOrder;
action = "Updated";
const existingTransform = (existingJs["@components"] || []).find(
(component) => component["@type"] === "MOD.Core.UITransformComponent",
);
if (existingTransform && (preserveExistingTransform || hasExplicitTransformOptions(transformOptions))) {
finalComponents = (components || []).map((component) =>
component["@type"] === "MOD.Core.UITransformComponent"
? (preserveExistingTransform ? clone(existingTransform) : this._mergeUiTransform(existingTransform, transformOptions))
: component,
);
}
} else {
if (parentPath !== this.root_path && !this.entities.some((entity) => this._entityJson(entity).path === parentPath)) {
const parentRel = parentPath.slice(this.root_path.length).replace(/^\/+/, "");
throw new Error(
`Cannot add '${fullPath}': parent entity '${parentPath}' does not exist. ` +
`Create the parent container first (e.g. empty("${parentRel}") or panel("${parentRel}")) before adding nested children. ` +
`A nested child whose parent is missing becomes an orphan that the engine cannot mount correctly.`,
);
}
eid = crypto.randomUUID();
displayOrder = this._nextDisplayOrder(parentPath);
action = "Added";
}
const derivedNames = (finalComponents || []).map((component) => component["@type"]).filter(Boolean).join(",") || compNames;
const origin = existingJs && existingJs.origin ? clone(existingJs.origin) : {
type: "Model",
entry_id: entryId,
sub_entity_id: null,
root_entity_id: null,
replaced_model_id: null,
};
origin.entry_id = entryId;
const entity = {
id: eid,
path: fullPath,
componentNames: derivedNames,
jsonString: {
name: existingJs ? existingJs.name : entityName,
path: fullPath,
nameEditable: existingJs ? existingJs.nameEditable : true,
enable,
visible: existingJs ? existingJs.visible : true,
localize: existingJs ? existingJs.localize : true,
displayOrder,
pathConstraints: this._pathConstraints(fullPath),
revision: existingJs ? (existingJs.revision ?? 0) : 0,
origin,
modelId,
"@components": finalComponents,
"@version": 1,
},
};
if (idx >= 0) this.entities[idx] = entity;
else this.entities.push(entity);
console.log(` ${action}: ${name}`);
this._lastId = eid;
return this;
}
patch(identifier, options = {}) {
const idx = this._findIndex(identifier);
if (idx < 0) throw new Error(`UI entity not found: ${identifier}`);
const entity = this.entities[idx];
const js = this._entityJson(entity);
const transform = this._findComponent(entity, "MOD.Core.UITransformComponent");
if (transform && hasExplicitTransformOptions(options)) {
const rebuilt = this._mergeUiTransform(transform, options);
Object.keys(transform).forEach((key) => delete transform[key]);
Object.assign(transform, rebuilt);
}
if (options.enable != null) js.enable = Boolean(options.enable);
if (options.visible != null) js.visible = Boolean(options.visible);
if (options.localize != null) js.localize = Boolean(options.localize);
if (options.display_order != null) js.displayOrder = Number(options.display_order);
if (options.new_name) this.rename(identifier, options.new_name);
console.log(` Patched: ${js.path}`);
return this;
}
rename(identifier, newName) {
const idx = this._findIndex(identifier);
if (idx < 0) throw new Error(`UI entity not found: ${identifier}`);
const entity = this.entities[idx];
const js = this._entityJson(entity);
const oldPath = js.path;
if (oldPath === this.root_path) throw new Error("Cannot rename root UI group path");
const parent = oldPath.split("/").slice(0, -1).join("/");
const newPath = `${parent}/${newName}`;
for (const current of this.entities) {
const currentJs = this._entityJson(current);
const currentPath = currentJs.path || "";
if (currentPath === oldPath || currentPath.startsWith(`${oldPath}/`)) {
const suffix = currentPath.slice(oldPath.length);
const updated = newPath + suffix;
current.path = updated;
currentJs.path = updated;
currentJs.pathConstraints = this._pathConstraints(updated);
if (currentPath === oldPath) currentJs.name = newName;
}
}
console.log(` Renamed: ${oldPath} -> ${newPath}`);
return this;
}
upsertComponent(identifier, compType, compData = null) {
normalizeComponentName(compType);
const idx = this._findIndex(identifier);
if (idx < 0) throw new Error(`UI entity not found: ${identifier}`);
const entity = this.entities[idx];
const js = this._entityJson(entity);
const component = compData == null ? { "@type": compType, Enable: true } : clone(compData);
if (!component["@type"]) component["@type"] = compType;
const conflicts = MUTUALLY_EXCLUSIVE_COMPONENTS.get(component["@type"]);
if (conflicts) {
const before = (js["@components"] || []).length;
js["@components"] = (js["@components"] || []).filter((c) => !conflicts.includes(c["@type"]));
if (js["@components"].length !== before) {
console.log(` Dropped ${conflicts.join("/")} on ${js.name} (mutually exclusive with ${component["@type"]})`);
}
}
const current = this._findComponent(entity, compType);
if (current != null) {
Object.keys(current).forEach((key) => delete current[key]);
Object.assign(current, component);
this._refreshComponentNamesFromComponents(entity);
this._normalizeTextGuiRendererModelIdentity(entity);
console.log(` Replaced component ${compType} on ${js.name}`);
return this;
}
js["@components"] = js["@components"] || [];
js["@components"].push(component);
this._refreshComponentNamesFromComponents(entity);
this._normalizeTextGuiRendererModelIdentity(entity);
console.log(` Added component ${compType} to ${js.name}`);
return this;
}
addComponent(identifier, compType, compData = null) {
normalizeComponentName(compType);
const idx = this._findIndex(identifier);
if (idx < 0) throw new Error(`UI entity not found: ${identifier}`);
if (this._findComponent(this.entities[idx], compType) != null) {
throw new Error(`Component ${compType} already exists on ${identifier}; use upsertComponent to replace`);
}
return this.upsertComponent(identifier, compType, compData);
}
patchComponent(identifier, compType, updates) {
normalizeComponentName(compType);
const entity = this.find(identifier);
if (entity == null) throw new Error(`UI entity not found: ${identifier}`);
const component = this._findComponent(entity, compType);
if (component == null) throw new Error(`UI entity ${identifier} has no ${compType}`);
Object.assign(component, updates);
console.log(` Patched component ${compType} on ${this._entityJson(entity).name}`);
return this;
}
removeComponent(identifier, compType) {
normalizeComponentName(compType);
const idx = this._findIndex(identifier);
if (idx < 0) throw new Error(`UI entity not found: ${identifier}`);
if (compType === "MOD.Core.UITransformComponent") throw new Error("UITransformComponent cannot be removed from UI entities");
const entity = this.entities[idx];
const js = this._entityJson(entity);
if (this._findComponent(entity, compType) == null) throw new Error(`UI entity ${identifier} has no ${compType}`);
js["@components"] = (js["@components"] || []).filter((component) => component["@type"] !== compType);
this._refreshComponentNamesFromComponents(entity);
console.log(` Removed component ${compType} from ${js.name}`);
return this;
}
setComponentEnabled(identifier, compType, enabled) {
normalizeComponentName(compType);
const entity = this.find(identifier);
if (entity == null) throw new Error(`UI entity not found: ${identifier}`);
const component = this._findComponent(entity, compType);
if (component == null) throw new Error(`UI entity ${identifier} has no ${compType}`);
component.Enable = Boolean(enabled);
console.log(` Set ${compType}.Enable=${enabled} on ${this._entityJson(entity).name}`);
return this;
}
panel(name, options = {}) {
assertNoParentOption("panel", name, options);
const sort = _resolveSortOptions(options);
const components = [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [1920, 1080]), options.pivot ?? null),
this._spriteRenderer(options.color ?? null, options.alpha ?? null, options.raycast ?? false, options.fill_method ?? 0, options.sprite_type ?? null, options.image_ruid ?? null, { preserve_aspect: options.preserve_aspect ?? false, preserve_sprite: options.preserve_sprite, material_id: options.material_id ?? "", ...sort }),
];
const textComponent = this._textFromOptions(options);
if (textComponent) components.push(textComponent);
const componentNames = textComponent
? "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextGUIRendererComponent"
: "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent";
return this._add(name, componentNames, "UISprite", "uisprite", components, options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
empty(name, options = {}) {
assertNoParentOption("empty", name, options);
return this._add(name, "MOD.Core.UITransformComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [100, 100]), options.pivot ?? null),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
text(name, text = "", options = {}) {
assertNoParentOption("text", name, options);
const size = options.size ?? 24;
let rectSize = options.rect_size;
if (rectSize == null) rectSize = [Math.max(String(text).length * size, 400), size + 16];
const sort = _resolveSortOptions(options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextGUIRendererComponent", "UITextGUIRenderer", "uitextguirenderer", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), rectSize, options.pivot ?? null),
this._spriteRenderer(null, 0.0, false, 0, 0, "", sort),
this._textGuiRenderer(text, size, options.color ?? null, options.bold ?? false, options.alignment ?? 4, {
overflow: options.overflow ?? 0,
bestfit: options.bestfit ?? false,
min_size: options.min_size ?? 10,
max_size: options.max_size ?? null,
outline: options.outline ?? false,
outline_color: options.outline_color ?? null,
outline_width: options.outline_width ?? null,
use_constraint_x: options.use_constraint_x ?? false,
constraint_x: options.constraint_x ?? 100.0,
use_constraint_y: options.use_constraint_y ?? false,
constraint_y: options.constraint_y ?? 100.0,
...sort,
}),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
sprite(name, options = {}) {
assertNoParentOption("sprite", name, options);
const imageRuid = options.image_ruid != null ? options.image_ruid : this.default_ruid;
const sort = _resolveSortOptions(options);
const components = [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [100, 100]), options.pivot ?? null),
this._spriteRenderer(options.color ?? null, options.alpha ?? null, options.raycast ?? false, options.fill_method ?? 0, options.sprite_type ?? null, imageRuid, { preserve_aspect: options.preserve_aspect ?? false, preserve_sprite: options.preserve_sprite, material_id: options.material_id ?? "", ...sort }),
];
const textComponent = this._textFromOptions(options);
if (textComponent) components.push(textComponent);
const componentNames = textComponent
? "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextGUIRendererComponent"
: "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent";
return this._add(name, componentNames, "UISprite", "uisprite", components, options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
button(name, text = "", options = {}) {
assertNoParentOption("button", name, options);
const imageRuid = options.image_ruid != null ? options.image_ruid : this.default_ruid;
const sort = _resolveSortOptions(options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent,MOD.Core.TextGUIRendererComponent", "UIButton", "uibutton", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [200, 50]), options.pivot ?? null),
this._spriteRenderer(options.bg_color ?? null, options.alpha ?? null, true, 0, options.sprite_type ?? null, imageRuid, sort),
this._buttonComponent(sort),
this._textGuiRenderer(text, options.font_size ?? 24, options.color ?? "#FFFFFF", false, 4, sort),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
script(name, scriptName, options = {}) {
if (scriptName == null || typeof scriptName !== "string") {
throw new TypeError(
`UIBuilder.script(name, scriptName, options) requires a 3-arg form. ` +
`Use b.script("Controller", "script.MyController", { ...options }). ` +
`Do not pass { scripts: [...] } as the second argument.`
);
}
normalizeComponentName(scriptName);
if (options && Object.prototype.hasOwnProperty.call(options, "scripts")) {
throw new Error(
`UIBuilder.script() does not accept options.scripts. ` +
`Pass the script component type as the second argument: ` +
`b.script("Controller", "script.MyController", options).`
);
}
assertNoParentOption("script", name, options);
return this._add(name, `MOD.Core.UITransformComponent,${scriptName}`, "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "stretch", tuple(options.pos, [0, 0]), tuple(options.rect_size, [1920, 1080]), options.pivot ?? null),
{ "@type": scriptName, Enable: true },
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
slider(name, options = {}) {
assertNoParentOption("slider", name, options);
const imageRuid = options.image_ruid != null ? options.image_ruid : this.default_ruid;
const sort = _resolveSortOptions(options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.SliderComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [200, 30]), options.pivot ?? null),
this._spriteRenderer(options.bg_color ?? null, options.alpha ?? null, true, 0, options.sprite_type ?? null, imageRuid, sort),
this._sliderComponent(options.min_val ?? 0, options.max_val ?? 1, options.value ?? 0, options.direction ?? 0, options.use_handle ?? true, options.use_integer ?? false, { ...options, ...sort }),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
scrollLayout(name, options = {}) {
assertNoParentOption("scrollLayout", name, options);
const sort = _resolveSortOptions(options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.ScrollLayoutGroupComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [400, 600]), options.pivot ?? null),
this._scrollLayoutComponent(options.layout_type ?? 1, options.spacing ?? 0, tuple(options.cell_size, [100, 100]), options.use_scroll ?? true, tuple(options.padding, [0, 0, 0, 0]), { ...options, ...sort }),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
textInput(name, options = {}) {
assertNoParentOption("textInput", name, options);
const imageRuid = options.image_ruid != null ? options.image_ruid : this.default_ruid;
const sort = _resolveSortOptions(options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextGUIRendererComponent,MOD.Core.TextGUIRendererInputComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [300, 50]), options.pivot ?? null),
this._spriteRenderer(options.bg_color ?? null, options.alpha ?? null, true, 0, options.sprite_type ?? null, imageRuid, sort),
this._textGuiRenderer(String(options.text ?? ""), options.font_size ?? 24, options.color ?? "#FFFFFF", false, 4, sort),
this._textInputComponent(options.placeholder ?? "", options.char_limit ?? 0, options.content_type ?? 0, options.line_type ?? 0, { ...options, ...sort }),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
group(name, options = {}) {
assertNoParentOption("group", name, options);
const [fullPath] = this._resolve(name);
if (fullPath !== this.root_path) {
throw new Error(
`UIBuilder.group() creates only the .ui root UIGroup. ` +
`Nested UIGroup entities are not supported because they can fail to render correctly. ` +
`Use empty("${name}") or panel("${name}") for inner grouping.`,
);
}
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.UIGroupComponent,MOD.Core.CanvasGroupComponent", "UIGroup", "uigroup", [
this._uiTransform(options.anchor || "stretch", tuple(options.pos, [0, 0]), tuple(options.rect_size, [1920, 1080]), options.pivot ?? null),
this._uiGroupComponent(options.default_show ?? true, options.group_order ?? 0, options.group_type ?? 1),
this._canvasGroupComponent(options.blocks_raycasts ?? true, options.group_alpha ?? 1.0, options.interactable ?? true),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
mask(name, options = {}) {
assertNoParentOption("mask", name, options);
const imageRuid = options.image_ruid != null ? options.image_ruid : this.default_ruid;
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.MaskComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [200, 200]), options.pivot ?? null),
this._spriteRenderer(options.color ?? null, options.alpha ?? 0.0, false, 0, 0, imageRuid),
this._maskComponent(options.shape ?? 0, tuple(options.padding, [0, 0, 0, 0]), tuple(options.softness, [0, 0])),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
gridView(name, options = {}) {
assertNoParentOption("gridView", name, options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.GridViewComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [400, 600]), options.pivot ?? null),
this._gridViewComponent(options.total_count ?? 0, tuple(options.cell_size, [100, 100]), options.fixed_count ?? 1, options.fixed_type ?? 0, tuple(options.spacing, [0, 0]), tuple(options.padding, [0, 0, 0, 0]), options.use_scroll ?? true, options.scroll_bar_visible ?? 1, options.scroll_bar_thickness ?? 10.0),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
avatar(name, options = {}) {
assertNoParentOption("avatar", name, options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.AvatarGUIRendererComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [200, 300]), options.pivot ?? null),
this._avatarRendererComponent(options.color ?? null, options.flip_x ?? false, options.flip_y ?? false, options.play_rate ?? 1.0, options.preserve_avatar ?? 0, options.raycast ?? true, options.material_id ?? ""),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
touchReceive(name, options = {}) {
assertNoParentOption("touchReceive", name, options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.UITouchReceiveComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "stretch", tuple(options.pos, [0, 0]), tuple(options.rect_size, [1920, 1080]), options.pivot ?? null),
this._touchReceiveComponent(),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
skeleton(name, options = {}) {
assertNoParentOption("skeleton", name, options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.SkeletonGUIRendererComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [200, 200]), options.pivot ?? null),
this._skeletonRendererComponent(options.skeleton_ruid ?? "", options.animations ?? null, options.skins ?? null, options.color ?? null, options.flip_x ?? false, options.flip_y ?? false, options.loop ?? true, options.play_rate ?? 1.0, options.preserve_mode ?? 0, options.raycast ?? true),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
areaParticle(name, options = {}) {
assertNoParentOption("areaParticle", name, options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.UIAreaParticleComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [100, 100]), options.pivot ?? null),
this._areaParticleComponent(options.particle_type ?? 0, tuple(options.area_size, [100, 100]), tuple(options.area_offset, [0, 0]), options.color ?? null, tuple(options.local_scale, [1, 1]), options.loop ?? true, options.play_on_enable ?? true, options.prewarm ?? false, options.auto_random_seed ?? true, options.random_seed ?? 0, options.play_speed ?? 1.0, options.particle_size ?? 1.0, options.particle_speed ?? 1.0, options.particle_count ?? 1.0, options.particle_lifetime ?? 1.0),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
basicParticle(name, options = {}) {
assertNoParentOption("basicParticle", name, options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.UIBasicParticleComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [100, 100]), options.pivot ?? null),
this._basicParticleComponent(options.particle_type ?? 0, options.color ?? null, tuple(options.local_scale, [1, 1]), options.loop ?? true, options.play_on_enable ?? true, options.prewarm ?? false, options.auto_random_seed ?? true, options.random_seed ?? 0, options.play_speed ?? 1.0, options.particle_size ?? 1.0, options.particle_speed ?? 1.0, options.particle_count ?? 1.0, options.particle_lifetime ?? 1.0),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
spriteParticle(name, options = {}) {
assertNoParentOption("spriteParticle", name, options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.UISpriteParticleComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [100, 100]), options.pivot ?? null),
this._spriteParticleComponent(options.particle_type ?? 0, options.sprite_ruid ?? "", options.apply_sprite_color ?? false, tuple(options.local_scale, [1, 1]), options.loop ?? true, options.play_on_enable ?? true, options.prewarm ?? false, options.auto_random_seed ?? true, options.random_seed ?? 0, options.play_speed ?? 1.0, options.particle_size ?? 1.0, options.particle_speed ?? 1.0, options.particle_count ?? 1.0, options.particle_lifetime ?? 1.0, options.color ?? null),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
joystick(name, options = {}) {
assertNoParentOption("joystick", name, options);
const imageRuid = options.image_ruid != null ? options.image_ruid : this.default_ruid;
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.JoystickComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "bottom-left", tuple(options.pos, [200, 200]), tuple(options.rect_size, [300, 300]), options.pivot ?? null),
this._spriteRenderer(options.color ?? null, options.alpha ?? null, false, 0, options.sprite_type ?? null, imageRuid),
this._joystickComponent(options.dynamic_stick ?? true, options.axis ?? 1, options.up_arrow ?? 273, options.down_arrow ?? 274, options.left_arrow ?? 276, options.right_arrow ?? 275),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
softMask(name, options = {}) {
assertNoParentOption("softMask", name, options);
const imageRuid = options.image_ruid != null ? options.image_ruid : this.default_ruid;
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.SoftMaskComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [200, 200]), options.pivot ?? null),
this._spriteRenderer(options.color ?? null, options.alpha ?? 0.0, false, 0, 0, imageRuid),
this._softMaskComponent(options.invert_mask ?? false, options.invert_outsides ?? false),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
chat(name, options = {}) {
assertNoParentOption("chat", name, options);
const imageRuid = options.image_ruid != null ? options.image_ruid : this.default_ruid;
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ChatComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "bottom-left", tuple(options.pos, [200, 200]), tuple(options.rect_size, [400, 300]), options.pivot ?? null),
this._spriteRenderer(options.color ?? null, options.alpha ?? 0.0, true, 0, 0, imageRuid),
this._chatComponent(options.use_chat_balloon ?? false, options.expand ?? true, options.use_chat_emotion ?? true, options.chat_emotion_duration ?? 5.0, options.enable_voice_chat ?? true, options.hide_world_chat_button ?? false, options.message_align_bottom ?? false),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
line(name, options = {}) {
assertNoParentOption("line", name, options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.LineGUIRendererComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [100, 100]), options.pivot ?? null),
this._lineGuiRendererComponent(options.points ?? null, options.is_flexible ?? true, options.flexibility ?? 3.0, options.is_smooth ?? false, options.loop ?? false, options.material_id ?? ""),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
polygon(name, options = {}) {
assertNoParentOption("polygon", name, options);
return this._add(name, "MOD.Core.UITransformComponent,MOD.Core.PolygonGUIRendererComponent", "UIEmpty", "uiempty", [
this._uiTransform(options.anchor || "middle-center", tuple(options.pos, [0, 0]), tuple(options.rect_size, [100, 100]), options.pivot ?? null),
this._polygonGuiRendererComponent(options.points ?? null, options.color ?? null, options.use_custom_uvs ?? false, options.uvs ?? null, options.material_id ?? ""),
], options.enable ?? true, !hasExplicitTransformOptions(options), options);
}
listEntities() {
const result = [];
for (const entity of [...this.entities].sort((a, b) => String(this._entityJson(a).path || "").localeCompare(String(this._entityJson(b).path || "")))) {
const js = entity.jsonString;
const comps = (js["@components"] || []).map((component) => component["@type"]);
let kind = "?";
const model = js.modelId || "";
if (model === "uigroup") kind = "GROUP";
else if (model === "uibutton") kind = "BTN";
else if (model === "uitext" || model === "uitextguirenderer") kind = "TEXT";
else if (model === "uisprite") kind = "SPR";
else if (model === "uiempty") kind = "PANEL";
for (const component of comps) {
if (!KNOWN_COMPONENTS.has(component)) kind = "SCRIPT";
else if (component === "MOD.Core.UIGroupComponent" && kind !== "GROUP") kind = "GROUP";
else if ((component === "MOD.Core.TextComponent" || component === "MOD.Core.TextGUIRendererComponent") && kind === "?") kind = "TEXT";
else if (component === "MOD.Core.MaskComponent") kind = "MASK";
else if (component === "MOD.Core.SoftMaskComponent") kind = "MASK";
else if (component === "MOD.Core.GridViewComponent") kind = "GRID";
else if (component === "MOD.Core.AvatarGUIRendererComponent") kind = "AVATAR";
else if (component === "MOD.Core.UITouchReceiveComponent") kind = "TOUCH";
else if (component === "MOD.Core.SkeletonGUIRendererComponent") kind = "SKEL";
else if (component === "MOD.Core.UIAreaParticleComponent" || component === "MOD.Core.UIBasicParticleComponent" || component === "MOD.Core.UISpriteParticleComponent") kind = "PARTICLE";
else if (component === "MOD.Core.JoystickComponent") kind = "JOY";
else if (component === "MOD.Core.ChatComponent") kind = "CHAT";
else if (component === "MOD.Core.LineGUIRendererComponent") kind = "LINE";
else if (component === "MOD.Core.PolygonGUIRendererComponent") kind = "POLY";
}
let pos = [0, 0];
let size = [0, 0];
for (const component of js["@components"] || []) {
if (component["@type"] === "MOD.Core.UITransformComponent") {
const ap = component.anchoredPosition || {};
const rs = component.RectSize || {};
pos = [ap.x || 0, ap.y || 0];
size = [rs.x || 0, rs.y || 0];
}
}
const entityPath = js.path || "";
const depth = entityPath.startsWith(this.root_path) ? (entityPath.slice(this.root_path.length).match(/\//g) || []).length : 0;
result.push({ name: js.name || "", path: entityPath, depth, kind, pos, size, enable: js.enable ?? true });
}
return result;
}
printEntities() {
const items = this.listEntities();
for (const info of items) {
const indent = " ".repeat(info.depth);
const posStr = info.pos[0] !== 0 || info.pos[1] !== 0 ? `(${info.pos[0].toFixed(0)},${info.pos[1].toFixed(0)})` : "";
const sizeStr = `${Number(info.size[0]).toFixed(0)}x${Number(info.size[1]).toFixed(0)}`;
const enableStr = info.enable ? "" : " [disabled]";
console.log(` ${indent}${info.kind.padEnd(6)} ${info.name.padEnd(20)} ${posStr.padEnd(12)} ${sizeStr}${enableStr}`);
}
return items;
}
build() {
if (this._data != null) {
this._data.ContentProto.Entities = this.entities;
return this._data;
}
return {
Id: "",
GameId: "",
EntryKey: `ui://${this.root_uuid}`,
ContentType: "x-mod/ui",
Content: "",
Usage: 0,
UsePublish: 1,
UseService: 0,
CoreVersion: "26.7.0.0",
StudioVersion: "0.1.0.0",
DynamicLoading: 0,
ContentProto: { Use: "Binary", Entities: this.entities },
};
}
validate() {
const findings = [];
const data = this.build();
collectInvalidNumbers(data, "$", findings);
collectComponentScalarTypeIssues(data, findings);
return findings;
}
write(filepath, options = {}) {
const lint = options.lint ?? true;
const strict = options.strict ?? true;
const lintVerbose = options.lint_verbose ?? false;
const findings = this.validate();
const errors = findings.filter((f) => f.severity === "error");
if (errors.length) {
throw new TypeError(`UI validation failed: ${errors.map((f) => `${f.rule}: ${f.message}`).join("; ")}`);
}
let bindPlan = null;
if (options.bind != null) {
const [mluaPath, props] = UIBuilder._normalizeBindArg(options.bind);
bindPlan = this._prepareBindings(mluaPath, props);
}
const data = this.build();
fs.mkdirSync(path.dirname(filepath), { recursive: true });
fs.writeFileSync(filepath, `${JSON.stringify(data, null, 2)}\n`, "utf8");
console.log(`Written ${this.entities.length} entities to ${filepath}`);
if (lint) {
runUiLint(filepath, strict, lintVerbose);
}
if (bindPlan) {
fs.writeFileSync(bindPlan.mluaPath, bindPlan.updatedSrc, "utf8");
console.log(` Bound ${Object.keys(bindPlan.resolved).length} property/properties in ${bindPlan.mluaPath}`);
}
return this;
}
static _normalizeBindArg(bind) {
if (Array.isArray(bind) && bind.length === 2) return [bind[0], bind[1]];
if (bind && typeof bind === "object") {
if (bind.mlua == null || bind.props == null) {
throw new Error(`bind dict must contain 'mlua' (path) and 'props' (mapping). Got keys=${Object.keys(bind)}`);
}
return [bind.mlua, bind.props];
}
throw new TypeError(`bind must be a dict {'mlua': ..., 'props': {...}} or a (mlua_path, props) tuple. Got ${typeof bind}`);
}
_prepareBindings(mluaPath, props) {
if (!fs.existsSync(mluaPath) || !fs.statSync(mluaPath).isFile()) throw new Error(`injectBindings: target .mlua not found: ${mluaPath}`);
if (path.extname(mluaPath) !== ".mlua") throw new Error(`injectBindings: target must be a .mlua file: ${mluaPath}`);
const resolved = {};
const missingEntities = [];
for (const [propName, entityRef] of Object.entries(props)) {
const uid = this.getId(entityRef);
if (uid == null) missingEntities.push(`${propName} -> ${entityRef}`);
else resolved[propName] = uid;
}
if (missingEntities.length) throw new Error(`injectBindings: entity not found for ${missingEntities.join(", ")}`);
const original = fs.readFileSync(mluaPath, "utf8");
const { src: updatedSrc, counts } = applyBindings(original, resolved);
const missingProps = [];
const duplicatedProps = [];
for (const propName of Object.keys(resolved)) {
const count = counts[propName] || 0;
if (count === 0) missingProps.push(propName);
else if (count > 1) duplicatedProps.push(`${propName} (${count}x)`);
}
if (missingProps.length) throw new Error(`injectBindings: property not found in ${mluaPath}: ${missingProps.join(", ")}`);
if (duplicatedProps.length) throw new Error(`injectBindings: property declared multiple times in ${mluaPath}: ${duplicatedProps.join(", ")}`);
return { mluaPath, resolved, updatedSrc };
}
injectBindings(mluaPath, props) {
const plan = this._prepareBindings(mluaPath, props);
fs.writeFileSync(plan.mluaPath, plan.updatedSrc, "utf8");
console.log(` Bound ${Object.keys(plan.resolved).length} property/properties in ${plan.mluaPath}`);
return this;
}
}
function escapeRegExp(value) {
return String(value).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}
function findLineCommentStart(line) {
let inDouble = false;
let inSingle = false;
for (let i = 0; i < line.length; i++) {
const c = line[i];
const prev = i > 0 ? line[i - 1] : "";
if (!inSingle && c === '"' && prev !== "\\") inDouble = !inDouble;
else if (!inDouble && c === "'" && prev !== "\\") inSingle = !inSingle;
else if (!inDouble && !inSingle && c === "-" && line[i + 1] === "-") return i;
}
return -1;
}
function replacePropertyDecls(segment, resolved, counts) {
const commentIdx = findLineCommentStart(segment);
const code = commentIdx >= 0 ? segment.slice(0, commentIdx) : segment;
const comment = commentIdx >= 0 ? segment.slice(commentIdx) : "";
let updated = code;
for (const [propName, uid] of Object.entries(resolved)) {
const pattern = new RegExp(
`^(\\s*property\\s+[A-Za-z_][A-Za-z0-9_.]*\\s+${escapeRegExp(propName)}\\b\\s*=\\s*)"[^"\\r\\n]*"`,
);
if (pattern.test(updated)) {
counts[propName] = (counts[propName] || 0) + 1;
updated = updated.replace(pattern, (_m, prefix) => `${prefix}"${uid}"`);
}
}
return updated + comment;
}
function applyBindings(src, resolved) {
const lineSep = src.includes("\r\n") ? "\r\n" : "\n";
const lines = src.split(/\r?\n/);
const counts = {};
let inBlockComment = false;
const out = lines.map((rawLine) => {
if (inBlockComment) {
const closeIdx = rawLine.indexOf("]]");
if (closeIdx < 0) return rawLine;
inBlockComment = false;
const after = rawLine.slice(closeIdx + 2);
return rawLine.slice(0, closeIdx + 2) + replacePropertyDecls(after, resolved, counts);
}
const blockStart = rawLine.indexOf("--[[");
if (blockStart < 0) return replacePropertyDecls(rawLine, resolved, counts);
const prefix = rawLine.slice(0, blockStart);
const replacedPrefix = replacePropertyDecls(prefix, resolved, counts);
const blockEnd = rawLine.indexOf("]]", blockStart + 4);
if (blockEnd < 0) {
inBlockComment = true;
return replacedPrefix + rawLine.slice(blockStart);
}
const after = rawLine.slice(blockEnd + 2);
return replacedPrefix + rawLine.slice(blockStart, blockEnd + 2) + replacePropertyDecls(after, resolved, counts);
});
return { src: out.join(lineSep), counts };
}
function runUiLint(filepath, strict, verbose) {
const lintPath = path.join(__dirname, "ui_lint.cjs");
if (!fs.existsSync(lintPath)) {
console.log(`WARN ui_lint.cjs not found at ${__dirname} - skipped lint`);
return;
}
let lintModule;
try {
lintModule = require(lintPath);
} catch (err) {
console.log(`WARN ui_lint import failed (${err.message}) - skipped`);
return;
}
const findings = lintModule.lintUiFile(filepath);
const errors = findings.filter((finding) => finding.severity === lintModule.SEVERITY_ERROR);
const warns = findings.filter((finding) => finding.severity === lintModule.SEVERITY_WARN);
if (verbose) findings.forEach((finding) => console.log(formatFinding(finding)));
else errors.forEach((finding) => console.log(formatFinding(finding)));
if (errors.length) {
const msg = `ui_lint: ${errors.length} error(s), ${warns.length} warning(s) in ${filepath}`;
if (strict) throw new Error(msg);
console.log(`x ${msg}`);
return;
}
if (warns.length) {
const extra = verbose ? "" : " (pass lint_verbose=true to see)";
console.log(`WARN ui_lint: ${warns.length} warning(s)${extra}`);
} else {
console.log("OK ui_lint: clean");
}
}
function formatFinding(finding) {
const sev = finding.severity.toUpperCase().padEnd(7);
return `[${sev}] ${finding.rule} ${finding.path}\n ${finding.message}${finding.hint ? `\n hint: ${finding.hint}` : ""}`;
}
module.exports = {
UIBuilder,
DEFAULT_SPRITE_RUID,
ANCHOR_DEFAULT_PIVOT,
ANCHOR_PRESETS,
hexToRgba,
colorDict,
};
scripts/preview_ui_layout.cjs
"use strict";
const fs = require("fs");
const path = require("path");
const CANVAS_W = 1920;
const CANVAS_H = 1080;
const GRID_W = 96;
const GRID_H = 32;
const MSW_CORE_UI = { x: 800, y: 440, w: 160, h: 100, label: "[MSW UI]" };
const ANCHOR_NAMES = new Map([
["0,0,1,1", "stretch"],
["0.5,0.5,0.5,0.5", "mid-ctr"],
["0.5,1,0.5,1", "top-ctr"],
["0,1,0,1", "top-L"],
["1,1,1,1", "top-R"],
["0.5,0,0.5,0", "bot-ctr"],
["0,0,0,0", "bot-L"],
["1,0,1,0", "bot-R"],
]);
function num(value, fallback = 0) {
return Number(value ?? fallback);
}
function parseUiFile(filepath) {
const data = JSON.parse(fs.readFileSync(filepath, "utf8"));
const entities = data.ContentProto.Entities;
const entityMap = new Map();
for (const e of entities) {
const js = typeof e.jsonString === "string" ? JSON.parse(e.jsonString) : e.jsonString;
const entityPath = js.path || "";
const name = js.name;
const enabled = js.enable ?? true;
const comps = js["@components"] || [];
const ut = comps.find((c) => c["@type"] === "MOD.Core.UITransformComponent");
if (!ut) continue;
const amin = ut.AnchorsMin || {};
const amax = ut.AnchorsMax || {};
const pos = ut.anchoredPosition || {};
const rect = ut.RectSize || {};
const aminX = num(amin.x, 0.5);
const aminY = num(amin.y, 0.5);
const amaxX = num(amax.x, 0.5);
const amaxY = num(amax.y, 0.5);
const px = num(pos.x);
const py = num(pos.y);
const rw = num(rect.x);
const rh = num(rect.y);
const anchorName = ANCHOR_NAMES.get([aminX, aminY, amaxX, amaxY].join(",")) || "custom";
const compTypes = comps.map((c) => c["@type"] || "");
const hasText = compTypes.some((t) => t.includes("TextComponent") || t.includes("TextGUIRendererComponent"));
const hasBtn = compTypes.some((t) => t.includes("ButtonComponent"));
const hasSprite = compTypes.some((t) => t.includes("SpriteGUIRenderer"));
const hasScript = compTypes.some((t) => t.includes("script."));
const tc = comps.find((c) => c["@type"] === "MOD.Core.TextGUIRendererComponent" || c["@type"] === "MOD.Core.TextComponent") || {};
const kind = hasScript ? "script" : hasBtn ? "btn" : hasText ? "text" : hasSprite ? "sprite" : "panel";
entityMap.set(entityPath, {
name, path: entityPath, enabled, anchorName, aminX, aminY, amaxX, amaxY,
px, py, rw, rh, kind, text: tc.Text || "", fontSize: num(tc.FontSize),
});
}
const worldCache = new Map();
function getWorldPos(entityPath) {
if (worldCache.has(entityPath)) return worldCache.get(entityPath);
const info = entityMap.get(entityPath);
if (!info) {
worldCache.set(entityPath, [0, 0]);
return [0, 0];
}
const idx = entityPath.lastIndexOf("/");
const parentPath = idx >= 0 ? entityPath.slice(0, idx) : "";
const parentInfo = entityMap.get(parentPath);
const isStretch = info.aminX === 0 && info.aminY === 0 && info.amaxX === 1 && info.amaxY === 1;
let wx;
let wy;
if (isStretch) {
const [pwx, pwy] = parentInfo ? getWorldPos(parentPath) : [0, 0];
wx = pwx + info.px;
wy = pwy + info.py;
} else {
const [pwx, pwy] = parentInfo ? getWorldPos(parentPath) : [0, 0];
const parentW = parentInfo ? parentInfo.rw : CANVAS_W;
const parentH = parentInfo ? parentInfo.rh : CANVAS_H;
wx = pwx + (info.aminX - 0.5) * parentW + info.px;
wy = pwy + (info.aminY - 0.5) * parentH + info.py;
}
worldCache.set(entityPath, [wx, wy]);
return [wx, wy];
}
const items = [];
for (const [entityPath, info] of entityMap.entries()) {
if (!info.enabled) continue;
const [wx, wy] = getWorldPos(entityPath);
let rw = info.rw;
let rh = info.rh;
if (info.anchorName === "stretch" && rw === 0 && rh === 0) {
const idx = entityPath.lastIndexOf("/");
const parentInfo = entityMap.get(idx >= 0 ? entityPath.slice(0, idx) : "");
rw = parentInfo ? parentInfo.rw : CANVAS_W;
rh = parentInfo ? parentInfo.rh : CANVAS_H;
}
items.push({ name: info.name, anchor: info.anchorName, cx: wx, cy: wy, w: rw, h: rh, kind: info.kind, text: info.text, fontSize: info.fontSize });
}
return items;
}
function toGrid(cx, cy, w, h) {
const gx = Math.trunc((cx + CANVAS_W / 2) / CANVAS_W * GRID_W);
const gy = Math.trunc((CANVAS_H / 2 - cy) / CANVAS_H * GRID_H);
const gw = Math.max(1, Math.trunc(w / CANVAS_W * GRID_W));
const gh = Math.max(1, Math.trunc(h / CANVAS_H * GRID_H));
return [gx, gy, gw, gh];
}
function renderAscii(items, title = "") {
const grid = Array.from({ length: GRID_H }, () => Array(GRID_W).fill(" "));
for (let x = 0; x < GRID_W; x += 1) {
grid[0][x] = "-";
grid[GRID_H - 1][x] = "-";
}
for (let y = 0; y < GRID_H; y += 1) {
grid[y][0] = "|";
grid[y][GRID_W - 1] = "|";
}
grid[0][0] = "+";
grid[0][GRID_W - 1] = "+";
grid[GRID_H - 1][0] = "+";
grid[GRID_H - 1][GRID_W - 1] = "+";
const [mgx, mgy, mgw, mgh] = toGrid(MSW_CORE_UI.x, MSW_CORE_UI.y, MSW_CORE_UI.w, MSW_CORE_UI.h);
for (let dy = 0; dy < mgh; dy += 1) {
for (let dx = 0; dx < mgw; dx += 1) {
const ny = mgy + dy;
const nx = mgx + dx;
if (ny > 0 && ny < GRID_H - 1 && nx > 0 && nx < GRID_W - 1) grid[ny][nx] = "#";
}
}
const drawn = [];
for (const item of items) {
if (["panel", "script"].includes(item.kind)) continue;
if (item.w >= CANVAS_W && item.h >= CANVAS_H) continue;
const [gx, gy] = toGrid(item.cx, item.cy, item.w, item.h);
const label = item.name.slice(0, 12);
if (gy > 0 && gy < GRID_H - 1 && gx > 0 && gx < GRID_W - 1) {
const startX = Math.max(1, gx - Math.trunc(label.length / 2));
for (let i = 0; i < label.length; i += 1) {
const nx = startX + i;
if (nx > 0 && nx < GRID_W - 1) grid[gy][nx] = label[i];
}
drawn.push(item);
}
}
console.log(`\n${"=".repeat(GRID_W)}`);
console.log(` ${title} (1920x1080, origin=center)`);
console.log("=".repeat(GRID_W));
grid.forEach((row) => console.log(row.join("")));
console.log(`\n${"-".repeat(70)}`);
console.log(`${"Name".padEnd(20)} ${"Anchor".padEnd(10)} ${"Pos".padStart(16)} ${"Size".padStart(12)} ${"Kind".padEnd(6)} ${"Font".padStart(4)}`);
console.log("-".repeat(70));
for (const item of drawn) {
const posStr = `(${item.cx.toFixed(0).padStart(7)},${item.cy.toFixed(0).padStart(7)})`;
const sizeStr = `${item.w.toFixed(0)}x${item.h.toFixed(0)}`;
const fontStr = item.fontSize ? String(item.fontSize) : "";
let warn = "";
if (item.kind === "btn" && (item.w < 80 || item.h < 80)) warn = " !! btn<80px";
if (item.fontSize && item.fontSize < 18) warn += " !! font<18";
if (item.fontSize && item.fontSize < 24) warn += " !! font<24(mobile)";
if (item.cx > 700 && item.cy > 350) warn += " !! MSW UI zone";
console.log(`${item.name.padEnd(20)} ${item.anchor.padEnd(10)} ${posStr.padStart(16)} ${sizeStr.padStart(12)} ${item.kind.padEnd(6)} ${fontStr.padStart(4)}${warn}`);
}
console.log("-".repeat(70));
}
function main(argv = process.argv.slice(2)) {
const files = argv.length ? argv : [path.join("ui", "DefaultGroup.ui"), path.join("ui", "PopupGroup.ui")];
for (const file of files) {
if (!fs.existsSync(file)) {
console.log(`File not found: ${file}`);
continue;
}
renderAscii(parseUiFile(file), path.basename(file));
}
return 0;
}
if (require.main === module) {
try {
process.exitCode = main();
} catch (err) {
console.error(`ERROR: ${err.message}`);
process.exitCode = 2;
}
}
module.exports = { parseUiFile, renderAscii, main };
scripts/ui_lint.cjs
"use strict";
const fs = require("fs");
const SEVERITY_ERROR = "error";
const SEVERITY_WARN = "warning";
const SEVERITY_INFO = "info";
const CANVAS_W = 1920.0;
const CANVAS_H = 1080.0;
const CANVAS_RECT = [-CANVAS_W / 2, -CANVAS_H / 2, CANVAS_W / 2, CANVAS_H / 2];
const PC_RESERVED_TL_W = 260.0;
const PC_RESERVED_TL_H = 170.0;
const PC_RESERVED_TR_W = 220.0;
const PC_RESERVED_TR_H = 130.0;
const PC_PLATFORMS = new Set([1, 255]);
const OVERFLOW_TOL = 1.0;
const MIRROR_SUFFIXES = [["Left", "Right"], ["left", "right"]];
// L026 sliced-sprite border clash. A Sliced (9-slice) sprite paints a fixed-thickness
// decorative border ring just inside its rect edges. The border thickness lives in the
// sprite ASSET (border_left/right/top/bottom px), not in the .ui, so the lint cannot read
// it offline. When the caller supplies a border map (RUID -> {left,bottom,right,top} px,
// e.g. pulled from resource metadata) the rule reports sibling sliced frames whose border
// rings actually overlap (stacked double frame / muddy seam). With no border map — or for
// any sprite whose RUID is absent from it — border is simply not considered and the rule
// stays silent. Only Type=Sliced sprites are judged (the border renders only in Sliced
// mode); text/button entities are left to L023.
const SLICE_IMAGE_TYPE = 1; // ImageType.Sliced — border ring only renders in this mode
const SLICE_ALPHA_MIN = 0.1; // below this the sprite is effectively invisible
function finding(rule, severity, path, message, hint = "") {
return { rule, severity, path, message, hint };
}
function formatFinding(f) {
const sev = String(f.severity).toUpperCase().padEnd(7);
return `[${sev}] ${f.rule} ${f.path}\n ${f.message}${f.hint ? `\n hint: ${f.hint}` : ""}`;
}
function components(entity) {
return entity?.jsonString?.["@components"] || [];
}
function findComp(entity, compType) {
return components(entity).find((c) => c["@type"] === compType) || null;
}
function entityPath(entity) {
return entity?.jsonString?.path || entity?.path || "?";
}
function xy(value, fallback = 0.0) {
const v = value && typeof value === "object" ? value : {};
return [Number(v.x ?? fallback), Number(v.y ?? fallback)];
}
function anchorKey(mn, mx) {
const stretchX = mn[0] !== mx[0];
const stretchY = mn[1] !== mx[1];
if (stretchX && stretchY) return mn[0] === 0 && mn[1] === 0 && mx[0] === 1 && mx[1] === 1 ? "stretch" : "stretch-custom";
if (stretchX) {
if (mn[1] === 1) return "stretch-top";
if (mn[1] === 0) return "stretch-bottom";
if (mn[1] === 0.5) return "stretch-middle";
return "stretch-horizontal";
}
if (stretchY) {
if (mn[0] === 0) return "stretch-left";
if (mn[0] === 1) return "stretch-right";
if (mn[0] === 0.5) return "stretch-center";
return "stretch-vertical";
}
const yName = new Map([[1, "top"], [0.5, "middle"], [0, "bottom"]]).get(mn[1]) || `y${mn[1]}`;
const xName = new Map([[0, "left"], [0.5, "center"], [1, "right"]]).get(mn[0]) || `x${mn[0]}`;
return `${yName}-${xName}`;
}
function parentPath(p) {
if (!p || p === "/" || p === "?") return null;
const idx = p.lastIndexOf("/");
return idx <= 0 ? null : p.slice(0, idx);
}
function ruleL001L002L010(entity, isRoot) {
const out = [];
const path = entityPath(entity);
if (!findComp(entity, "MOD.Core.UITransformComponent")) {
out.push(finding("L001", SEVERITY_ERROR, path, "UI entity is missing UITransformComponent", "Every UI entity must have UITransformComponent attached."));
}
if (isRoot) {
if (!findComp(entity, "MOD.Core.UIGroupComponent")) {
out.push(finding("L002", SEVERITY_ERROR, path, "Root entity missing UIGroupComponent", "Root of a .ui file needs UITransform + UIGroup + CanvasGroup."));
}
if (!findComp(entity, "MOD.Core.CanvasGroupComponent")) {
out.push(finding("L002", SEVERITY_WARN, path, "Root entity missing CanvasGroupComponent", "CanvasGroup is required for fade/interactable control on the group."));
}
}
const declared = String(entity.componentNames || "").split(",").filter(Boolean);
const actual = components(entity).map((c) => c["@type"]).filter(Boolean);
if (declared.length && !sameSet(declared, actual)) {
out.push(finding("L010", SEVERITY_WARN, path, "componentNames string out of sync with @components array", `declared=${JSON.stringify(declared)} actual=${JSON.stringify(actual)}`));
}
return out;
}
function sameSet(a, b) {
const as = new Set(a);
const bs = new Set(b);
if (as.size !== bs.size) return false;
return [...as].every((x) => bs.has(x));
}
function ruleL003L004L005(entity) {
const out = [];
const ut = findComp(entity, "MOD.Core.UITransformComponent");
if (!ut) return out;
const path = entityPath(entity);
const mn = xy(ut.AnchorsMin);
const mx = xy(ut.AnchorsMax);
const anchor = anchorKey(mn, mx);
const stretchX = mn[0] !== mx[0];
const stretchY = mn[1] !== mx[1];
const ap = xy(ut.anchoredPosition);
const rs = xy(ut.RectSize);
if (stretchX && Math.abs(ap[0]) > 0.01) out.push(finding("L004", SEVERITY_WARN, path, `anchor='${anchor}' is stretched on X but anchoredPosition.x=${ap[0].toFixed(1)}`, "Stretched axis ignores anchoredPosition; use OffsetMin/OffsetMax instead."));
if (stretchY && Math.abs(ap[1]) > 0.01) out.push(finding("L004", SEVERITY_WARN, path, `anchor='${anchor}' is stretched on Y but anchoredPosition.y=${ap[1].toFixed(1)}`, "Stretched axis ignores anchoredPosition; use OffsetMin/OffsetMax instead."));
const pivot = xy(ut.Pivot, 0.5);
if (!stretchX && !stretchY && Math.abs(pivot[0] - 0.5) < 0.01 && Math.abs(pivot[1] - 0.5) < 0.01) {
if (mn[0] === 0 && rs[0] > 0 && ap[0] > 0 && ap[0] < rs[0] / 2) out.push(finding("L005", SEVERITY_WARN, path, `left-anchored entity may be half-clipped: pos.x=${ap[0].toFixed(0)} < size.x/2=${(rs[0] / 2).toFixed(0)}`, "Edge placement formula: pos = +/- (margin + size/2)"));
if (mn[0] === 1 && rs[0] > 0 && ap[0] > -rs[0] / 2 && ap[0] < 0) out.push(finding("L005", SEVERITY_WARN, path, `right-anchored entity may be half-clipped: |pos.x|=${Math.abs(ap[0]).toFixed(0)} < size.x/2=${(rs[0] / 2).toFixed(0)}`, "Edge placement formula: pos = +/- (margin + size/2)"));
if (mn[1] === 1 && rs[1] > 0 && ap[1] > -rs[1] / 2 && ap[1] < 0) out.push(finding("L005", SEVERITY_WARN, path, `top-anchored entity may be half-clipped: |pos.y|=${Math.abs(ap[1]).toFixed(0)} < size.y/2=${(rs[1] / 2).toFixed(0)}`, "Edge placement formula: pos = +/- (margin + size/2)"));
if (mn[1] === 0 && rs[1] > 0 && ap[1] > 0 && ap[1] < rs[1] / 2) out.push(finding("L005", SEVERITY_WARN, path, `bottom-anchored entity may be half-clipped: pos.y=${ap[1].toFixed(0)} < size.y/2=${(rs[1] / 2).toFixed(0)}`, "Edge placement formula: pos = +/- (margin + size/2)"));
}
if (Math.abs(pivot[0] - 0.5) > 0.01 || Math.abs(pivot[1] - 0.5) > 0.01) {
out.push(finding("L011", SEVERITY_INFO, path, `Pivot=(${pivot[0].toFixed(2)},${pivot[1].toFixed(2)}) differs from default (0.5, 0.5)`, "Pivot affects rotation/scale origin and anchoredPosition reference point."));
}
return out;
}
const ALIGN_NAMES = {
0: "UpperLeft", 1: "UpperCenter", 2: "UpperRight",
3: "MiddleLeft", 4: "MiddleCenter", 5: "MiddleRight",
6: "LowerLeft", 7: "LowerCenter", 8: "LowerRight",
};
const TEXT_GUI_H_ALIGN_NAMES = {
1: "Left",
2: "Center",
4: "Right",
8: "Justified",
16: "Flush",
32: "Geometry",
};
const TEXT_GUI_V_ALIGN_NAMES = {
256: "Top",
512: "Middle",
1024: "Bottom",
2048: "Baseline",
4096: "Geometry",
8192: "Capline",
};
function hasTextGuiHAlignValue(value) {
return Object.prototype.hasOwnProperty.call(TEXT_GUI_H_ALIGN_NAMES, value);
}
function hasTextGuiVAlignValue(value) {
return Object.prototype.hasOwnProperty.call(TEXT_GUI_V_ALIGN_NAMES, value);
}
function alignH(a) {
return [0, 3, 6].includes(a) ? "L" : [2, 5, 8].includes(a) ? "R" : "C";
}
function alignV(a) {
return [0, 1, 2].includes(a) ? "U" : [6, 7, 8].includes(a) ? "Lo" : "M";
}
function textGuiAlignH(a) {
if (a === 1) return "L";
if (a === 4) return "R";
if (a === 2 || a === 8) return "C";
return null;
}
function textGuiAlignV(a) {
if (a === 256) return "U";
if (a === 1024) return "Lo";
if (a === 512) return "M";
return null;
}
function parseIntegerValue(value) {
const n = typeof value === "number" ? value : Number(value);
return Number.isInteger(n) ? n : null;
}
function anchorH(mn, mx) {
if (mn[0] !== mx[0]) return null;
if (mn[0] === 0) return "L";
if (mn[0] === 1) return "R";
if (mn[0] === 0.5) return "C";
return null;
}
function anchorV(mn, mx) {
if (mn[1] !== mx[1]) return null;
if (mn[1] === 1) return "U";
if (mn[1] === 0) return "Lo";
if (mn[1] === 0.5) return "M";
return null;
}
function ruleL006(entity) {
const out = [];
const tc = findComp(entity, "MOD.Core.TextComponent");
const tgc = findComp(entity, "MOD.Core.TextGUIRendererComponent");
if (!tc && !tgc) return out;
if (tc) out.push(...ruleL006LegacyText(entity, tc));
if (tgc) out.push(...ruleL006TextGuiRenderer(entity, tgc));
return out;
}
function ruleL006LegacyText(entity, tc) {
const out = [];
const alignment = Number.parseInt(tc.Alignment ?? 0, 10);
const path = entityPath(entity);
const aname = ALIGN_NAMES[alignment] || String(alignment);
const ut = findComp(entity, "MOD.Core.UITransformComponent");
if (!ut) {
if (alignment === 0) out.push(finding("L006", SEVERITY_WARN, path, "TextComponent.Alignment == UpperLeft(0) (default)", "Explicit alignment recommended. Center=4, MiddleLeft=3, MiddleRight=5."));
return out;
}
const mn = xy(ut.AnchorsMin);
const mx = xy(ut.AnchorsMax);
const ah = anchorH(mn, mx);
const av = anchorV(mn, mx);
const h = alignH(alignment);
const v = alignV(alignment);
if ((ah === "L" && h === "R") || (ah === "R" && h === "L")) {
out.push(finding("L006", SEVERITY_WARN, path, `Alignment=${aname}(${alignment}) opposes horizontal anchor (${ah === "L" ? "left" : "right"})`, "Default RectSize extends away from the anchor; text will render far from the anchor point. Match alignment to anchor side, or shrink RectSize."));
} else if ((av === "U" && v === "Lo") || (av === "Lo" && v === "U")) {
out.push(finding("L006", SEVERITY_WARN, path, `Alignment=${aname}(${alignment}) opposes vertical anchor (${av === "U" ? "top" : "bottom"})`, "Match alignment to anchor side, or shrink RectSize."));
} else if (ah === "C" && ["L", "R"].includes(h) && alignment !== 4) {
out.push(finding("L006", SEVERITY_INFO, path, `Alignment=${aname}(${alignment}) is edge-aligned but anchor is horizontal-center`, "If text should sit centered under the anchor, use MiddleCenter(4)."));
} else if (alignment === 0 && ah !== "L" && av !== "U") {
out.push(finding("L006", SEVERITY_WARN, path, "TextComponent.Alignment == UpperLeft(0) (default) with non-top-left anchor", "Explicit alignment recommended. Center=4, MiddleLeft=3, MiddleRight=5."));
}
return out;
}
function ruleL006TextGuiRenderer(entity, tgc) {
const out = [];
const path = entityPath(entity);
if (Object.prototype.hasOwnProperty.call(tgc, "Alignment")) {
out.push(finding("L006", SEVERITY_WARN, path, "TextGUIRendererComponent has legacy Alignment field", "Use HorizontalAlignment (1/2/4/8) and VerticalAlignment (256/512/1024); TextComponent.Alignment is ignored by TextGUIRendererComponent."));
}
const hRaw = tgc.HorizontalAlignment ?? 2;
const vRaw = tgc.VerticalAlignment ?? 512;
const h = parseIntegerValue(hRaw);
const v = parseIntegerValue(vRaw);
const hName = TEXT_GUI_H_ALIGN_NAMES[h] || String(hRaw);
const vName = TEXT_GUI_V_ALIGN_NAMES[v] || String(vRaw);
const hDir = textGuiAlignH(h);
const vDir = textGuiAlignV(v);
if (!hasTextGuiHAlignValue(h)) {
out.push(finding("L006", SEVERITY_ERROR, path, `TextGUIRendererComponent.HorizontalAlignment has invalid value ${JSON.stringify(hRaw)}`, "Use TextHorizontalAlignmentOption: Left=1, Center=2, Right=4, Justified=8, Flush=16, Geometry=32."));
}
if (!hasTextGuiVAlignValue(v)) {
out.push(finding("L006", SEVERITY_ERROR, path, `TextGUIRendererComponent.VerticalAlignment has invalid value ${JSON.stringify(vRaw)}`, "Use TextVerticalAlignmentOption: Top=256, Middle=512, Bottom=1024, Baseline=2048, Geometry=4096, Capline=8192."));
}
if (!hasTextGuiHAlignValue(h) || !hasTextGuiVAlignValue(v)) return out;
const ut = findComp(entity, "MOD.Core.UITransformComponent");
if (!ut) return out;
const mn = xy(ut.AnchorsMin);
const mx = xy(ut.AnchorsMax);
const ah = anchorH(mn, mx);
const av = anchorV(mn, mx);
if ((ah === "L" && hDir === "R") || (ah === "R" && hDir === "L")) {
out.push(finding("L006", SEVERITY_WARN, path, `HorizontalAlignment=${hName}(${h}) opposes horizontal anchor (${ah === "L" ? "left" : "right"})`, "Match text alignment to the anchor side, or shrink RectSize."));
} else if ((av === "U" && vDir === "Lo") || (av === "Lo" && vDir === "U")) {
out.push(finding("L006", SEVERITY_WARN, path, `VerticalAlignment=${vName}(${v}) opposes vertical anchor (${av === "U" ? "top" : "bottom"})`, "Match text alignment to the anchor side, or shrink RectSize."));
} else if (ah === "C" && ["L", "R"].includes(hDir)) {
out.push(finding("L006", SEVERITY_INFO, path, `HorizontalAlignment=${hName}(${h}) is edge-aligned but anchor is horizontal-center`, "If text should sit centered under the anchor, use HorizontalAlignment=Center(2)."));
}
return out;
}
function ruleL007(entity) {
if (!findComp(entity, "MOD.Core.ButtonComponent")) return [];
const ut = findComp(entity, "MOD.Core.UITransformComponent");
if (!ut) return [];
const rs = xy(ut.RectSize);
return rs[0] < 88 || rs[1] < 88
? [finding("L007", SEVERITY_WARN, entityPath(entity), `Button RectSize ${rs[0].toFixed(0)}x${rs[1].toFixed(0)} below 88x88 mobile touch target`, "Enlarge RectSize to at least 88x88 (Apple HIG) even if icon looks smaller.")]
: [];
}
function ruleL008(entity) {
const sprite = findComp(entity, "MOD.Core.SpriteGUIRendererComponent");
if (!sprite) return [];
const ruid = sprite.ImageRUID && typeof sprite.ImageRUID === "object" ? sprite.ImageRUID : {};
const color = sprite.Color && typeof sprite.Color === "object" ? sprite.Color : {};
const alpha = Number(color.a ?? 1.0);
return !ruid.DataId && alpha > 0.01
? [finding("L008", SEVERITY_WARN, entityPath(entity), "Sprite has empty ImageRUID.DataId but is visible (alpha>0)", "Assign a resource RUID, or set alpha=0 if used only as a Button hit area.")]
: [];
}
function ruleL009(entity) {
const ug = findComp(entity, "MOD.Core.UIGroupComponent");
if (!ug) return [];
return Number(ug.GroupType ?? 2) === 2 && Boolean(ug.DefaultShow)
? [finding("L009", SEVERITY_WARN, entityPath(entity), "Popup/menu UIGroup (GroupType=2) has DefaultShow=true", "Popups/menus should start hidden. Set DefaultShow=false.")]
: [];
}
function ruleL024(entity) {
const ug = findComp(entity, "MOD.Core.UIGroupComponent");
if (!ug) return [];
const out = [];
const path = entityPath(entity);
if (!Number.isInteger(ug.GroupOrder)) {
out.push(finding("L024", SEVERITY_ERROR, path, `UIGroupComponent.GroupOrder must be int32, got ${JSON.stringify(ug.GroupOrder)}`, "Set GroupOrder to an integer such as 0 for HUD, 2 for toast, or 4 for popup."));
}
if (!Number.isInteger(ug.GroupType)) {
out.push(finding("L024", SEVERITY_ERROR, path, `UIGroupComponent.GroupType must be int32, got ${JSON.stringify(ug.GroupType)}`, "Use UIGroupType numeric values only."));
}
return out;
}
function ruleL031(entity) {
const slg = findComp(entity, "MOD.Core.ScrollLayoutGroupComponent");
if (!slg) return [];
const out = [];
const path = entityPath(entity);
if (slg.Type != null && ![0, 1, 2].includes(Number(slg.Type))) {
out.push(finding("L031", SEVERITY_WARN, path, `ScrollLayoutGroupComponent.Type has invalid value ${JSON.stringify(slg.Type)}`, "Use LayoutGroupType: Horizontal=0, Vertical=1, Grid=2."));
}
if (slg.HorizontalScrollBarDirection != null && ![0, 1].includes(Number(slg.HorizontalScrollBarDirection))) {
out.push(finding("L031", SEVERITY_WARN, path, `HorizontalScrollBarDirection has invalid value ${JSON.stringify(slg.HorizontalScrollBarDirection)}`, "Use HorizontalScrollBarDirection: LeftToRight=0, RightToLeft=1."));
}
if (slg.VerticalScrollBarDirection != null && ![2, 3].includes(Number(slg.VerticalScrollBarDirection))) {
out.push(finding("L031", SEVERITY_WARN, path, `VerticalScrollBarDirection has invalid value ${JSON.stringify(slg.VerticalScrollBarDirection)}`, "Use VerticalScrollBarDirection: BottomToTop=2, TopToBottom=3. Value 0 belongs to HorizontalScrollBarDirection."));
}
return out;
}
function ruleL029(entity, isRoot) {
if (isRoot || !findComp(entity, "MOD.Core.UIGroupComponent")) return [];
return [finding(
"L029",
SEVERITY_ERROR,
entityPath(entity),
"Nested UIGroupComponent is not supported",
"Keep UIGroupComponent only on the .ui root entity. Use empty() or panel() for inner grouping.",
)];
}
function ruleL027(entity) {
if (!findComp(entity, "MOD.Core.TextComponent") || !findComp(entity, "MOD.Core.TextGUIRendererComponent")) return [];
return [finding("L027", SEVERITY_ERROR, entityPath(entity), "Entity has both TextComponent (legacy) and TextGUIRendererComponent", "A UI entity must carry exactly one text renderer. This usually means a legacy .ui was migrated by adding the new renderer without dropping the old one. Remove the legacy MOD.Core.TextComponent (rebuild the entity via the builder text()/button() helpers, or removeComponent('MOD.Core.TextComponent')). Two text layers double-render and fight over the same glyphs.")];
}
function ruleL028(entity) {
if (!findComp(entity, "MOD.Core.TextGUIRendererComponent")) return [];
const js = entity?.jsonString || {};
const legacyModel = js.modelId === "uitext" || js.origin?.entry_id === "UIText" || js.origin?.entry_id === "uitext";
if (!legacyModel) return [];
return [finding("L028", SEVERITY_ERROR, entityPath(entity), "TextGUIRendererComponent is attached to legacy UIText model identity", "Use the UITextGUIRenderer / uitextguirenderer model identity for TextGUIRendererComponent entities. Legacy UIText / uitext can be repaired by rebuilding the entity with UIBuilder.text() or reapplying TextGUIRendererComponent through upsertComponent(); otherwise Maker reimport can restore the legacy TextComponent from the model identity.")];
}
function computeWorldRect(entity, byPath, cache) {
const p = entityPath(entity);
if (cache.has(p)) return cache.get(p);
cache.set(p, null);
const ut = findComp(entity, "MOD.Core.UITransformComponent");
if (!ut) return null;
const pp = parentPath(p);
const parentEntity = pp ? byPath.get(pp) : null;
let parentRect = parentEntity ? computeWorldRect(parentEntity, byPath, cache) : CANVAS_RECT;
if (!parentRect) parentRect = CANVAS_RECT;
const [px0, py0, px1, py1] = parentRect;
const pw = px1 - px0;
const ph = py1 - py0;
const mn = xy(ut.AnchorsMin);
const mx = xy(ut.AnchorsMax);
const ap = xy(ut.anchoredPosition);
const rs = xy(ut.RectSize);
const pivot = xy(ut.Pivot, 0.5);
const offMin = xy(ut.OffsetMin);
const offMax = xy(ut.OffsetMax);
const ax0 = px0 + mn[0] * pw;
const ax1 = px0 + mx[0] * pw;
const ay0 = py0 + mn[1] * ph;
const ay1 = py0 + mx[1] * ph;
let xMin;
let xMax;
let yMin;
let yMax;
if (mn[0] !== mx[0]) {
xMin = ax0 + offMin[0];
xMax = ax1 + offMax[0];
} else {
if (rs[0] <= 0) return null;
const cx = (ax0 + ax1) / 2 + ap[0] + (0.5 - pivot[0]) * rs[0];
xMin = cx - rs[0] / 2;
xMax = cx + rs[0] / 2;
}
if (mn[1] !== mx[1]) {
yMin = ay0 + offMin[1];
yMax = ay1 + offMax[1];
} else {
if (rs[1] <= 0) return null;
const cy = (ay0 + ay1) / 2 + ap[1] + (0.5 - pivot[1]) * rs[1];
yMin = cy - rs[1] / 2;
yMax = cy + rs[1] / 2;
}
const rect = [xMin, yMin, xMax, yMax];
cache.set(p, rect);
return rect;
}
function isFullCanvas(rect) {
const [x0, y0, x1, y1] = rect;
return x0 <= -CANVAS_W / 2 + 1 && x1 >= CANVAS_W / 2 - 1 && y0 <= -CANVAS_H / 2 + 1 && y1 >= CANVAS_H / 2 - 1;
}
function overlap(ax0, ax1, ay0, ay1, bx0, bx1, by0, by1) {
return ax0 < bx1 && ax1 > bx0 && ay0 < by1 && ay1 > by0;
}
function ruleL012(entity, byPath, rectCache) {
const ut = findComp(entity, "MOD.Core.UITransformComponent");
if (!ut || !PC_PLATFORMS.has(Number(ut.ActivePlatform ?? 255))) return [];
const rect = computeWorldRect(entity, byPath, rectCache);
if (!rect || rect[2] <= rect[0] || rect[3] <= rect[1] || isFullCanvas(rect)) return [];
const [xMin, yMin, xMax, yMax] = rect;
const out = [];
const tl = [-CANVAS_W / 2, -CANVAS_W / 2 + PC_RESERVED_TL_W, CANVAS_H / 2 - PC_RESERVED_TL_H, CANVAS_H / 2];
const tr = [CANVAS_W / 2 - PC_RESERVED_TR_W, CANVAS_W / 2, CANVAS_H / 2 - PC_RESERVED_TR_H, CANVAS_H / 2];
if (overlap(xMin, xMax, yMin, yMax, tl[0], tl[1], tl[2], tl[3])) {
out.push(finding("L012", SEVERITY_WARN, entityPath(entity), `Entity world bbox overlaps PC top-left reserved zone (~${PC_RESERVED_TL_W.toFixed(0)}x${PC_RESERVED_TL_H.toFixed(0)} px, chat button + entry toast)`, "Shift inward, set ActivePlatform=Mobile(2), or for stretch-top bars set OffsetMin.x >= 280. See ui-fundamentals.md §9.3."));
}
if (overlap(xMin, xMax, yMin, yMax, tr[0], tr[1], tr[2], tr[3])) {
out.push(finding("L012", SEVERITY_WARN, entityPath(entity), `Entity world bbox overlaps PC top-right reserved zone (~${PC_RESERVED_TR_W.toFixed(0)}x${PC_RESERVED_TR_H.toFixed(0)} px, friends + menu buttons)`, "Shift inward, set ActivePlatform=Mobile(2), or for stretch-top bars set OffsetMax.x <= -320. See ui-fundamentals.md §9.3."));
}
return out;
}
function ruleL013(entity, byPath, rectCache) {
const ut = findComp(entity, "MOD.Core.UITransformComponent");
if (!ut) return [];
const rect = computeWorldRect(entity, byPath, rectCache);
if (!rect || rect[2] <= rect[0] || rect[3] <= rect[1] || isFullCanvas(rect)) return [];
const [xMin, yMin, xMax, yMax] = rect;
const [cx0, cy0, cx1, cy1] = CANVAS_RECT;
const sides = [];
if (cx0 - xMin > OVERFLOW_TOL) sides.push(`left by ${(cx0 - xMin).toFixed(0)}px`);
if (xMax - cx1 > OVERFLOW_TOL) sides.push(`right by ${(xMax - cx1).toFixed(0)}px`);
if (yMax - cy1 > OVERFLOW_TOL) sides.push(`top by ${(yMax - cy1).toFixed(0)}px`);
if (cy0 - yMin > OVERFLOW_TOL) sides.push(`bottom by ${(cy0 - yMin).toFixed(0)}px`);
if (!sides.length) return [];
const fullyOff = xMax < cx0 || xMin > cx1 || yMax < cy0 || yMin > cy1;
return [finding("L013", fullyOff ? SEVERITY_ERROR : SEVERITY_WARN, entityPath(entity), `${fullyOff ? "Entity is fully off-canvas" : "Entity world bbox overflows canvas"}: ${sides.join(", ")} (bbox=(${xMin.toFixed(0)},${yMin.toFixed(0)})-(${xMax.toFixed(0)},${yMax.toFixed(0)}), canvas=1920x1080)`, "Edge formula: anchoredPosition = sign * (margin + RectSize/2) for center-pivot. For stretch axes, use OffsetMin/OffsetMax (anchoredPosition is ignored). Verify Pivot - non-center pivots shift the bbox.")];
}
function ruleL014(entity, byPath, rectCache) {
const ut = findComp(entity, "MOD.Core.UITransformComponent");
const pp = parentPath(entityPath(entity));
if (!ut || !pp) return [];
const parentEntity = byPath.get(pp);
if (!parentEntity || !findComp(parentEntity, "MOD.Core.UITransformComponent")) return [];
const rect = computeWorldRect(entity, byPath, rectCache);
const pRect = computeWorldRect(parentEntity, byPath, rectCache);
if (!rect || !pRect || isFullCanvas(pRect) || pRect[2] <= pRect[0] || pRect[3] <= pRect[1]) return [];
const [xMin, yMin, xMax, yMax] = rect;
const [px0, py0, px1, py1] = pRect;
const sides = [];
const threshold = 4.0;
if (px0 - xMin > threshold) sides.push(`left ${(px0 - xMin).toFixed(0)}px`);
if (xMax - px1 > threshold) sides.push(`right ${(xMax - px1).toFixed(0)}px`);
if (yMax - py1 > threshold) sides.push(`top ${(yMax - py1).toFixed(0)}px`);
if (py0 - yMin > threshold) sides.push(`bottom ${(py0 - yMin).toFixed(0)}px`);
return sides.length ? [finding("L014", SEVERITY_INFO, entityPath(entity), `Child overflows parent '${pp}': ${sides.join(", ")}`, "Intentional for badges/tooltips. If unintended, shrink RectSize or adjust anchoredPosition / OffsetMin/Max.")] : [];
}
function groupRulesL015L016(byPath, rectCache) {
const out = [];
const childrenByParent = new Map();
for (const [p, e] of byPath.entries()) {
const pp = parentPath(p);
if (!pp) continue;
if (!childrenByParent.has(pp)) childrenByParent.set(pp, []);
childrenByParent.get(pp).push(e);
}
for (const [pp, kids] of childrenByParent.entries()) {
const parentEntity = byPath.get(pp);
const parentRect = parentEntity ? computeWorldRect(parentEntity, byPath, rectCache) : null;
if (!parentRect) continue;
const kidRects = kids.map((k) => [k, computeWorldRect(k, byPath, rectCache)]).filter(([, r]) => r && r[2] - r[0] > 0 && r[3] - r[1] > 0);
if (kidRects.length < 2) continue;
const rows = [];
for (const [k, r] of kidRects) {
const yc = (r[1] + r[3]) / 2;
const h = r[3] - r[1];
let placed = false;
for (const row of rows) {
const rr = row[0][1];
const ryc = (rr[1] + rr[3]) / 2;
const rh = rr[3] - rr[1];
if (Math.abs(yc - ryc) < Math.min(h, rh) * 0.5 && Math.abs(h - rh) / Math.max(h, rh) < 0.1) {
row.push([k, r]);
placed = true;
break;
}
}
if (!placed) rows.push([[k, r]]);
}
for (const row of rows) {
if (row.length < 3) continue;
const widths = row.map(([, r]) => r[2] - r[0]);
const meanW = widths.reduce((a, b) => a + b, 0) / widths.length;
if (meanW <= 0 || !widths.every((w) => Math.abs(w - meanW) / meanW < 0.1)) continue;
row.sort((a, b) => ((a[1][0] + a[1][2]) / 2) - ((b[1][0] + b[1][2]) / 2));
const xCenters = row.map(([, r]) => (r[0] + r[2]) / 2);
const names = row.map(([k]) => entityPath(k).split("/").pop());
const spacings = [];
for (let i = 0; i < xCenters.length - 1; i += 1) spacings.push(xCenters[i + 1] - xCenters[i]);
const meanSp = spacings.reduce((a, b) => a + b, 0) / spacings.length;
if (meanSp > 1) {
const variance = spacings.reduce((a, s) => a + (s - meanSp) ** 2, 0) / spacings.length;
const stddev = Math.sqrt(variance);
if (stddev / meanSp > 0.02) out.push(finding("L015", SEVERITY_WARN, pp, `Uneven sibling spacing across [${names.join(", ")}]: spacings=${JSON.stringify(spacings.map((s) => Math.round(s * 10) / 10))} (mean=${meanSp.toFixed(1)}, stddev=${stddev.toFixed(1)}, ratio=${(stddev / meanSp * 100).toFixed(1)}%)`, "Adjacent same-row repeated siblings should have uniform x-spacing. Inspect each child's anchoredPosition.x."));
}
const parentCx = (parentRect[0] + parentRect[2]) / 2;
const groupCx = (Math.min(...row.map(([, r]) => r[0])) + Math.max(...row.map(([, r]) => r[2]))) / 2;
const shift = groupCx - parentCx;
const scale = meanSp > 1 ? meanSp : meanW;
if (scale > 1 && Math.abs(shift) / scale > 0.1) out.push(finding("L016", SEVERITY_WARN, pp, `Repeated row [${names.join(", ")}] center off parent center by ${shift >= 0 ? "+" : ""}${shift.toFixed(1)}px (${(Math.abs(shift) / scale * 100).toFixed(0)}% of ${meanSp > 1 ? "spacing" : "width"} unit)`, `Symmetric layouts: group center should match parent center. Shift each child's anchoredPosition.x by ${(-shift) >= 0 ? "+" : ""}${(-shift).toFixed(1)}.`));
}
}
return out;
}
function ruleL017(byPath, rectCache) {
const out = [];
const seen = new Set();
for (const [p, entity] of byPath.entries()) {
const name = p.split("/").pop();
for (const [leftS, rightS] of MIRROR_SUFFIXES) {
if (!name.endsWith(leftS) || name.length <= leftS.length) continue;
const base = name.slice(0, -leftS.length);
const parent = parentPath(p);
if (!parent) continue;
const pairPath = `${parent}/${base}${rightS}`;
if (!byPath.has(pairPath)) continue;
const key = [p, pairPath].sort().join("\0");
if (seen.has(key)) continue;
seen.add(key);
const rl = computeWorldRect(entity, byPath, rectCache);
const rr = computeWorldRect(byPath.get(pairPath), byPath, rectCache);
if (!rl || !rr) continue;
const pr = (byPath.has(parent) ? computeWorldRect(byPath.get(parent), byPath, rectCache) : CANVAS_RECT) || CANVAS_RECT;
const pcx = (pr[0] + pr[2]) / 2;
const dl = pcx - (rl[0] + rl[2]) / 2;
const dr = (rr[0] + rr[2]) / 2 - pcx;
if (dl <= 0 || dr <= 0) continue;
const larger = Math.max(dl, dr);
if (larger > 1 && Math.abs(dl - dr) / larger > 0.02) {
out.push(finding("L017", SEVERITY_WARN, parent, `Mirror pair '${base}${leftS}' / '${base}${rightS}' asymmetric: left dist=${dl.toFixed(1)}, right dist=${dr.toFixed(1)} (diff ${(Math.abs(dl - dr) / larger * 100).toFixed(1)}%)`, "Named mirror pairs should be equidistant from parent center."));
}
break;
}
}
return out;
}
function ruleL023(byPath, rectCache) {
const out = [];
const childrenByParent = new Map();
for (const [p, e] of byPath.entries()) {
const pp = parentPath(p);
if (!pp) continue;
if (!childrenByParent.has(pp)) childrenByParent.set(pp, []);
childrenByParent.get(pp).push(e);
}
const tol = 4.0;
for (const [pp, kids] of childrenByParent.entries()) {
const textKids = kids
.filter((k) => findComp(k, "MOD.Core.TextComponent") || findComp(k, "MOD.Core.TextGUIRendererComponent"))
.map((k) => [k, computeWorldRect(k, byPath, rectCache)])
.filter(([, r]) => r && r[2] - r[0] > 0 && r[3] - r[1] > 0);
if (textKids.length < 2) continue;
const reported = new Set();
for (let i = 0; i < textKids.length; i += 1) {
for (let j = i + 1; j < textKids.length; j += 1) {
const [a, ra] = textKids[i];
const [b, rb] = textKids[j];
const ox = Math.min(ra[2], rb[2]) - Math.max(ra[0], rb[0]);
const oy = Math.min(ra[3], rb[3]) - Math.max(ra[1], rb[1]);
if (ox <= tol || oy <= tol) continue;
const an = entityPath(a).split("/").pop();
const bn = entityPath(b).split("/").pop();
const key = [an, bn].sort().join("\0");
if (reported.has(key)) continue;
reported.add(key);
out.push(finding("L023", SEVERITY_WARN, pp, `Sibling text rects overlap: '${an}' vs '${bn}' (overlap ${ox.toFixed(0)}x${oy.toFixed(0)}px)`, "Two text columns share canvas area - likely default RectSize (e.g. 400x29) bleeding into the next column. Set explicit RectSize per column or tighten anchors."));
}
}
}
return out;
}
function slicedSpriteRuid(entity) {
const sprite = findComp(entity, "MOD.Core.SpriteGUIRendererComponent");
if (!sprite) return null;
// The border ring renders only in Sliced mode; a Simple/Tiled/Filled sprite ignores the
// asset border, so its RUID's border px never produce a frame clash.
if (Number(sprite.Type) !== SLICE_IMAGE_TYPE) return null;
const ruid = sprite.ImageRUID && typeof sprite.ImageRUID === "object" ? sprite.ImageRUID : {};
if (!ruid.DataId) return null;
const color = sprite.Color && typeof sprite.Color === "object" ? sprite.Color : {};
if (Number(color.a ?? 1.0) <= SLICE_ALPHA_MIN) return null;
// Text/button backgrounds overlap as a text/spacing concern (L023), not a frame clash.
if (findComp(entity, "MOD.Core.TextComponent") || findComp(entity, "MOD.Core.TextGUIRendererComponent")) return null;
if (findComp(entity, "MOD.Core.ButtonComponent")) return null;
return String(ruid.DataId);
}
// Accept either short {left,bottom,right,top} or resource-metadata {border_left,...} px.
// All-zero (no ring) returns null -> treated as "no border data to consider".
function normalizeBorder(b) {
if (!b || typeof b !== "object") return null;
const pick = (...keys) => {
for (const k of keys) {
const v = b[k];
if (v !== undefined && v !== null && v !== "") {
const n = Number(v);
if (Number.isFinite(n)) return Math.max(0, n);
}
}
return 0;
};
const left = pick("left", "border_left", "l");
const bottom = pick("bottom", "border_bottom", "b");
const right = pick("right", "border_right", "r");
const top = pick("top", "border_top", "t");
if (left <= 0 && bottom <= 0 && right <= 0 && top <= 0) return null;
return { left, bottom, right, top };
}
function buildBorderMap(input) {
const map = new Map();
if (!input) return map;
const entries = input instanceof Map ? input.entries() : Object.entries(input);
for (const [ruid, raw] of entries) {
const nb = normalizeBorder(raw);
if (nb) map.set(String(ruid), nb);
}
return map;
}
// 9-slice border ring as up to four axis-aligned band rects (corners shared between bands).
// Each band thickness is clamped to the rect so an oversized border never escapes the frame.
function borderBands(rect, b) {
const [x0, y0, x1, y1] = rect;
const w = x1 - x0;
const h = y1 - y0;
const l = Math.min(b.left, w);
const r = Math.min(b.right, w);
const bo = Math.min(b.bottom, h);
const t = Math.min(b.top, h);
const bands = [];
if (l > 0) bands.push([x0, y0, x0 + l, y1]);
if (r > 0) bands.push([x1 - r, y0, x1, y1]);
if (bo > 0) bands.push([x0, y0, x1, y0 + bo]);
if (t > 0) bands.push([x0, y1 - t, x1, y1]);
return bands;
}
function rectOverlap(a, b) {
const ox = Math.min(a[2], b[2]) - Math.max(a[0], b[0]);
const oy = Math.min(a[3], b[3]) - Math.max(a[1], b[1]);
return [ox, oy];
}
function ruleL026(byPath, rectCache, borders) {
const out = [];
// Border is considered only when the caller supplies border data. No map -> rule silent.
if (!borders || borders.size === 0) return out;
const childrenByParent = new Map();
for (const [p, e] of byPath.entries()) {
const pp = parentPath(p);
if (!pp) continue;
if (!childrenByParent.has(pp)) childrenByParent.set(pp, []);
childrenByParent.get(pp).push(e);
}
for (const [pp, kids] of childrenByParent.entries()) {
const sliceKids = [];
for (const k of kids) {
const ruid = slicedSpriteRuid(k);
if (!ruid) continue;
const border = borders.get(ruid);
if (!border) continue; // no border data for this RUID -> not considered
const rect = computeWorldRect(k, byPath, rectCache);
if (!rect || rect[2] - rect[0] <= 0 || rect[3] - rect[1] <= 0) continue;
sliceKids.push([k, rect, border]);
}
if (sliceKids.length < 2) continue;
const reported = new Set();
for (let i = 0; i < sliceKids.length; i += 1) {
for (let j = i + 1; j < sliceKids.length; j += 1) {
const [a, ra, ba] = sliceKids[i];
const [b, rb, bb] = sliceKids[j];
const [ox, oy] = rectOverlap(ra, rb);
if (ox <= 0 || oy <= 0) continue; // rects don't even touch
// Do the two border rings actually paint over each other? Test every band pair.
const bandsA = borderBands(ra, ba);
const bandsB = borderBands(rb, bb);
let clash = false;
for (const sa of bandsA) {
for (const sb of bandsB) {
const [bx, by] = rectOverlap(sa, sb);
if (bx > 0 && by > 0) { clash = true; break; }
}
if (clash) break;
}
if (!clash) continue;
const an = entityPath(a).split("/").pop();
const bn = entityPath(b).split("/").pop();
const key = [an, bn].sort().join("\0");
if (reported.has(key)) continue;
reported.add(key);
out.push(finding("L026", SEVERITY_WARN, pp, `Sibling sliced (9-slice) borders overlap: '${an}' vs '${bn}' (rects cross by ${ox.toFixed(0)}x${oy.toFixed(0)}px)`, "Both panels are 9-slice and their border rings paint over each other, producing a doubled/muddy frame seam. Separate them so the borders don't touch, nest one fully inside the other, or if the layering is intentional ignore this."));
}
}
}
return out;
}
function ruleL030(byPath, rectCache, rootPath) {
const out = [];
const childrenByParent = new Map();
for (const [p, e] of byPath.entries()) {
const pp = parentPath(p);
if (!pp) continue;
if (!childrenByParent.has(pp)) childrenByParent.set(pp, []);
childrenByParent.get(pp).push(e);
}
const rootKids = childrenByParent.get(rootPath) || [];
const texts = rootKids.filter((entity) => {
const js = entity?.jsonString || {};
return (js.modelId === "uitext" || js.modelId === "uitextguirenderer") &&
(findComp(entity, "MOD.Core.TextComponent") || findComp(entity, "MOD.Core.TextGUIRendererComponent"));
});
const boxes = rootKids.filter((entity) => {
const js = entity?.jsonString || {};
return !["uitext", "uitextguirenderer"].includes(js.modelId) &&
(findComp(entity, "MOD.Core.SpriteGUIRendererComponent") || findComp(entity, "MOD.Core.ButtonComponent")) &&
!findComp(entity, "MOD.Core.TextComponent") &&
!findComp(entity, "MOD.Core.TextGUIRendererComponent");
});
if (!texts.length || !boxes.length) return out;
const reported = new Set();
for (const textEntity of texts) {
const textRect = computeWorldRect(textEntity, byPath, rectCache);
if (!textRect || textRect[2] <= textRect[0] || textRect[3] <= textRect[1]) continue;
const textArea = (textRect[2] - textRect[0]) * (textRect[3] - textRect[1]);
if (textArea <= 0) continue;
let best = null;
for (const boxEntity of boxes) {
const boxRect = computeWorldRect(boxEntity, byPath, rectCache);
if (!boxRect || isFullCanvas(boxRect) || boxRect[2] <= boxRect[0] || boxRect[3] <= boxRect[1]) continue;
const ox = Math.min(textRect[2], boxRect[2]) - Math.max(textRect[0], boxRect[0]);
const oy = Math.min(textRect[3], boxRect[3]) - Math.max(textRect[1], boxRect[1]);
if (ox <= 0 || oy <= 0) continue;
const cover = (ox * oy) / textArea;
if (cover < 0.6) continue;
const boxArea = (boxRect[2] - boxRect[0]) * (boxRect[3] - boxRect[1]);
if (!best || boxArea < best.boxArea) best = { entity: boxEntity, cover, boxArea };
}
if (!best) continue;
const textName = entityPath(textEntity).split("/").pop();
const boxName = entityPath(best.entity).split("/").pop();
const key = `${[textName, boxName].sort().join("\0")}@${rootPath}`;
if (reported.has(key)) continue;
reported.add(key);
out.push(finding(
"L030",
SEVERITY_WARN,
entityPath(textEntity),
`Root-level text '${textName}' overlaps sibling box '${boxName}' (${(best.cover * 100).toFixed(0)}% covered)`,
`Do not stack related controls as root siblings. Nest the text under the box as "${boxName}/${textName}", or put the label on the box itself via sprite()/panel() text options or button().`,
));
}
return out;
}
function ruleL025(byPath) {
const out = [];
for (const [p] of byPath) {
const pp = parentPath(p);
// pp === "/ui" means p is a top-level UI group mounted directly under the
// engine canvas (/ui), which is legitimately not an entity in this file.
// Anything deeper must have its parent present, regardless of array order.
if (!pp || pp === "/ui") continue;
if (!byPath.has(pp)) {
out.push(finding("L025", SEVERITY_ERROR, p, `Orphaned entity: parent '${pp}' does not exist in this .ui file`, "Create the parent empty()/panel() container before its nested children. A child whose intermediate parent is missing cannot be mounted as a proper UI container on import."));
}
}
return out;
}
function lintUiFile(filepath, opts = {}) {
const data = JSON.parse(fs.readFileSync(filepath, "utf8"));
const borders = buildBorderMap(opts.borders);
const entities = data?.ContentProto?.Entities || [];
if (!entities.length) return [finding("L000", SEVERITY_ERROR, String(filepath), "No entities found in .ui file", "File may be corrupt or built with wrong schema.")];
const findings = [];
const byPath = new Map();
for (const e of entities) {
if (typeof e.jsonString === "string") e.jsonString = JSON.parse(e.jsonString);
const ep = entityPath(e);
if (ep && ep !== "?") byPath.set(ep, e);
}
const rootPath = entityPath(entities[0]);
const rectCache = new Map();
entities.forEach((entity, idx) => {
findings.push(...ruleL001L002L010(entity, idx === 0));
findings.push(...ruleL003L004L005(entity));
findings.push(...ruleL006(entity));
findings.push(...ruleL007(entity));
findings.push(...ruleL008(entity));
findings.push(...ruleL009(entity));
findings.push(...ruleL024(entity));
findings.push(...ruleL031(entity));
findings.push(...ruleL029(entity, idx === 0));
findings.push(...ruleL027(entity));
findings.push(...ruleL028(entity));
findings.push(...ruleL012(entity, byPath, rectCache));
findings.push(...ruleL013(entity, byPath, rectCache));
findings.push(...ruleL014(entity, byPath, rectCache));
});
findings.push(...groupRulesL015L016(byPath, rectCache));
findings.push(...ruleL017(byPath, rectCache));
findings.push(...ruleL023(byPath, rectCache));
findings.push(...ruleL026(byPath, rectCache, borders));
findings.push(...ruleL030(byPath, rectCache, rootPath));
findings.push(...ruleL025(byPath));
return findings;
}
function parseArgs(argv) {
const args = { json: false, severity: "info", path: null, borders: null };
for (let i = 0; i < argv.length; i += 1) {
const arg = argv[i];
if (arg === "--json") args.json = true;
else if (arg === "--severity") {
i += 1;
args.severity = argv[i];
} else if (arg.startsWith("--severity=")) args.severity = arg.slice("--severity=".length);
else if (arg === "--borders") {
i += 1;
args.borders = argv[i];
} else if (arg.startsWith("--borders=")) args.borders = arg.slice("--borders=".length);
else if (!args.path) args.path = arg;
else throw new Error(`Unexpected argument: ${arg}`);
}
if (!args.path) throw new Error("Usage: node ui_lint.cjs <path-to-ui-file> [--json] [--severity error|warning|info] [--borders <ruid-border-map.json>]");
if (!["error", "warning", "info"].includes(args.severity)) throw new Error("--severity must be one of: error, warning, info");
return args;
}
function main(argv = process.argv.slice(2)) {
const args = parseArgs(argv);
const order = { error: 2, warning: 1, info: 0 };
const borders = args.borders ? JSON.parse(fs.readFileSync(args.borders, "utf8")) : null;
const filtered = lintUiFile(args.path, { borders }).filter((f) => order[f.severity] >= order[args.severity]);
if (args.json) {
console.log(JSON.stringify(filtered, null, 2));
} else {
filtered.forEach((f) => console.log(formatFinding(f)));
const total = filtered.length;
const errors = filtered.filter((f) => f.severity === SEVERITY_ERROR).length;
const warns = filtered.filter((f) => f.severity === SEVERITY_WARN).length;
const infos = filtered.filter((f) => f.severity === SEVERITY_INFO).length;
console.log(`\n${args.path}: ${total} finding(s) - ${errors} error, ${warns} warning, ${infos} info`);
}
return filtered.some((f) => f.severity === SEVERITY_ERROR) ? 1 : 0;
}
if (require.main === module) {
try {
process.exitCode = main();
} catch (err) {
console.error(`ERROR: ${err.message}`);
process.exitCode = 2;
}
}
module.exports = {
SEVERITY_ERROR,
SEVERITY_WARN,
SEVERITY_INFO,
formatFinding,
lintUiFile,
main,
};
scripts/ui_recipe.cjs
"use strict";
const fs = require("fs");
const path = require("path");
const { UIBuilder } = require("./msw_ui_builder.cjs");
function recipeHud(groupName) {
const b = new UIBuilder(groupName, 1, true);
b.panel("ScoreBox", { anchor: "top-left", pos: [110, -40], rect_size: [200, 60] });
b.text("ScoreBox/Label", "Score", { size: 24, color: "#FFFFFF", anchor: "middle-left", pos: [-80, 0], rect_size: [140, 40] });
b.patchComponent("ScoreBox/Label", "MOD.Core.TextGUIRendererComponent", { HorizontalAlignment: 1, VerticalAlignment: 512 });
b.text("ScoreBox/Value", "0", { size: 40, color: "#FFD700", bold: true, anchor: "middle-right", pos: [80, 0], rect_size: [140, 50] });
b.patchComponent("ScoreBox/Value", "MOD.Core.TextGUIRendererComponent", { HorizontalAlignment: 4, VerticalAlignment: 512 });
b.panel("MiniMap", { anchor: "top-right", pos: [-110, -110], rect_size: [180, 180] });
b.sprite("MiniMap/Frame", { anchor: "stretch", color: "#FFFFFF", alpha: 0.3 });
b.panel("HPBar", { anchor: "bottom-left", pos: [120, 50], rect_size: [220, 30] });
b.sprite("HPBar/Bg", { anchor: "stretch", color: "#1A1A1A", alpha: 0.8 });
// Sliced HP fill anchored to the left edge; runtime resizes its width.
b.sprite("HPBar/Fill", { anchor: "middle-left", pos: [0, 0], rect_size: [220, 30], pivot: [0, 0.5], image_ruid: "f0911af597259044aa624a11332c0595", color: "#E53935", alpha: 1.0 });
return b;
}
function recipePopup(groupName) {
const b = new UIBuilder(groupName, 10, false);
b.sprite("Dimmer", { anchor: "stretch", color: "#000000", alpha: 0.6 });
b.patchComponent("Dimmer", "MOD.Core.SpriteGUIRendererComponent", { RaycastTarget: true });
b.panel("Panel", { anchor: "middle-center", rect_size: [600, 400] });
b.sprite("Panel/Bg", { anchor: "stretch", color: "#2C2C2C" });
// TextGUIRendererComponent defaults to Center + Middle, so no explicit alignment patch is needed.
b.text("Panel/Title", "Confirm", { size: 48, color: "#FFFFFF", bold: true, anchor: "top-center", pos: [0, -50], rect_size: [560, 60] });
b.text("Panel/Message", "Are you sure?", { size: 28, color: "#DDDDDD", anchor: "middle-center", pos: [0, 20], rect_size: [520, 160] });
b.button("Panel/BtnOk", "OK", { rect_size: [200, 88], pos: [-110, -140], anchor: "bottom-center", font_size: 28 });
b.button("Panel/BtnCancel", "Cancel", { rect_size: [200, 88], pos: [110, -140], anchor: "bottom-center", font_size: 28 });
return b;
}
function recipeToast(groupName) {
const b = new UIBuilder(groupName, 20, false);
b.panel("Toast", { anchor: "bottom-center", pos: [0, 140], rect_size: [600, 80] });
b.sprite("Toast/Bg", { anchor: "stretch", color: "#1E1E1E", alpha: 0.9 });
b.text("Toast/Message", "", { size: 28, color: "#FFFFFF", anchor: "stretch" }); // centered by default
return b;
}
function recipeMenu(groupName) {
const b = new UIBuilder(groupName, 5, false);
b.sprite("Dimmer", { anchor: "stretch", color: "#000000", alpha: 0.7 });
b.patchComponent("Dimmer", "MOD.Core.SpriteGUIRendererComponent", { RaycastTarget: true });
b.panel("TopTabs", { anchor: "top-center", pos: [0, -60], rect_size: [1200, 80] });
b.sprite("TopTabs/Bg", { anchor: "stretch", color: "#1A1A1A" });
["Character", "Inventory", "Settings"].forEach((name, i) => {
b.button(`TopTabs/Tab${i}`, name, { rect_size: [380, 88], pos: [-400 + i * 400, 0], font_size: 24 });
});
for (let i = 0; i < 3; i += 1) b.panel(`Content${i}`, { anchor: "middle-center", pos: [0, -40], rect_size: [1400, 800], enable: i === 0 });
return b;
}
function recipeInventory(groupName) {
const b = new UIBuilder(groupName, 7, false);
b.sprite("Dimmer", { anchor: "stretch", color: "#000000", alpha: 0.7 });
b.patchComponent("Dimmer", "MOD.Core.SpriteGUIRendererComponent", { RaycastTarget: true });
b.panel("Window", { anchor: "middle-center", rect_size: [900, 700] });
b.sprite("Window/Bg", { anchor: "stretch", color: "#2C2C2C" });
b.text("Window/Title", "Inventory", { size: 36, color: "#FFFFFF", bold: true, anchor: "top-center", pos: [0, -40], rect_size: [800, 50] }); // centered by default
b.button("Window/BtnClose", "X", { rect_size: [100, 100], pos: [-70, -70], anchor: "top-right", font_size: 24 });
b.panel("Window/ItemTemplate", { anchor: "top-left", pos: [50, -50], rect_size: [80, 80], enable: false });
b.sprite("Window/ItemTemplate/Frame", { anchor: "stretch", color: "#FFFFFF", alpha: 0.2 });
b.sprite("Window/ItemTemplate/Icon", { anchor: "middle-center", rect_size: [64, 64] });
b.text("Window/ItemTemplate/Count", "", { size: 20, color: "#FFFFFF", anchor: "bottom-right", pos: [-28, 20], rect_size: [40, 24] });
b.patchComponent("Window/ItemTemplate/Count", "MOD.Core.TextGUIRendererComponent", { HorizontalAlignment: 4, VerticalAlignment: 512 });
b.panel("Window/Grid", { anchor: "stretch" });
b.patchComponent("Window/Grid", "MOD.Core.UITransformComponent", { OffsetMin: { x: 50, y: 50 }, OffsetMax: { x: -50, y: -100 } });
b.addComponent("Window/Grid", "MOD.Core.GridViewComponent", { CellSize: { x: 90, y: 90 }, FixedCount: 8, FixedType: 0, Spacing: { x: 6, y: 6 }, UseScroll: true, TotalCount: 0 });
return b;
}
function recipeChat(groupName) {
const b = new UIBuilder(groupName, 4, true);
b.panel("ChatBox", { anchor: "bottom-left", pos: [220, 220], rect_size: [400, 300] });
b.sprite("ChatBox/Bg", { anchor: "stretch", color: "#000000", alpha: 0.5 });
b.panel("ChatBox/List", { anchor: "stretch" });
b.patchComponent("ChatBox/List", "MOD.Core.UITransformComponent", { OffsetMin: { x: 10, y: 50 }, OffsetMax: { x: -10, y: -10 } });
b.addComponent("ChatBox/List", "MOD.Core.ScrollLayoutGroupComponent", { Type: 1, Spacing: 6 });
b.addComponent("ChatBox/List", "MOD.Core.MaskComponent", { Shape: 0 });
b.panel("ChatBox/InputArea", { anchor: "bottom-center", pos: [0, 20], rect_size: [380, 40] });
b.sprite("ChatBox/InputArea/Bg", { anchor: "stretch", color: "#222222" });
b.textInput("ChatBox/InputArea/Text", { anchor: "stretch", color: "#FFFFFF", font_size: 20, placeholder: "Type here...", line_type: 0, auto_clear: true, alpha: 0 });
b.patchComponent("ChatBox/InputArea/Text", "MOD.Core.TextGUIRendererComponent", { HorizontalAlignment: 1 });
return b;
}
function recipeSettings(groupName) {
const b = new UIBuilder(groupName, 7, false);
b.sprite("Dimmer", { anchor: "stretch", color: "#000000", alpha: 0.7 });
b.patchComponent("Dimmer", "MOD.Core.SpriteGUIRendererComponent", { RaycastTarget: true });
b.panel("Window", { anchor: "middle-center", rect_size: [700, 600] });
b.sprite("Window/Bg", { anchor: "stretch", color: "#2C2C2C" });
b.text("Window/Title", "Settings", { size: 36, bold: true, anchor: "top-center", pos: [0, -40], rect_size: [600, 50] }); // centered by default
[["BGMVol", "BGM Volume", 0, 1, 0.8], ["SFXVol", "SFX Volume", 0, 1, 1.0], ["UIScale", "UI Scale", 0.8, 1.5, 1.0]].forEach(([, label, minVal, maxVal, val], i) => {
const y = -140 - i * 100;
b.panel(`Window/Row${i}`, { anchor: "top-center", pos: [0, y], rect_size: [600, 80] });
b.text(`Window/Row${i}/Label`, label, { size: 24, anchor: "middle-left", pos: [120, 0], rect_size: [180, 40] });
b.patchComponent(`Window/Row${i}/Label`, "MOD.Core.TextGUIRendererComponent", { HorizontalAlignment: 1, VerticalAlignment: 512 });
b.slider(`Window/Row${i}/Slider`, { min_val: minVal, max_val: maxVal, value: val, anchor: "middle-right", pos: [-160, 0], rect_size: [320, 30] });
b.text(`Window/Row${i}/Value`, val.toFixed(2), { size: 22, anchor: "middle-right", pos: [-60, 0], rect_size: [80, 40] });
b.patchComponent(`Window/Row${i}/Value`, "MOD.Core.TextGUIRendererComponent", { HorizontalAlignment: 4, VerticalAlignment: 512 });
});
b.button("Window/BtnClose", "Close", { rect_size: [220, 88], anchor: "bottom-center", pos: [0, 60], font_size: 26 });
return b;
}
const RECIPES = {
hud: recipeHud,
popup: recipePopup,
toast: recipeToast,
menu: recipeMenu,
inventory: recipeInventory,
chat: recipeChat,
settings: recipeSettings,
};
const RECIPE_DESCRIPTIONS = {
hud: "Score + Minimap + HP bar (DefaultGroup, always-on HUD)",
popup: "Modal dialog: Title + Message + OK/Cancel (dimmed background)",
toast: "Bottom auto-hide notification bar",
menu: "Top-tab menu with 3 tabs (dimmed background)",
inventory: "Grid-virtualized item window with close button",
chat: "Bottom-left scroll log + text input (ScrollLayoutGroup)",
settings: "3-slider settings window (BGM / SFX / UI Scale)",
};
function manifest(builder) {
return builder.entities.map((e) => {
const js = e.jsonString || {};
return {
path: js.path || "",
entity_id: e.id || "",
components: (js["@components"] || []).map((c) => ({ "@type": c["@type"], id: c.id })),
};
});
}
function suggestProperties(recipe) {
const map = {
popup: [
["popupGroup", "/ui/{GROUP}/Panel", "Entity"],
["title", "/ui/{GROUP}/Panel/Title", "TextGUIRendererComponent"],
["message", "/ui/{GROUP}/Panel/Message", "TextGUIRendererComponent"],
["btnOk", "/ui/{GROUP}/Panel/BtnOk", "ButtonComponent"],
["btnCancel", "/ui/{GROUP}/Panel/BtnCancel", "ButtonComponent"],
],
toast: [["toastGroup", "/ui/{GROUP}/Toast", "Entity"], ["message", "/ui/{GROUP}/Toast/Message", "TextGUIRendererComponent"]],
hud: [["scoreValue", "/ui/{GROUP}/ScoreBox/Value", "TextGUIRendererComponent"], ["hpFillTransform", "/ui/{GROUP}/HPBar/Fill", "UITransformComponent"], ["hpFill", "/ui/{GROUP}/HPBar/Fill", "SpriteGUIRendererComponent"]],
inventory: [["invGroup", "/ui/{GROUP}/Window", "Entity"], ["grid", "/ui/{GROUP}/Window/Grid", "GridViewComponent"], ["itemTemplate", "/ui/{GROUP}/Window/ItemTemplate", "Entity"], ["btnClose", "/ui/{GROUP}/Window/BtnClose", "ButtonComponent"]],
menu: [["menuRoot", "/ui/{GROUP}", "Entity"], ["tab0", "/ui/{GROUP}/TopTabs/Tab0", "ButtonComponent"], ["tab1", "/ui/{GROUP}/TopTabs/Tab1", "ButtonComponent"], ["tab2", "/ui/{GROUP}/TopTabs/Tab2", "ButtonComponent"], ["content0", "/ui/{GROUP}/Content0", "Entity"], ["content1", "/ui/{GROUP}/Content1", "Entity"], ["content2", "/ui/{GROUP}/Content2", "Entity"]],
chat: [["chatBox", "/ui/{GROUP}/ChatBox", "Entity"], ["list", "/ui/{GROUP}/ChatBox/List", "ScrollLayoutGroupComponent"], ["inputText", "/ui/{GROUP}/ChatBox/InputArea/Text", "TextGUIRendererInputComponent"]],
settings: [["settingsGroup", "/ui/{GROUP}/Window", "Entity"], ["bgmSlider", "/ui/{GROUP}/Window/Row0/Slider", "SliderComponent"], ["sfxSlider", "/ui/{GROUP}/Window/Row1/Slider", "SliderComponent"], ["uiScaleSlider", "/ui/{GROUP}/Window/Row2/Slider", "SliderComponent"], ["btnClose", "/ui/{GROUP}/Window/BtnClose", "ButtonComponent"]],
};
return (map[recipe] || []).map(([name, propertyPath, type]) => ({ name, path: propertyPath, type }));
}
function parseArgs(argv) {
const args = { recipe: null, output: null, groupName: null, list: false, manifestJson: false };
for (let i = 0; i < argv.length; i += 1) {
const arg = argv[i];
if (arg === "--list") args.list = true;
else if (arg === "--manifest-json") args.manifestJson = true;
else if (arg === "--group-name") {
i += 1;
args.groupName = argv[i];
} else if (arg.startsWith("--group-name=")) args.groupName = arg.slice("--group-name=".length);
else if (!args.recipe) args.recipe = arg;
else if (!args.output) args.output = arg;
else throw new Error(`Unexpected argument: ${arg}`);
}
if (args.list) return args;
if (!args.recipe || !args.output) throw new Error(`Usage: node ui_recipe.cjs <recipe> <output_path> [--group-name NAME]\nRecipes: ${Object.keys(RECIPES).join(", ")}`);
if (!RECIPES[args.recipe]) throw new Error(`Unknown recipe '${args.recipe}'. Use one of: ${Object.keys(RECIPES).join(", ")}`);
return args;
}
function main(argv = process.argv.slice(2)) {
const args = parseArgs(argv);
if (args.list) {
Object.entries(RECIPE_DESCRIPTIONS).forEach(([name, desc]) => console.log(` ${name.padEnd(10)} ${desc}`));
return 0;
}
const group = args.groupName || path.basename(args.output, path.extname(args.output));
const builder = RECIPES[args.recipe](group);
fs.mkdirSync(path.dirname(args.output), { recursive: true });
builder.write(args.output);
const suggestions = suggestProperties(args.recipe);
const rows = manifest(builder);
if (args.manifestJson) {
console.log(JSON.stringify({
recipe: args.recipe,
group,
output: args.output,
entities: rows,
suggested_properties: suggestions.map((s) => ({ ...s, path: s.path.replace("{GROUP}", group) })),
}, null, 2));
return 0;
}
console.log(`\nRecipe '${args.recipe}' written to ${args.output}`);
console.log(` GroupName: ${group}`);
console.log(` Entities : ${rows.length}`);
if (suggestions.length) {
console.log("\nSuggested .mlua properties for binding:");
suggestions.forEach((s) => console.log(` property ${s.type.padEnd(35)} ${s.name.padEnd(18)} = "..." -- ${s.path.replace("{GROUP}", group)}`));
}
console.log("\nNext steps:");
console.log(" 1. Create/update paired .mlua with the properties above");
console.log(" 2. Inject UUIDs via b.write(bind=...) or b.injectBindings(...)");
console.log(" 3. Run ui_lint.cjs on the output");
console.log(" 4. Maker Refresh (MCP) to apply");
return 0;
}
if (require.main === module) {
try {
process.exitCode = main();
} catch (err) {
console.error(`ERROR: ${err.message}`);
process.exitCode = 2;
}
}
module.exports = { RECIPES, RECIPE_DESCRIPTIONS, suggestProperties, manifest, main };
SKILL.md
---
name: msw-ui-system
description: "MSW `.ui` single entry point — design + component API + builder + runtime. Anchor/pivot/RectTransform, UIGroup/CanvasGroup hierarchy, layout recipes (HUD/popup/toast/menu/inventory/scroll-list), full API tables for ButtonComponent/TextGUIRendererComponent/SpriteGUIRendererComponent/ScrollLayoutGroup/GridView/TextInput/Slider/Mask/AvatarGUIRenderer + UI enums (AlignmentType/TextOverflowMode/ImageType/FillAmount), `.mlua` runtime patterns (popup open-close, toast, HP bar, GridView, drag, tab, cooldown, world nametag), UI-client-only caveats (nil on server, no RPC), `.ui`↔`.mlua` UUID auto-binding (write+injectBindings), resolution/safe-area/touch. UIBuilder (msw_ui_builder.cjs): all node types (empty/panel/text/sprite/button/slider/scrollLayout/textInput/group/mask/gridView/avatar/skeleton etc.), component add/replace/patch/remove, 13 anchor presets+stretch, auto-inject .mlua UUID bindings after write."
---
# msw-ui-system
MSW `.ui` single entry point — **design guide + component API + builder invocation + runtime patterns** bundled into one skill.
Role division with existing skills:
| Skill | Responsibility |
|-------|----------------|
| `msw-ui-system` (this skill) | Everything `.ui` — design (which/when/why), component API/enum (what), builder invocation (how to mutate), runtime mlua patterns. **`.ui` mutations must always go through this skill's builder** |
| `references/templates/` | Pre-built style bundles — `.ui` + ruid-map + button handler packages |
---
## 0. Routing
Branch to sub-references based on request keywords.
| Trigger | Reference Document |
|---------|--------------------|
| "anchor/pivot/coordinates/why is the position wrong", "RectTransform", "stretch" | [`references/ui-fundamentals.md`](references/ui-fundamentals.md) §1–§8 |
| "mobile", "safe area", "1920", "MobileOnly", "ActivePlatform", "touch size", "PC reserved zone", "font size by device" | [`references/ui-fundamentals.md`](references/ui-fundamentals.md) §9 |
| "UIGroup", "above popup", "z-order", "displayOrder", "CanvasGroup", "opacity propagation", "Enable vs Visible" | [`references/ui-hierarchy.md`](references/ui-hierarchy.md); for runtime sibling reorder also read [`references/runtime-patterns.md`](references/runtime-patterns.md) §7 |
| "which component", "Sprite vs Text vs Button", "9-slice", "scroll list", "GridView vs ScrollLayoutGroup" | [`references/component-api.md`](references/component-api.md) §"Component Selection Guide" |
| "sprite pivot", "9-slice border", "slice boundary", "set sliced asset metadata", "resource storage properties" | Set asset-side metadata via `msw-mcp` `asset_update_resource_storage_info` directly; for the `.ui` side see [`references/component-api.md`](references/component-api.md) §"SpriteGUIRenderer — ImageType Selection" |
| "make a HUD", "popup placement", "toast", "menu", "inventory grid", "scroll list" | [`references/layout-recipes.md`](references/layout-recipes.md) |
| "connect .mlua after building with .ui builder", "property default UUID", "binding without drag" | [`../msw-general/references/builder-protocol-ui.md`](../msw-general/references/builder-protocol-ui.md) §3.6 Binding Injection (unified entry point — load with the [`builder-protocol.md`](../msw-general/references/builder-protocol.md) core) |
| Runtime UI component field read/write, component property name/type (`ButtonComponent.Colors`, `TextGUIRendererComponent.Overflow`, `SpriteGUIRendererComponent.FillAmount`…) | [`references/component-api.md`](references/component-api.md) **required before every `.mlua` access to UI component fields** |
| Enum values (`AlignmentType`, `TextOverflowMode`, `ImageType`, `UIBasicParticleType`…) | [`references/component-api.md`](references/component-api.md) §Enums |
| Runtime mlua patterns (popup open/close, toast fade, HP bar, GridView, drag, tab, cooldown), Runtime UI Caveats (client-only, server-side nil, etc.) | [`references/runtime-patterns.md`](references/runtime-patterns.md) |
| **`.ui` builder invocation methods** (UIBuilder API, anchor presets, write auto-lint, component add/patch/remove) | [`../msw-general/references/builder-protocol-ui.md`](../msw-general/references/builder-protocol-ui.md) §3 UIBuilder (unified entry point — load with the [`builder-protocol.md`](../msw-general/references/builder-protocol.md) core; `.map` MapBuilder / `.model` ModelBuilder live in sibling per-builder files) |
| "sound", "sfx", "click sound", "hover sound", "button audio", "PlaySound" | [`references/ui-sound.md`](references/ui-sound.md) |
---
## 1. Basic Workflow
```
(1) Clarify intent Layout sketch (ASCII or verbal) + which group to attach to
(2) Check design guide Match at least one of ui-fundamentals / ui-hierarchy / component-api §Component Selection Guide
(3) Builder Preflight Read ../msw-general/references/builder-protocol.md (core) + builder-protocol-ui.md §3 (unified call-protocol entry point)
(4) Match recipe Select the closest template from layout-recipes.md
(5) Invoke builder Create/patch via scripts/msw_ui_builder.cjs (protocol: builder-protocol-ui.md §3)
(6) Inject bindings Auto-inject .mlua property default UUIDs via b.write(path, { bind: {...} }) or b.injectBindings(...) (builder-protocol-ui.md §3.6 Binding Injection)
(7) Self-verify write() auto-runs scripts/ui_lint.cjs (strict ON by default)
(8) Preview Visual check via scripts/preview_ui_layout.cjs
(9) Sound pass For any interactive button, offer click/hover SFX wiring (references/ui-sound.md)
(10) Maker Refresh Apply to engine
```
## 2. Global Rules
### NEVER
1. **Do not directly edit `.ui` JSON** — `.ui` creation/modification **must** go through `scripts/msw_ui_builder.cjs`. Manual editing breaks UUID·ValueType·`@components` consistency and causes silent drops.
2. **Read existing `.ui` files through the builder too** — Query via `UIBuilder.read(filepath)` / `.find()` / `.listEntities()`. Do not directly grep/parse raw JSON.
- `.ui` direct `Read` and shell commands such as `cat` / `type` / `Get-Content` / `rg` / `grep` / `sed` / `awk` / `cp` / `mv` are blocked by the registered guard. Use `UIBuilder.read/load/snapshot` for reads and `b.write()` for writes. Deleting an entire `.ui` file has no builder API — delete it with `node -e "require('fs').unlinkSync('ui/<File>.ui')"` then `refresh` (shell `rm`/`cat` are guard-blocked; a `node -e` builder call is not).
3. Set `Position` directly — Use only `anchoredPosition` (Position is engine-managed)
4. Express size via OffsetMin/Max on fixed anchors (AnchorsMin == AnchorsMax) while also using `anchoredPosition` — Do not mix the two modes
5. Builder creates new UUIDs but `.mlua` property defaults are not updated — Binding breaks
### ALWAYS
1. **Builder Protocol Preflight — [`../msw-general/references/builder-protocol.md`](../msw-general/references/builder-protocol.md) (core) + [`../msw-general/references/builder-protocol-ui.md`](../msw-general/references/builder-protocol-ui.md) §3 must be in context before any `.ui` mutation** (read them only if never loaded this session or lost to compaction) (UIBuilder API, write auto-lint, pos / anchor rules, binding injection, coverage gaps). The core carries the shared contract and cross-builder flow; `.map` MapBuilder / `.model` ModelBuilder live in sibling per-builder files — one unified entry point because the cross-flow is interlocked.
2. Check at least one design guide before invoking the builder (`ui-fundamentals` / `ui-hierarchy` / `component-api` §Component Selection Guide)
3. Match a recipe first; build from scratch only as a last resort
4. For edge placement use the formula: `pos = ±(margin + size/2)`
5. Separate popups and toasts into their **own `.ui` root UIGroup**, standalone show/hide; use `empty()` / `panel()` for inner containers, never nested `group()`
6. Verify text `Alignment` default is `UpperLeft(0)` — 95% of "I centered it but it sticks to the left" issues
7. Button touch target ≥ 88×88 (mobile support)
8. **After creating any interactive button** — proactively suggest wiring click/hover SFX via [`references/ui-sound.md`](references/ui-sound.md) (default UI SFX RUIDs available). Skip only if the user explicitly opts out or the button is purely decorative.
9. **Build the tree nested, not flat.** Controls of one unit (window + title/close, row + chip/value, slot + icon/count) must share a parent via `"Parent/Child"` paths so they move / fade / toggle / bind as a block. Create each parent before its children; missing parents fail lint (`L025` ERROR).
10. **Do not stack root-level text over a sibling box.** `ui_lint` reports this as `L030` WARN. Nest the text under the box, use `button()` for clickable labeled boxes, or put a direct label on `panel()` / `sprite()` via their `text` options.
---
## 3. Sub-documents
- [`references/ui-fundamentals.md`](references/ui-fundamentals.md) — Coordinate system, RectTransform 3 elements, anchor mode determination (§1–§8) + Resolution·safe area·PC reserved zones·touch targets·font sizes·platform separation (§9)
- [`references/ui-hierarchy.md`](references/ui-hierarchy.md) — UIGroup / displayOrder / CanvasGroup / Enable vs Visible
- [`references/component-api.md`](references/component-api.md) — §"Component Selection Guide" (which/when/why) + full component property/method/event tables (what) + all UI-related enum values (§Enums)
- [`references/layout-recipes.md`](references/layout-recipes.md) — Layout template collection
- [`references/runtime-patterns.md`](references/runtime-patterns.md) — `.mlua` runtime patterns (popup/toast/HP/grid/drag…) + Runtime UI Caveats
- [`references/ui-sound.md`](references/ui-sound.md) — UI sound integration (`_SoundService:PlaySound`, click/hover hook, default UI SFX RUIDs)
- [`../msw-general/references/builder-protocol-ui.md`](../msw-general/references/builder-protocol-ui.md) §3 — **`.ui` CJS builder call protocol (unified entry point — load with the [`builder-protocol.md`](../msw-general/references/builder-protocol.md) core)** — `.map` MapBuilder / `.model` ModelBuilder live in sibling per-builder files. panel / text / sprite / button / slider / scroll / script / group / mask / grid / avatar / touchReceive / skeleton / areaParticle / basicParticle, component CRUD, anchor presets, write auto-lint, and `.mlua` property UUID auto-binding all live in §3 + §3.6.
- [`references/templates/templates.md`](references/templates/templates.md) — Pre-built style bundle index (`style-N-*` `.ui`, [`ruid-map.md`](references/templates/style-1-black/ruid-map.md), `Popupbutton.mlua`)
## 4. Scripts
- `scripts/msw_ui_builder.cjs` — `.ui` builder core (UIBuilder class). Read [`../msw-general/references/builder-protocol.md`](../msw-general/references/builder-protocol.md) (core) + [`../msw-general/references/builder-protocol-ui.md`](../msw-general/references/builder-protocol-ui.md) §3 (unified entry point) before use.
- `scripts/preview_ui_layout.cjs` — `.ui` layout visual check + touch target warnings
- `scripts/ui_lint.cjs` — `.ui` file self-verification (auto-called by `write()`)
- `scripts/ui_recipe.cjs` — Recipe-based scaffolding
---
## Out of Scope
- `.map` / `.model` / `.tileset` builders — Outside this skill's scope
- `.ui` JSON schema (raw field shapes, `@type`/`@components` wrapping, AlignmentOption 0–15 mapping, etc.) — Handled internally by the builder. Users/AI do not need to know directly
- Accessibility patterns (alt text, screen-reader hints, focus order) — Not covered
- Error-state UI patterns (disabled-button styling beyond `Transition.Disabled`, validation messages, loading spinners) — Not covered; design ad-hoc per project
- Automated UI testing / layout assertions beyond `ui_lint.cjs` and `preview_ui_layout.cjs` — Not provided
- Custom shader materials (`MaterialId`) — Field is exposed but authoring shaders is outside this skill's scope