Internals
Reflection-based proxy layer that exposes Unity's internal Package Manager and asset import APIs. Every class in this folder uses the InternalProxy<T> pattern to wrap private Unity types, enabling the ThirdPartyPackageManager system to programmatically query Asset Store packages, extract .unitypackage contents, and drive the import wizard — all through Unity's own internal machinery.
Architecture
Data Flow
Key Concepts
InternalProxy pattern
Every class extends InternalProxy<T>, using the [InternalProxy] attribute to map to a private Unity type. Field/property/method access is handled through cached reflection
Cached proxies
Expensive proxy objects (e.g., Product, AssetVersionList, SemVersion) are cached in constructor-time readonly fields to avoid repeated reflection calls
ServicesContainer
Entry point for Unity's internal DI container — resolves IPackageDatabase to get the PackageDatabase singleton
Import pipeline
PackageUtility extracts items → wrapped as ImportPackageItem → processed by Processors → fed into PackageImport/PackageImportWizard
Files
Proxy for version tracking — primary, imported, and latest PackageVersion
Proxy for individual import items with path, status, and conflict metadata
Proxy for an Asset Store package with product info and version list
Proxy for Unity's internal package database — lookup by ID
Proxy for the import dialog window — shows import UI and accesses items
Proxy for the multi-step import wizard — drives step navigation
Proxy for the currently selected package in Package Manager UI
Proxy for package extraction — extracts .unitypackage contents
Proxy for a specific version of a package — description, path, version info
Proxy for Asset Store product metadata — ID, URL, description, release notes
Proxy for semantic versioning with comparison operators
Static entry point to Unity's internal DI container
See Also
InternalProxy<T>— Base class inParagon.Editor.LowLevelproviding cached reflection accessThirdPartyPackage— Wraps extractedImportPackageItemarrays for processingThirdPartyPackageVersion— ConsumesPackage,PackageVersion, andSemVersionproxiesPackageManagerExtension— UsesPackageSelectionObjectandServicesContainerfor UI integration
Last updated