TypeSelect

thumb
Identthedimin.typeselect
Typelibrary
Created
Updated
Latest Version 92351 3.1 KB ~3
Tags attribute attributes development easy editor extension polymorphism reflection serialization tool ui ui workflow
Links s&box
SummaryA 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 menu
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 menu
Votes 2 0 0
Error Rate0%
Data
{}