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

spinner

Data Flow

spinner

Key Concepts

Concept
Description

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

File
Description

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 in Paragon.Editor.LowLevel providing cached reflection access

  • ThirdPartyPackage — Wraps extracted ImportPackageItem arrays for processing

  • ThirdPartyPackageVersion — Consumes Package, PackageVersion, and SemVersion proxies

  • PackageManagerExtension — Uses PackageSelectionObject and ServicesContainer for UI integration

Last updated