void LoadAbilities() { _BaseAbilityTable = new Dictionary <int, AbilityBase> (); _BaseAbilityIdTable = new Dictionary <string, int>(); TextAsset[] textAssets = Resources.LoadAll <TextAsset> (ResourcesFolderPath.json_ability); foreach (TextAsset tAsset in textAssets) { string jsonString = tAsset.text; var dict = MiniJSON.Json.Deserialize(jsonString) as Dictionary <string, object>; Dictionary <string, object> abilitiesInfo = dict ["ability"] as Dictionary <string, object>; foreach (string abilityName in abilitiesInfo.Keys) { //Detect existence of cardName if (_BaseAbilityIdTable.ContainsKey(abilityName)) { Debug.Log(string.Format("Ability name has existed -name:{0} in folder: 'Resources/Json/Ability/{1}'", abilityName, tAsset.name)); throw new System.Exception(string.Format("Ability name has existed -name:{0} in folder: 'Resources/Json/Card/{1}'", abilityName, tAsset.name)); } KeyValuePair <string, Dictionary <string, object> > abilityInfo = new KeyValuePair <string, Dictionary <string, object> > (abilityName, abilitiesInfo [abilityName] as Dictionary <string, object>); AbilityBase abilityBase; try { abilityBase = AbilityBase.GeneAbilityBase(abilityInfo); } catch (System.Exception e) { Debug.Log(string.Format("Fail to Generate AbilityBase via ability data that named:{0}", abilityName)); throw e; } int id = abilityBase.id; //Detect existence of baseCard's id if (_BaseAbilityTable.ContainsKey(id)) { Debug.Log(string.Format("Ability id has existed -name:{0} in folder: 'Resources/Json/Ability/{1}'", abilityName, tAsset.name)); throw new System.Exception(string.Format("Ability id has existed -name:{0} in folder: 'Resources/Json/Ability/{1}'", abilityName, tAsset.name)); } //Check the validity of ability if (!CheckAbilityValidity(abilityBase)) { Debug.Log(string.Format("Failure to pass ability validity test about ability named :{0} in folder: 'Resources/Json/Ability/{1}'", abilityName, tAsset.name)); throw new System.Exception(string.Format("Failure to pass ability validity test about ability named :{0} in folder: 'Resources/Json/Ability/{1}'", abilityName, tAsset.name)); } _BaseAbilityIdTable.Add(abilityName, id); _BaseAbilityTable.Add(id, abilityBase); } } }