public void Start()
    {
        Player1Controller.onValueChanged.AddListener(delegate { ChooseController(Player1Controller, PlayerNumber.Player1); });
        Player2Controller.onValueChanged.AddListener(delegate { ChooseController(Player2Controller, PlayerNumber.Player2); });
        Player3Controller.onValueChanged.AddListener(delegate { ChooseController(Player3Controller, PlayerNumber.Player3); });
        Player4Controller.onValueChanged.AddListener(delegate { ChooseController(Player4Controller, PlayerNumber.Player4); });

        //Adds a listener that invokes the "LockInput" method when the player finishes editing the main input field.
        //Passes the main input field into the method when "LockInput" is invoked
        UpField.onEndEdit.AddListener(delegate { BindNeg(UpField, "Vertical"); });
        DownField.onEndEdit.AddListener(delegate { BindPos(DownField, "Vertical"); });
        LeftField.onEndEdit.AddListener(delegate { BindNeg(LeftField, "Horizontal"); });
        RightField.onEndEdit.AddListener(delegate { BindPos(RightField, "Horizontal"); });
        JumpField.onEndEdit.AddListener(delegate { BindPos(JumpField, "Jump"); });
        FireField.onEndEdit.AddListener(delegate { BindPos(FireField, "Fire1"); });
        PauseField.onEndEdit.AddListener(delegate { BindPos(PauseField, "Pause"); });

        if (File.Exists(Application.persistentDataPath + "/inputSettings.dat"))
        {
            BinaryFormatter bf   = new BinaryFormatter();
            FileStream      file = File.Open(Application.persistentDataPath + "/inputSettings.dat", FileMode.Open);
            ControlsSave    save = (ControlsSave)bf.Deserialize(file);

            file.Close();

            UpField.text = save.up;
            BindNeg(UpField, "Vertical");
            DownField.text = save.down;
            BindPos(DownField, "Vertical");
            LeftField.text = save.left;
            BindNeg(LeftField, "Horizontal");
            RightField.text = save.right;
            BindPos(RightField, "Horizontal");
            JumpField.text = save.jump;
            BindPos(JumpField, "Jump");
            FireField.text = save.fire;
            BindPos(FireField, "Fire1");
            PauseField.text = save.pause;
            BindPos(PauseField, "Pause");

            Player1Controller.value = save.playerController1;
            Player2Controller.value = save.playerController2;
            Player3Controller.value = save.playerController3;
            Player4Controller.value = save.playerController4;
        }
    }
    void OnDestroy()
    {
        ControlsSave save = new ControlsSave();

        save.up    = UpField.text;
        save.down  = DownField.text;
        save.left  = LeftField.text;
        save.right = RightField.text;
        save.jump  = JumpField.text;
        save.fire  = FireField.text;
        save.pause = PauseField.text;

        save.playerController1 = Player1Controller.value;
        save.playerController2 = Player2Controller.value;
        save.playerController3 = Player3Controller.value;
        save.playerController4 = Player4Controller.value;

        BinaryFormatter bf   = new BinaryFormatter();
        FileStream      file = File.Create(Application.persistentDataPath + "/inputSettings.dat");

        bf.Serialize(file, save);
        file.Close();
    }
 private void button2_Click(object sender, EventArgs e)
 {
     ControlsSave?.Invoke();
 }