Change camera fov on canvas button pressed

Hello there,

I’m trying to change camera’s fov when a UI canvas button is pressed, and reset the fov to a default value when released.
The code works with keyboard inputs, but not with the UI button.
So far I tried to attach the script’s funtion to button’s “onClick” function. It doesn’t work.
I also tried to reference the button in the script, and add a listener to it. Not working.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ButtonInputs : MonoBehaviour 
{
    Camera cam;
    
    public float defaultFov;
    public float zoomedFov;
    public float altZoomedFov;
    public Button leftButton;
    public Button rightButton;
    void Start ()
    {
        cam = Camera.main;
        Button btn1 = leftButton.GetComponent<Button>();
        Button btn2 = rightButton.GetComponent<Button>();
        cam.fieldOfView = defaultFov;
        btn1.onClick.AddListener(ZoomA);
        btn2.onClick.AddListener(ZoomB);
    }

    void LateUpdate()
    {
        cam.fieldOfView = defaultFov;
        if(Input.GetKey(KeyCode.Z))
        {
           ZoomA();
        }
        else if(Input.GetKey(KeyCode.X))
        {
            ZoomB();
        }
    }

    public void ZoomA()
    {
        cam.fieldOfView = zoomedFov;
    }

    public void ZoomB()
    {
         cam.fieldOfView = altZoomedFov;
    }
}

Any idea on how to get the camera to react at UI buttons?
Thank you in advance

Hi - @Paramotion

This is just a matter of reading your code. Think about it - In your late update you are setting your field of view always to default as first thing - what could happen?

Just remove the line and you’ll be fine.

Instead of button you need generic event trigger with two even hadlers for on pointer down and on pointer up. The button have just click event handler.