Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UnityPackage Manager Icon

UnityPackage Manager

A premium, high-performance desktop application to browse, preview, extract, and import .unitypackage archives — with deep Unity Editor integration.

Platform Python PySide6 License


🌟 Overview

UnityPackage Manager is a modern, lightweight utility designed for developers, artists, and level designers who need to quickly inspect, extract, or import assets from a .unitypackage — without waiting for the heavy Unity Editor to boot up. Built with Python and PySide6, it features a stunning, hardware-accelerated dark user interface with glassmorphic styles, smooth transitions, and multi-threaded background workers.


✨ Features

  • ⚡ Zero-Dependency Inspection: Instantly read any .unitypackage without Unity installed.
  • 🌲 Interactive Tree View: Clean visual hierarchy with precise file sizes and dynamic file type icons (Folders, C# Scripts, Textures, Prefabs, Materials, Scenes, Audio).
  • 🔍 Real-time Filter & Search: Instantly search by name or filter assets by category (Scripts, Textures, Audio, Prefabs) via interactive category pills.
  • 🖼️ Premium Live Preview Panel:
    • Images: Renders image previews (PNG, JPG, BMP, TGA, PSD) directly in the sidebar.
    • Code: Displays code files (C# scripts, Shaders, JSON, YAML) with an integrated syntax highlighter.
    • Size Safety: Automatically truncates large text files to keep the interface butter-smooth.
  • 📋 System Clipboard Integration: Copy any asset or folder from the archive straight to your Windows Clipboard and paste it directly (Ctrl+V) inside File Explorer.
  • 🖱️ Drag & Drop Extraction: Drag assets or folders directly from the tree view into File Explorer or any other external application.
  • 🔎 External Previews: Double-click any image or asset to view it instantly in your system's default viewer.
  • ⚙️ Unity Meta Support: Choose to extract or ignore .meta files alongside your assets with a simple checkbox.
  • 🕐 Recent Files Screen: Remembers your top 3 recently opened packages on a polished welcome dashboard.
  • 🚀 Asynchronous Architecture: All archive indexing and file extractions run on isolated background threads, ensuring the UI remains perfectly responsive.
  • 🎮 Open in Unity — Smart Multi-Instance Importer: One-click direct import into any running Unity project without touching Unity Hub (see below).

🎮 Open in Unity

The Open in Unity button (top-right of the workspace header) intelligently detects all active Unity Editor instances and lets you import the currently loaded .unitypackage directly into the right project.

How it works

Scenario Behaviour
No active Unity instance Locates the latest installed Unity Editor automatically (via Registry + standard Unity Hub paths) and launches it with the -importPackage flag.
1 active Unity project Prompts the user to either Import into Active Project (using native single-instance IPC via -openfile) or Open in a New Instance.
2+ active Unity projects Displays a beautiful glassmorphic selector dialog listing all running projects by name and path. The user clicks the target project to import into it directly — no Unity Hub involved.

Detection strategy (zero external dependencies)

  • Queries running Unity.exe processes via WMIC (very fast).
  • Falls back to a PowerShell CimInstance query if WMIC is unavailable or restricted.
  • Parses the -projectPath command-line argument from each process to extract the active project name and directory.
  • Uses Win32 API (EnumWindows + SetForegroundWindow) to bring the target Unity Editor window to the foreground before triggering the import.

🔄 How It Works

graph TD
    A[Drag & Drop / Open .unitypackage] --> B[Fast Asynchronous Indexing]
    B --> C[Interactive Asset Tree Explorer]
    C --> D[Live Code/Texture Sidebar Preview]
    C --> E[Context Menu: Copy to Clipboard]
    C --> F[Selective / Complete Extraction]
    C --> G[Open in Unity Button]
    E --> H[Paste anywhere via Ctrl+V]
    G --> I{Running Unity Instances?}
    I -- None --> J[Launch latest Unity with -importPackage]
    I -- 1 instance --> K[Prompt: Import or New Instance]
    I -- 2+ instances --> L[Glassmorphic Project Selector Dialog]
    K --> M[Import via native IPC -openfile]
    L --> M
Loading

🚀 Getting Started

To run the application from source, make sure you have the following prerequisites installed on your system.

Prerequisites

Component Minimum Version
Python 3.10 or higher
PySide6 Latest release

Installation & Launch

  1. Clone the repository:

    git clone https://github.com/TheIceDragonz/UnityPackage-Manager.git
    cd UnityPackage-Manager
  2. Install the required dependencies:

    pip install PySide6
  3. Launch the application:

    python "UnityPackage Manager.pyw"

⚙️ Navigation & Operations

Interactive Context Menu

Right-click on any element in the folder tree to trigger high-productivity commands:

Action Icon Description
Extract file / folder... ⚡ Extract the selected node (retaining folder structure) to a chosen directory.
Copy to clipboard 📋 Synchronously extracts the item to a temp directory and copies it to the Windows Clipboard for direct pasting.
Copy Unity path 🔗 Copies the asset's internal hierarchy path to the clipboard.
Copy filename 📄 Copies only the final filename of the asset to the clipboard.
Open external preview 🖼️ Extracts the high-res asset/thumbnail and launches it inside your system's default photo/media player.
Recursive Expand/Collapse ↕️ Fully expands or collapses all descendants under the selected folder.

📂 Configuration Storage

Application preferences (such as your recently opened packages) are automatically stored in the local application data directory to ensure persistence:

%APPDATA%\UnityPackage Manager\settings.ini

🤝 Contributing

Contributions are always welcome! If you want to suggest an improvement or report a bug:

  1. Fork the repository.
  2. Create a Feature Branch (git checkout -b feature/AmazingFeature).
  3. Commit your changes (git commit -m 'Add some AmazingFeature').
  4. Push to the branch (git push origin feature/AmazingFeature).
  5. Open a Pull Request.

📄 License

Distributed under the MIT License. See the LICENSE file for more details.


Made with ❤️ using Python & PySide6

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages