3
AttributeLibrary
李若辰 edited this page 2026-03-17 11:35:35 +08:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

返回

ReName

重命名特性

在没有安装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

自定义菜单特性

一个比较复合的用法,使用相关的特性对一个类进行标记后,在生成界面的时候可以直接使用这个类型的对象自动生成界面,生成的界面和这个类中的标记字段对应。