From a139c8c097c9db790c7d518cffa6c4232881530e Mon Sep 17 00:00:00 2001 From: quabug Date: Sun, 14 Mar 2021 23:06:00 +0800 Subject: [PATCH] makes option name of derived type more readable. --- Assets/Sample/MyMonoBehavior.cs | 9 +++++---- .../generic-serialize-reference/Editor/Extensions.cs | 9 +++++++++ .../GenericSerializeReferenceFieldAttributeDrawer.cs | 2 +- Packages/generic-serialize-reference/package.json | 2 +- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Assets/Sample/MyMonoBehavior.cs b/Assets/Sample/MyMonoBehavior.cs index df22cab..ac55895 100644 --- a/Assets/Sample/MyMonoBehavior.cs +++ b/Assets/Sample/MyMonoBehavior.cs @@ -3,13 +3,14 @@ public interface IMyInterface {} public class MyIntObject : IMyInterface {} +public class MyGenericObject : IMyInterface {} public struct StructWillNotShow : IMyInterface {} public class MyMonoBehavior : MonoBehaviour { [GenericSerializeReference] public IMyInterface Value { get; set; } - - [GenericSerializeReference("_serialized")] - public IMyInterface Foo { get; set; } - private int __Foo; + // + // [GenericSerializeReference("_serialized")] + // public IMyInterface Foo { get; set; } + // private int __Foo; } \ No newline at end of file diff --git a/Packages/generic-serialize-reference/Editor/Extensions.cs b/Packages/generic-serialize-reference/Editor/Extensions.cs index 701ba10..777d6a9 100644 --- a/Packages/generic-serialize-reference/Editor/Extensions.cs +++ b/Packages/generic-serialize-reference/Editor/Extensions.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.RegularExpressions; using Mono.Cecil; using Mono.Cecil.Cil; using Mono.Cecil.Rocks; @@ -25,6 +26,14 @@ public static int FindLastIndexOf(this IList list, Predicate predicate) } } + internal static class ReflectionExtension + { + public static string ToReadableName(this Type type) + { + return type.IsGenericType ? Regex.Replace(type.ToString(), @"(\w+)`\d+\[(.*)\]", "$1<$2>") : type.ToString(); + } + } + internal static class CecilExtension { public static TypeDefinition ToTypeDefinition(this ModuleDefinition module) => diff --git a/Packages/generic-serialize-reference/Editor/GenericSerializeReferenceFieldAttributeDrawer.cs b/Packages/generic-serialize-reference/Editor/GenericSerializeReferenceFieldAttributeDrawer.cs index 4d7ffc6..eb45702 100644 --- a/Packages/generic-serialize-reference/Editor/GenericSerializeReferenceFieldAttributeDrawer.cs +++ b/Packages/generic-serialize-reference/Editor/GenericSerializeReferenceFieldAttributeDrawer.cs @@ -128,7 +128,7 @@ private void AddItemToContextMenu(Type type, GenericMenu genericMenuContext, Ser { // it must have a BaseType var assemblyName = type.BaseType.Assembly.ToString().Split('(', ',')[0]; - var entryName = type.BaseType + " ( " + assemblyName + " )"; + var entryName = type.BaseType.ToReadableName() + " ( " + assemblyName + " )"; genericMenuContext.AddItem(new GUIContent(entryName), false, AssignNewInstanceCommand, new GenericMenuParameterForAssignInstanceCommand(type, property)); } diff --git a/Packages/generic-serialize-reference/package.json b/Packages/generic-serialize-reference/package.json index 316e92e..8fa3ba2 100644 --- a/Packages/generic-serialize-reference/package.json +++ b/Packages/generic-serialize-reference/package.json @@ -1,7 +1,7 @@ { "name": "com.quabug.generic-serialize-reference", "description": "Automatically alter generic field of SerializeReference into its non-generic form", - "version": "1.1.0", + "version": "1.1.1", "unity": "2020.2", "displayName": "GenericSerializeReference", "samples": [