307 lines
9.2 KiB
Markdown
307 lines
9.2 KiB
Markdown
|
|
# Card System UI Setup Guide
|
||
|
|
|
||
|
|
This guide provides detailed instructions for setting up the Card System UI in Unity, organized into prefabs that can be easily maintained and modified.
|
||
|
|
|
||
|
|
## Prefab Structure Overview
|
||
|
|
|
||
|
|
The card system UI should be structured with a modular prefab approach:
|
||
|
|
|
||
|
|
1. **Main Card System Prefab** - Contains the CardAlbumUI component and core structure
|
||
|
|
2. **Individual UI Page Prefabs** - Each page as its own prefab
|
||
|
|
3. **Card UI Prefabs** - For cards and card slots
|
||
|
|
|
||
|
|
## Detailed Prefab Structure
|
||
|
|
|
||
|
|
### Main CardSystem Prefab
|
||
|
|
|
||
|
|
```
|
||
|
|
CardSystem (with CardAlbumUI component)
|
||
|
|
├── BackpackIcon (GameObject)
|
||
|
|
│ ├── BackpackImage (Image)
|
||
|
|
│ ├── BoosterCountText (Text)
|
||
|
|
│ └── NotificationDot (GameObject with Image)
|
||
|
|
├── UIPageController (automatically added by CardAlbumUI if not present)
|
||
|
|
└── Notifications (GameObject)
|
||
|
|
└── NewCardNotification (GameObject)
|
||
|
|
├── Background (Image)
|
||
|
|
└── Text (Text)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Page Prefabs
|
||
|
|
|
||
|
|
**1. MainMenuPage Prefab:**
|
||
|
|
```
|
||
|
|
MainMenuPage (with CardMenuPage component & CanvasGroup)
|
||
|
|
├── Background (Image)
|
||
|
|
├── Title (Text)
|
||
|
|
├── OpenBoosterButton (Button)
|
||
|
|
│ └── Text (Text)
|
||
|
|
├── ViewAlbumButton (Button)
|
||
|
|
│ └── Text (Text)
|
||
|
|
├── ChangeClothesButton (Button)
|
||
|
|
│ └── Text (Text)
|
||
|
|
└── NoBoostersMessage (GameObject)
|
||
|
|
└── Text (Text)
|
||
|
|
```
|
||
|
|
|
||
|
|
**2. AlbumViewPage Prefab:**
|
||
|
|
```
|
||
|
|
AlbumViewPage (with AlbumViewPage component & CanvasGroup)
|
||
|
|
├── Background (Image)
|
||
|
|
├── FilterPanel (GameObject)
|
||
|
|
│ ├── ZoneFilterDropdown (Dropdown)
|
||
|
|
│ │ ├── Label (Text)
|
||
|
|
│ │ └── Arrow (Image)
|
||
|
|
│ ├── RarityFilterDropdown (Dropdown)
|
||
|
|
│ │ ├── Label (Text)
|
||
|
|
│ │ └── Arrow (Image)
|
||
|
|
│ └── ResetFiltersButton (Button)
|
||
|
|
│ └── Text (Text)
|
||
|
|
├── AlbumScrollView (ScrollRect)
|
||
|
|
│ └── AlbumGrid (GridLayoutGroup)
|
||
|
|
├── CardStackContainer (RectTransform)
|
||
|
|
└── EmptyAlbumMessage (GameObject)
|
||
|
|
└── Text (Text)
|
||
|
|
```
|
||
|
|
|
||
|
|
**3. BoosterOpeningPage Prefab:**
|
||
|
|
```
|
||
|
|
BoosterOpeningPage (with BoosterOpeningPage component & CanvasGroup)
|
||
|
|
├── Background (Image)
|
||
|
|
├── BoosterPackObject (GameObject)
|
||
|
|
│ └── BoosterImage (Image)
|
||
|
|
├── CardRevealTransform (Transform)
|
||
|
|
├── OpenBoosterButton (Button)
|
||
|
|
│ └── Text (Text)
|
||
|
|
├── ContinueButton (Button)
|
||
|
|
│ └── Text (Text)
|
||
|
|
├── CardRevealSound (AudioSource)
|
||
|
|
├── RareCardSound (AudioSource)
|
||
|
|
├── CardRevealParticles (ParticleSystem)
|
||
|
|
└── RareCardParticles (ParticleSystem)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Card-Related Prefabs
|
||
|
|
|
||
|
|
**1. CardSlotPrefab:**
|
||
|
|
```
|
||
|
|
CardSlot (GameObject)
|
||
|
|
├── Background (Image)
|
||
|
|
└── SlotLabel (Text)
|
||
|
|
```
|
||
|
|
|
||
|
|
**2. CardPrefab:**
|
||
|
|
```
|
||
|
|
Card (with CardUIElement component & Button)
|
||
|
|
├── CardBackground (Image)
|
||
|
|
├── CardFrame (Image)
|
||
|
|
├── CardImage (Image)
|
||
|
|
├── CardNameText (Text)
|
||
|
|
├── CardDescriptionText (Text)
|
||
|
|
├── ZoneLabel (Text)
|
||
|
|
└── RarityIndicator (Image)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Component Setup Guide
|
||
|
|
|
||
|
|
### CardAlbumUI Component Setup
|
||
|
|
|
||
|
|
This is the central controller for the card system:
|
||
|
|
|
||
|
|
```
|
||
|
|
CardAlbumUI Component Inspector:
|
||
|
|
- UI References:
|
||
|
|
- Backpack Icon: [BackpackIcon GameObject]
|
||
|
|
- Main Menu Page: [MainMenuPage Prefab]
|
||
|
|
- Album View Page: [AlbumViewPage Prefab]
|
||
|
|
- Booster Opening Page: [BoosterOpeningPage Prefab]
|
||
|
|
- UI Elements:
|
||
|
|
- Backpack Button: [BackpackIcon Button Component]
|
||
|
|
- Booster Count Text: [BoosterCountText Component]
|
||
|
|
- Notification Dot: [NotificationDot GameObject]
|
||
|
|
- Backpack Animation Target: [BackpackIcon Transform]
|
||
|
|
- New Card Notification: [NewCardNotification GameObject]
|
||
|
|
- Notification Settings:
|
||
|
|
- Notification Duration: 3 seconds (adjustable)
|
||
|
|
- Notification Sound: [AudioSource Component]
|
||
|
|
```
|
||
|
|
|
||
|
|
### CardMenuPage Component Setup
|
||
|
|
|
||
|
|
```
|
||
|
|
CardMenuPage Component Inspector:
|
||
|
|
- Menu Options:
|
||
|
|
- Open Booster Button: [OpenBoosterButton]
|
||
|
|
- View Album Button: [ViewAlbumButton]
|
||
|
|
- Change Clothes Button: [ChangeClothesButton]
|
||
|
|
- UI Elements:
|
||
|
|
- Booster Count Text: [BoosterCountText]
|
||
|
|
- No Boosters Message: [NoBoostersMessage]
|
||
|
|
- Canvas Group: [CanvasGroup on this GameObject]
|
||
|
|
```
|
||
|
|
|
||
|
|
### AlbumViewPage Component Setup
|
||
|
|
|
||
|
|
```
|
||
|
|
AlbumViewPage Component Inspector:
|
||
|
|
- Album UI Elements:
|
||
|
|
- Album Grid: [AlbumGrid Component]
|
||
|
|
- Card Stack Container: [CardStackContainer Transform]
|
||
|
|
- Empty Album Message: [EmptyAlbumMessage GameObject]
|
||
|
|
- Card Slot Prefab: [CardSlotPrefab Asset]
|
||
|
|
- Card Prefab: [CardPrefab Asset]
|
||
|
|
- Filter UI:
|
||
|
|
- Zone Filter Dropdown: [ZoneFilterDropdown]
|
||
|
|
- Rarity Filter Dropdown: [RarityFilterDropdown]
|
||
|
|
- Reset Filters Button: [ResetFiltersButton]
|
||
|
|
- Canvas Group: [CanvasGroup on this GameObject]
|
||
|
|
```
|
||
|
|
|
||
|
|
### BoosterOpeningPage Component Setup
|
||
|
|
|
||
|
|
```
|
||
|
|
BoosterOpeningPage Component Inspector:
|
||
|
|
- UI Elements:
|
||
|
|
- Booster Pack Object: [BoosterPackObject]
|
||
|
|
- Card Reveal Transform: [CardRevealTransform]
|
||
|
|
- Card Prefab: [CardPrefab Asset]
|
||
|
|
- Open Booster Button: [OpenBoosterButton]
|
||
|
|
- Continue Button: [ContinueButton]
|
||
|
|
- Canvas Group: [CanvasGroup on this GameObject]
|
||
|
|
- Animation Settings:
|
||
|
|
- Card Reveal Delay: 0.5 (adjustable)
|
||
|
|
- Card Move To Backpack Delay: 1.0 (adjustable)
|
||
|
|
- Backpack Target Transform: [BackpackIcon Transform]
|
||
|
|
- Card Reveal Sound: [CardRevealSound Component]
|
||
|
|
- Rare Card Sound: [RareCardSound Component]
|
||
|
|
- Card Reveal Particles: [CardRevealParticles Component]
|
||
|
|
- Rare Card Particles: [RareCardParticles Component]
|
||
|
|
```
|
||
|
|
|
||
|
|
### CardUIElement Component Setup
|
||
|
|
|
||
|
|
```
|
||
|
|
CardUIElement Component Inspector:
|
||
|
|
- Card UI Elements:
|
||
|
|
- Card Background Image: [CardBackground Image]
|
||
|
|
- Card Frame Image: [CardFrame Image]
|
||
|
|
- Card Image: [CardImage]
|
||
|
|
- Card Name Text: [CardNameText]
|
||
|
|
- Card Description Text: [CardDescriptionText]
|
||
|
|
- Zone Label: [ZoneLabel Text]
|
||
|
|
- Rarity Label: [RarityIndicator Image]
|
||
|
|
```
|
||
|
|
|
||
|
|
## Prefab Creation Process
|
||
|
|
|
||
|
|
### 1. Create Card-Related Prefabs First
|
||
|
|
|
||
|
|
Start by creating the card prefabs since other prefabs will reference them:
|
||
|
|
|
||
|
|
1. **Create CardSlotPrefab**:
|
||
|
|
- Create GameObject → UI → Image
|
||
|
|
- Add Text component for slot label
|
||
|
|
- Adjust visual appearance for an empty slot
|
||
|
|
- Save as prefab
|
||
|
|
|
||
|
|
2. **Create CardPrefab**:
|
||
|
|
- Create GameObject → UI → Image (for background)
|
||
|
|
- Add child Images for frame and card art
|
||
|
|
- Add Text components for name, description, zone
|
||
|
|
- Add CardUIElement script
|
||
|
|
- Configure Inspector references
|
||
|
|
- Add Button component
|
||
|
|
- Save as prefab
|
||
|
|
|
||
|
|
### 2. Create UI Page Prefabs
|
||
|
|
|
||
|
|
Create each page prefab individually:
|
||
|
|
|
||
|
|
1. **Create MainMenuPage Prefab**:
|
||
|
|
- Set up UI elements as shown in structure
|
||
|
|
- Add CardMenuPage script
|
||
|
|
- Add CanvasGroup component
|
||
|
|
- Configure all Inspector references
|
||
|
|
- Save as prefab
|
||
|
|
|
||
|
|
2. **Create AlbumViewPage Prefab**:
|
||
|
|
- Set up UI elements as shown in structure
|
||
|
|
- Add AlbumViewPage script
|
||
|
|
- Add CanvasGroup component
|
||
|
|
- Configure all Inspector references
|
||
|
|
- Assign CardSlotPrefab and CardPrefab
|
||
|
|
- Save as prefab
|
||
|
|
|
||
|
|
3. **Create BoosterOpeningPage Prefab**:
|
||
|
|
- Set up UI elements as shown in structure
|
||
|
|
- Add BoosterOpeningPage script
|
||
|
|
- Add CanvasGroup component
|
||
|
|
- Add audio sources and particle systems
|
||
|
|
- Configure all Inspector references
|
||
|
|
- Assign CardPrefab
|
||
|
|
- Save as prefab
|
||
|
|
|
||
|
|
### 3. Create Main CardSystem Prefab
|
||
|
|
|
||
|
|
Finally, create the main controller prefab:
|
||
|
|
|
||
|
|
1. **Create CardSystem GameObject**:
|
||
|
|
- Add CardAlbumUI script
|
||
|
|
- Set up BackpackIcon and Notifications as shown in structure
|
||
|
|
- Assign references to page prefabs (not instances)
|
||
|
|
- Configure all Inspector references
|
||
|
|
- Save as prefab
|
||
|
|
|
||
|
|
## Scene Setup Instructions
|
||
|
|
|
||
|
|
### 1. Add CardSystem to Your Scene
|
||
|
|
|
||
|
|
1. Drag the CardSystem prefab into your scene
|
||
|
|
2. Make sure it's on the UI layer
|
||
|
|
3. Verify it has a Canvas component if needed (or is under a Canvas)
|
||
|
|
|
||
|
|
### 2. Configure the CardSystemManager
|
||
|
|
|
||
|
|
1. Create a GameObject named "CardSystemManager" if not already present
|
||
|
|
2. Add the CardSystemManager script
|
||
|
|
3. Populate it with some test card definitions
|
||
|
|
4. Ensure it's marked as DontDestroyOnLoad if needed
|
||
|
|
|
||
|
|
### 3. Test the System
|
||
|
|
|
||
|
|
1. Enter Play mode
|
||
|
|
2. Test clicking the backpack icon
|
||
|
|
3. Add test booster packs: `CardSystemManager.Instance.AddBoosterPack(3)`
|
||
|
|
4. Test opening boosters and viewing the album
|
||
|
|
|
||
|
|
## Additional Tips
|
||
|
|
|
||
|
|
1. **Canvas Settings**:
|
||
|
|
- Set your Canvas to Screen Space - Overlay
|
||
|
|
- Use Scale With Screen Size with reference resolution 1920x1080
|
||
|
|
- Configure the Canvas Scaler for proper UI scaling
|
||
|
|
|
||
|
|
2. **UI Navigation**:
|
||
|
|
- Configure button navigation for keyboard/controller support
|
||
|
|
- Set tab order for accessibility
|
||
|
|
|
||
|
|
3. **Audio Setup**:
|
||
|
|
- Keep audio sources on the respective UI elements
|
||
|
|
- Adjust spatial blend to 0 (2D) for UI sounds
|
||
|
|
- Use appropriate volume for notification sounds
|
||
|
|
|
||
|
|
4. **Animation Considerations**:
|
||
|
|
- All animations use Pixelplacement.Tween
|
||
|
|
- Adjust animation durations in Inspector for fine-tuning
|
||
|
|
- Consider creating animation presets for consistent feel
|
||
|
|
|
||
|
|
5. **Testing on Different Devices**:
|
||
|
|
- Test the UI on different aspect ratios
|
||
|
|
- Ensure UI elements are anchored properly for different resolutions
|
||
|
|
- Use the Device Simulator to test mobile layouts if targeting mobile
|
||
|
|
|
||
|
|
6. **Performance Tips**:
|
||
|
|
- Consider object pooling for cards in large collections
|
||
|
|
- Disable raycast targets on non-interactive elements
|
||
|
|
- Use sprite atlases for card images
|