起因
无意间了解到unity可以用systemJob多线程来优化性能,然后发现是unity新技术ECS的其中一部分,然后再看下去,发现研究ECS的前置技术注解,特此记录。
是什么
AttriBute是什么?
AttriBute是一个基类,利用反射给其他类添加数据。
目的
AttriBute是干啥用的呢?
AttriBute就是在不破坏原有代码的情况下,在代码的元数据上附加一些信息,方便其查询,使用等。
怎么做
首先声明一个类继承 Attribute
public class AttriButeA : Attribute
{
//构建函数与下方参数一致
public AttriButeA(Type type ,string name)
{
}
}
然后对其他类或属性进行注释
//这里与上方的构建函数参数一致,并对下方的类DataA进行了修饰
[AttriButeA(typeof(DataA),"DataA")]
public class DataA
{
}
调用
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly assemblie in assemblies)
{
Type[] data = assemblie.GetTypes();
for (int i = 0; i < data.Length; i++)
{
AttriButeA a = data[i].GetCustomAttribute<AttriButeA>();
if (a != null)
{
Debug.Log(a);
}
}
}
注意事项
[AttriButeA(typeof(DataA),“DataA”)]
这个时候相当于准备 new 一个 AttriButeA的对象,但是还没有new,什么时候new呢,当调用了 AttriButeA的时候会new出来,上述例子里面就是 data[i].GetCustomAttribute();
这段的时候会new 一个 AttriButeA的类,并且依附到 DataA上。
如有理解错误,麻烦大佬更正