TypeSelect
| Summary | A editor tool that adds a [TypeSelector] attribute, enabling easy selection of inherited types in the inspector. |
|---|---|
| Description |
About Type select adds `[TypeSelector]` attribute putting this on a property will allow you to select an inherited type in the editor as shown here: [Image] WARNING to make sure your types get serialized correctly you need to make use of the `[JsonPolymorphic]` and `[JsonDerivedType]` attributes. And for the latter make sure to set a typeDiscirimnator or it wil not work !!!! EXAMPLE CODE [GameResource( "Quest", "quest", "A quest given to the user !", Category = "quest" )] public class Quest : GameResource { [Property,InlineEditor,TypeSelector] public TaskBase Task { get; set; } } //The two attributes here are from .net [JsonPolymorphic] [JsonDerivedType( typeof(Collect), "Collect" )] // Yeah you have to do this for every type. blame C#, not me. public abstract class TaskBase //Because this class is abstract it will not showup in the menu. { [Property] public string QuestName {get;set};// all types will show this } public class Collect : TaskBase { [Property] public int AmountToCollect {get;set;} } public class TalkTo : TaskBase { [Property] public GameObject Target {get;set;} } TODO ☐ Search functionality in the menuAbout
Type select adds `[TypeSelector]` attribute putting this on a property will allow you to select an inherited type in the editor as shown here:
[Image]
WARNING
to make sure your types get serialized correctly you need to make use of the `[JsonPolymorphic]` and `[JsonDerivedType]` attributes.
And for the latter make sure to set a typeDiscirimnator or it wil not work !!!!
EXAMPLE CODE
[GameResource( "Quest", "quest", "A quest given to the user !", Category = "quest" )]
public class Quest : GameResource
{
[Property,InlineEditor,TypeSelector] public TaskBase Task { get; set; }
}
//The two attributes here are from .net
[JsonPolymorphic]
[JsonDerivedType( typeof(Collect), "Collect" )] // Yeah you have to do this for every type. blame C#, not me.
public abstract class TaskBase //Because this class is abstract it will not showup in the menu.
{
[Property] public string QuestName {get;set};// all types will show this
}
public class Collect : TaskBase
{
[Property] public int AmountToCollect {get;set;}
}
public class TalkTo : TaskBase
{
[Property] public GameObject Target {get;set;}
}
TODO
☐ Search functionality in the menu
|
| Votes | 2 0 0 |
| Error Rate | 0% |
| Data | {} |