SRD
SerializeReferenceDropdown provides a streamlined editor interface for managing SerializeReference fields in Unity. Add the [SerializeReferenceDropdown] attribute to instantly get type selection dropdowns, copy/paste functionality, generic type support, and cross-reference management. Designed for Unity 2023+ with full UI Toolkit Inspector compatibility, it simplifies working with polymorphic serialized data while preserving field data during type changes.
com.alexeytaranov.serializereferencedropdown Install via UPM
Add to Unity Package Manager using this URL
https://www.pkglnk.dev/serializereferencedropdown.git README Markdown
Copy this to your project's README.md
## Installation
Add **SRD** to your Unity project via Package Manager:
1. Open **Window > Package Manager**
2. Click **+** > **Add package from git URL**
3. Enter:
```
https://www.pkglnk.dev/serializereferencedropdown.git
```
[](https://www.pkglnk.dev/pkg/serializereferencedropdown)Dependencies (1)
README
SerializeReferenceDropdown
Unity Editor dropdown for SerializeReference Attribute.
RefTo (Reference to SerializeReference).
Features:
- Select type for Serialize Reference
- Copy Paste context menu
- Generic Serialize References
- Keep Data with new type
- Fix cross references
- Open source file
- Highlight Missing Types
- Modify Type Name YAML
- RefTo type: References to Serialize Reference
- Search Tool
- Rider Integration
Recommended:
- Unity 2023+
- Default UI Toolkit Inpsector
Why?
Serialization: Objects referenced from SerializeReference fields now have stable ids, which reduces risk of conflicts when multiple users collaborate on a scene file. This also improves support for undo and prefabs, especially when SerializeReference is used inside arrays and lists. There is a new format for references, with backward compatibility support for older assets.
Serialization: SerializeReference now allow more granular handling of missing types. SerializeReference instances for which the type is missing will be replaced by null. Other instances will be editable and if fields who were previously referring to the missing type are still null the missing type will be preserved.
Installation:
- Select in UPM "Add package from git URL..."
- Install package with link.
https://github.com/AlexeyTaranov/SerializeReferenceDropdown.git
Select type for Serialize Reference
https://github.com/user-attachments/assets/43a6446d-1b4c-48d4-ab4b-de53dd3ba6ab
Code Example
public class TestShapesForSRD : MonoBehaviour
{
[SerializeReferenceDropdown]
[SerializeReference]
private IShape _singleShape;
[SerializeReferenceDropdown]
[SerializeReference]
private IShape[] _shapesArray;
}
public interface IShape
{
}
[Serializable]
public class Circle : IShape
{
[SerializeField]
private float _radius;
}
[Serializable]
public class Rectangle : IShape
{
[SerializeField]
private float _sideA;
[SerializeField]
private float _sideB;
}
Copy/Paste context menu
https://github.com/user-attachments/assets/96cb3d58-b9c1-4874-8048-fc55442b4446
Generics
Unity 2023.2+
You can use generics . Unspecified arguments need select in additional window.
Code Example
public class TestShapesForSRD : MonoBehaviour
{
[SerializeReference, SerializeReferenceDropdown]
private ISimpleGenericData<int> _intData;
}
public interface ISimpleGenericData<TData> : IAbstractData
{
public TData Data { get; }
}
[Serializable]
public class GenericData<TData> : ISimpleGenericData<TData>
{
[SerializeField] private TData _data;
public TData Data => _data;
}
[Serializable]
public class GenericKeyValuePair<TKeyData, TValueData> : ISimpleGenericData<TKeyData>, IAbstractData
{
[SerializeField] private TKeyData _key;
[SerializeField] private TValueData _value;
public TKeyData Data => _key;
}
Keep Data with new type
https://github.com/user-attachments/assets/aa641d95-ae4a-4e6c-92a3-4ec6554833de
Fix cross references
https://github.com/user-attachments/assets/196cc3fe-0866-490c-99eb-14108a57f50f
Open source file
https://github.com/user-attachments/assets/e7a5fe26-6df1-4c03-8688-a07b8219c41d
Highlight Missing Types
WIP: ScriptableObject - OK, everything else - broken.
Bug - https://issuetracker.unity3d.com/product/unity/issues/guid/UUM-129100
Modify Type Name YAML
You can modify type inside file - avoid Unity API. Perfect for fix missing references.
https://github.com/user-attachments/assets/e0c60c15-8619-4d29-a5c2-551eecb3b67a
RefTo type: References to Serialize Reference
This class support references to Serialize References! You can assign RefTo with Drag and Drop or with context menu.
Inspector will help avoid not to assign wrong object types, runtime type checks - "as operator" cast.
https://github.com/user-attachments/assets/10aceba6-89c5-4582-8038-315307d0be6c
[SerializeField] private RefTo<IShape,MonoBehaviour> _refShape;
public void Execute()
{
var sampleString = _refShape.Get()?.ToString();
}
Search Tool
https://github.com/user-attachments/assets/fbf5460c-5ef8-4fde-b888-7943ac12378e
Rider Integration
Rider plugin available here - https://github.com/AlexeyTaranov/SerializeReferenceDropdownIntegration
No comments yet. Be the first!