From ac45d6dc9316699e6502562bedbba912cc40e629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=8B=A5=E8=BE=B0?= Date: Tue, 17 Mar 2026 11:28:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20AttributeLibrary?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AttributeLibrary.md | 67 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 6 deletions(-) diff --git a/AttributeLibrary.md b/AttributeLibrary.md index 5bfd787..d5c8f3c 100644 --- a/AttributeLibrary.md +++ b/AttributeLibrary.md @@ -1,7 +1,62 @@ -* CanFind$ - 其中包含多个特性类,用于查找类,字段,属性,方法等项目。 +## ReName +重命名特性 -* ReName - 重命名特性,在没有安装odin插件的旧版本引擎上可以直接替换细节面板中的参数名。 - 不过由于无法和odin兼容,odin的功能会覆盖掉这个特性,同时在2018(大概)以上的版本中也没用。 - 虽然大多数情况下不起作用,但仍可以使用配套的一系列方法来处理这个特性,如批量查找,ugui系统重命名等。 +在没有安装odin插件的旧版本Unity(<=2021)上可以直接替换细节面板中的参数名。 +不过由于无法和odin兼容,odin的功能会覆盖掉这个特性. +虽然大多数情况下不起作用,但仍可以使用配套的一系列方法来处理这个特性,如批量查找,ugui系统重命名等。 + +``` +var obj = new MyObject(); + +// 比如 MyObject 中有一个字段叫 getvalue ,那么可以这样调用,返回为找到的 ReName 标记,如果没找到,则返回null +RenameAttribute.GetRenameAttribute(typeof(MyObject), "getvalue") + +``` + +此特性用法比较早期,只能用来找一下是否标记了自定义的别名。 + +## CanFind +可查找特性 + +你可以在任何位置使用该特性进行标记,使用字符串或枚举进行标记均可,内部会转为统一的字符串形式进行保存。 + +在需要进行查找的时候,使用对应的扩展方法即可: +``` +var obj = new MyObject(); + +// 在实例上查找标签,这会返回目标实例上的所有特性标签(以字符串格式) +obj.GetClassCanFindTag() + +// 在类型上查找标签,这会返回类型上所有特性标签(以字符串格式) +typeof(MyObject).GetClassCanFindTag() + +// 在标签上查找类型,这会返回所有带有指定标签名称的类型 +("标签").GetClassByCanFindTag() + +// 在枚举上查找类型,这会返回所有带有指定标签名称的类型 +myEnum.classTag.GetClassByCanFindTag() + +``` + +可查找特性可以在一个类上重复标记,比如我定义了一个接口类,我希望定义它使用的请求地址,域名,方法等等,我可以像这样重复标记: +``` +public static Uri LocalhostEnvironmentUriRoot = new Uri("http://192.168.0.48:8081"); +[Serializable] +[CanFindClass("Post")] +[CanFindClass(nameof(LocalhostEnvironmentUriRoot))] +public class Ques_ExposeSegmentDetailSegmodel +{ + // ... +} + +// 这样在面对一个接口时,可以直接对其 +if (ques.GetClassCanFindTag().Contains(nameof(LocalhostEnvironmentUriRoot))) + // 切换到这个域名 +``` +只是举个例子,随便找一些自己喜欢的东西就行。 + + +## CusMe +自定义菜单特性 + +一个比较复合的用法,使用相关的特性对一个类进行标记后,在生成界面的时候可以直接使用这个类型的对象自动生成界面,生成的界面和这个类中的标记字段对应。 \ No newline at end of file