-
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方法。