void SetBoolListeners() { for (int i = 0; i < bools.Count; i++) { int m_i = i; var boolUI = bools[m_i]; bools[i].input.onEndEdit.RemoveAllListeners(); bools[i].toggle.onValueChanged.RemoveAllListeners(); bools[i].removeButton.onClick.RemoveAllListeners(); // On Input field bools[i].input.onEndEdit.AddListener((s) => { if (!LocalPrefs.HasKey <bool>(s)) { boolUI.key = LocalPrefs.ChangeKey <bool>(boolUI.key, s); bools[m_i] = boolUI; } else if (s != boolUI.key) { bools[m_i].input.text = boolUI.key; Debug.Log("Boolean with key \"" + s + "\" is already presented in preferences."); } SetBoolListeners(); }); // On Toggle bools[i].toggle.onValueChanged.AddListener((b) => { LocalPrefs.Set(boolUI.key, b); SetBoolListeners(); }); // On Remove button bools[i].removeButton.onClick.AddListener(() => { DestroyBool(boolUI); SetBoolListeners(); }); } }