Audio Clip Playing every frame

My script plays my audioClip after the timer runs out, however once it starts playing, it plays the clip every frame and sounds weird, buggy, and it never ends. How can I make it so that it only plays the clip once and stop refreshing the sounds every frame? Loop is set to False as well.

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

public class audioTimer : MonoBehaviour
{

    bool okayToPlayAudio;
    public float timeLeft = 10f; //time in seconds
    public AudioSource theaterVoice;
    public AudioClip audioClip;
   public void Update()
    {
        
        if (timeLeft > 0.0)
        {

            timeLeft -= Time.deltaTime;
            

        }
        else
        {

            okayToPlayAudio = true;
                      
        }
        if(okayToPlayAudio)
        {

            theaterVoice.PlayOneShot(audioClip, 1.0f);
            okayToPlayAudio = false;
        }
        
    }


}

@BakedSteakGames Your problem is that it’s always technically “okayToPlayAudio” once the timer hits 0. Even though you’ve set it to false after you play the clip, it just gets set right back to true the way it’s coded. Consider using a separate bool like hasAudioPlayed to check if the audio has played once. Set it to true after playing the audio and put this as your second if statement:

if (okayToPlayAudio && !hasAudioPlayed) {

Or better yet, don’t play audio via the Update method.

As ooblii has said, you’re setting your ‘oktoplay’ variable to true every frame. Either set the time left variable to something above zero or have a ‘hasplayed’ Boolean set to true when it’s been played