dbrizov / NaughtyAttributes

Attribute Extensions for Unity
MIT License
4.47k stars 463 forks source link

TypeDropdown Attribute #354

Open apilola opened 1 year ago

apilola commented 1 year ago

I've written this attribute using the SerializedReference API. It should work with pretty much any Non UnityEngine.Object derived type. Here is an example of it in action. I would submit a pull request for it, but it requires the project to be upgraded to 2021.2.

I could use a preprocessor directive to hide it, after I make my pull request. What are your thoughts?

TypeDropdown

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AnimalTest : MonoBehaviour
{
    [SerializeReference, TypeDropdown(typeof(Animal))] Animal MyPet;
}

[System.Serializable]
public class Animal
{
    public string nickname = "Silly Billy";
}

public class Dog : Animal
{
    public string Breed = "Golden Retriever";
}

public class Cat : Animal
{
    public int lives = 9;
}
apilola commented 1 year ago

Quck Note: When switching between types, the property will automatically try to copy any fields from the original object to the destination object.

antiNT2 commented 1 year ago

I am really interested in this !

apilola commented 1 year ago

What do you think? Should I submit a pull request with a preprocessor directive hiding it from older versions of unity?

Vatredox commented 1 year ago

Hey! What's the progress on this?

dbrizov commented 1 year ago

I am about to merge a lot of pull requests next weekend, so I will include it :)

apilola commented 1 year ago

Formerly Created a PR here: https://github.com/dbrizov/NaughtyAttributes/pull/368