-
ACategory<T>类
ACategory<T>抽象类继承自ACategory类,T实现接口IConfig
public abstract class ACategory : Object
{
public abstract Type ConfigType { get; }
public abstract IConfig GetOne();
public abstract IConfig[] GetAll();
public abstract IConfig TryGet(int type);
}
ACategory类内部维护了一些变量,IConfig类是配置的基类,内部只有一个属性Id。
ACategory<T>类内部维护了一个字典Dictionary<long, IConfig> dict。
重写方法BeginInit来着Object类,根据T类型的名字获取对应的配置内容。遍历内容,利用Json内部API进行转换。然后添加到字典中去,键是T类型的Id值,值就是T类型的对象。
重写方法ConfigType返回T的类型。另外还有3个Get方法,对字典dict进行操作。
-
ConfigComponent组件
ConfigComponent组件会扫描所有的有ConfigAttribute标签的配置,加载进来。接通了Awake和Load事件。内部有一个字典Dictionary<Type, ACategory> allConfig用于存储
Load方法中,获取到ConfigAttribute特性修饰的类的实例,该类必须要继承ACategory抽象类,执行BeginInit和EndInit方法。最后将获取到的实例添加到字典中去,键是实例的类型。
后面是一些对于字典进行操作的Get方法。