public void AddAbility(AbilityID abID, bool requiresInput, string description) { string[] ab = abID.ToString().Split('_'); string abName = string.Empty; for (int i = 0; i < ab.Length; i++) { abName += ab[i] + " "; } if (abilities == null) { abilities = new Ability[] { new Ability(abID, requiresInput, description) }; // add input playerInputSystem.AddDynamicKeys(() => abilitySystem.CallAbility(abilities[0], thisEntity), "1"); UI_Manager.instance.AddButtonAction(() => abilitySystem.CallAbility(abilities[0], thisEntity), abName + description); return; } if (abilities.Length >= 10) { // ABILITIES FULL! return; } // Extend array of abilities Ability[] origAbilities = abilities; abilities = new Ability[origAbilities.Length + 1]; for (int i = 0; i < origAbilities.Length; i++) { abilities[i] = origAbilities[i]; } abilities[abilities.Length - 1] = new Ability(abID, requiresInput, description); // add input only for new last one added string keyName = (abilities.Length).ToString(); if (abilities.Length >= 10) { keyName = "0"; } playerInputSystem.AddDynamicKeys(() => abilitySystem.CallAbility(abilities[abilities.Length - 1], thisEntity), keyName); UI_Manager.instance.AddButtonAction(() => abilitySystem.CallAbility(abilities[abilities.Length - 1], thisEntity), abName + description); }