.claude/skills/ui-module/SKILL.md
UIModule reference — panel management, dialog service, notifications, loading screen, and localized UI components. Use when working with UI panels, popups, dialogs, or localized text/images.
npx skillsauth add punkfuncgames/tetris-clone ui-moduleInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Package: com.punkfuncgames.ui | Define: PUNKFUNC_UI
Location: Packages/com.punkfuncgames.ui/Runtime/PunkFuncGames.UI/
Namespace: PunkFuncGames.UI
ReadOnlyReactiveProperty<string> ActivePanelUniTask<T> ShowPanelAsync<T>(string panelId, UILayer layer, object data, ct) where T : classUniTask HidePanelAsync(string panelId, ct)UniTask HideAllInLayerAsync(UILayer layer, ct)bool IsPanelVisible(string panelId)ReadOnlyReactiveProperty<bool> IsModalOpenUniTask<bool> ShowConfirmAsync(title, message, confirmText, cancelText, ct)UniTask ShowAlertAsync(title, message, okText, ct)ShowNotification(message, duration), ShowSuccess(message, duration)ShowWarning(message, duration), ShowError(message, duration)UniTask ShowLoadingAsync(message, ct), UniTask HideLoadingAsync(ct)SetLoadingProgress(float progress, message)Background(0), Default(1), Popup(2), Modal(3), Overlay(4), Loading(5)
Single service implements all 4 interfaces. Dependencies: IAssetService
[UIService] root GameObject (DontDestroyOnLoad) with layer containersIAssetService and cached in _loadedPanelsIDataReceiver interface for passing data to panels on showIDataReceiver — implement on panels: void ReceiveData(object data)
| Event | Key Fields |
|-------|------------|
| UIPanelOpenedEvent | PanelId, Layer |
| UIPanelClosedEvent | PanelId |
LocalizedText : MonoBehaviour (inject ILocalizationService)
_key, _formatArgs, _uppercase, _lowercaseSetTextWithArgs(params object[] args)LocalizedImage : MonoBehaviour (inject ILocalizationService)
_basePath, _useAddressables, _fallbackSpriteLocalizedAudio : MonoBehaviour (inject ILocalizationService)
_basePath, _autoPlay, _fallbackClipPlay(), Stop(), Refresh()MainMenuPanel : ViewBase — Play, Settings, Quit buttons. Uses ISceneService, IPanelService. GameplayPanel : ViewBase — Return to menu button. Uses ISceneService, IPanelService. SettingsPanel : ViewBase — Stub (todo). UndoHistoryPanel : ViewBase — Undo/Redo/Clear buttons with reactive label bindings.
UIInstaller.Install(builder, options);
// Registers: UIService as EntryPoint (IPanelService, IDialogService, INotificationService, ILoadingService)
// Events: UIPanelOpenedEvent, UIPanelClosedEvent
// Show a panel
MyPanel panel = await _panelService.ShowPanelAsync<MyPanel>("MyPanel", UILayer.Popup);
// Show a confirmation dialog
bool confirmed = await _dialogService.ShowConfirmAsync("Delete?", "Are you sure?");
// Create a panel that receives data
public sealed class ShopPanel : ViewBase, IDataReceiver
{
public void ReceiveData(object data)
{
if (data is ShopConfig config) Initialize(config);
}
}
// Show with data
await _panelService.ShowPanelAsync<ShopPanel>("ShopPanel", UILayer.Default, myShopConfig);
development
WalletModule reference — currency management with BigDouble support, reactive properties, caps, lifetime stats, and persistence. Use when working with currencies, wallets, or financial systems.
development
UnlockConditionModule reference — composable unlock conditions using ScriptableObjects with AND/OR/NOT logic, stat/currency/upgrade/prestige/gamestate/boolean checks, reactive service layer with progress tracking. Use when implementing unlock systems, gating, or progression requirements.
development
UndoModule reference — command pattern with undo/redo stacks, command merging, and reactive state. Use when implementing undo/redo, undoable actions, or command patterns.
tools
Unity UI Toolkit reference — UXML documents, USS styling, MVVM pattern (ViewModel + Presenter), custom VisualElements, responsive layout, animations, performance guidelines, and complete Figma-to-UI-Toolkit property mapping. Use when building or modifying UI with UI Toolkit, creating UXML/USS files, writing ViewModels or Presenters, designing screens/panels/components, or converting Figma designs to UI Toolkit.