Skip to content

SerializeReferenceSelector #10

@VPDPersonal

Description

@VPDPersonal

A first-class type picker for [SerializeReference] managed-reference fields, built on the package's existing [TypeSelector]. It replaces Unity's bare managed-reference UI — and the need for a third-party subclass-dropdown plugin — with a hierarchical picker plus full integrity tooling.

Why

Pain today What this gives
Unity's default [SerializeReference] UI has no type picker Hierarchical dropdown with search, categories, favorites & recents
Teams pull in a third-party plugin (SerializeReferenceDropdown) just to get a dropdown First-party, zero extra dependencies — already in the package via [TypeSelector]
Missing / renamed types silently break assets, with no recovery Detect + repair straight from YAML, at any depth, with ranked Smart Fix
No project-wide view of managed references Managed References window — per-asset graph + project-wide audit

Goal: the best-in-market SerializeReference selector, owned end-to-end inside Aspid.

Scope

Area Capability
Picker [TypeSelector] on single / array / List<T> [SerializeReference] fields; pick → instantiate, <None> → clear, nested props inline; candidates narrowable with typeof(...)
Generics Open generics (Modifier<T>) — args inferred or picked with constraints
Editing Data preserved on type switch; Copy/Paste; multi-object edit; IMGUI + UIToolkit
Picker UX [TypeSelectorItem] (name / category / tooltip / icon / order); favorites & recents; collapsible groups + search
Repair YAML-based missing-type detection (works around UUM-129100); inline Fix at any depth; saved assets, Prefab Mode, saved scenes; Smart Fix; Make Unique for aliases
Project tooling Usage index → Find Usages + sr: Quick Search; delete-script guard; proactive breakage notification; build/CI gate; [SerializeReferenceRequired]; Project Settings
Window Managed References workbench — Inspect Asset (graph) + Project Audit (bulk fix with diff preview)

Connection to Aspid.MVVM

This is the concrete motivation, not a hypothetical:

  • Aspid.MVVM already embeds Aspid.FastTools (tech.aspid.fasttools, since MVVM PR Restructure READMEs, switch demos to GIFs, refresh samples #26).
  • Its StarterKit also depends on the external com.alexeytaranov.serializereferencedropdown (pinned 1.2.7, repo AlexeyTaranov/SerializeReferenceDropdown), used only for the [SerializeReferenceDropdown] attribute — across ~76 sites (binders, converters, commands).
  • Once [TypeSelector] covers [SerializeReference] (this issue), MVVM can drop that external dependency and migrate [SerializeReferenceDropdown][TypeSelector], consolidating on one first-party tool and gaining repair / graph / generics / favorites for free.

→ Aspid.MVVM becomes the first internal consumer that validates this selector in a large real codebase.

Tracking on the MVVM side: VPDPersonal/Aspid.MVVM#123.

Status

Implemented by #49 (open).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status
    In progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions