- Home /
AudioSource.IsPlaying returns true when only playing one shot?
I always assumed that when using audioSource.PlayOneShot(clip), audioSource.isPlaying would return false. When I look online this seems to be people's experience as well. Yet in my current project, source.isPlaying returns true while the only audioClip it is playing was started through source.PlayOneShot(clip).
I've tested this in a separate scene with only 1 object, which has an AudioSource attached to it and the following script:
[SerializeField]
private AudioSource source;
[SerializeField]
private AudioClip clip;
private void Awake()
{
Debug.LogFormat("Test is playing: {0}", source.isPlaying);
source.PlayOneShot(clip);
Debug.LogFormat("Test is playing: {0}", source.isPlaying);
}
// Start is called before the first frame update
void Start()
{
Debug.LogFormat("Test is playing: {0}", source.isPlaying);
}
// Update is called once per frame
void Update()
{
Debug.LogFormat("Test is playing: {0}", source.isPlaying);
}
As long as the clip lasts, source.isPlaying returns true, except for the first Debug.LogFormat in Awake(). PlayOnAwake is set to false on the source. If I do set it to PlayOnAwake and comment out source.PlayOneShot(clip), true is returned in Awake, Start and once in Update(). If I do run the line source.PlayOneShot(clip), the Debug.LogFormat keeps returning true until the audio file has finished playing. I've tested this both with a clip assigned to the clip field of the AudioSource and without.
Can someone explain me what is going on here?
EDIT: Calling source.Stop() also stops the playing oneshot.
Your answer
Follow this Question
Related Questions
PlayOneShot - skips and doubles the sound. 1 Answer
PlayOneShot returns false for isPlaying 5 Answers
Audio.PlayOneShot problem 3 Answers
PlayOneShot won't work. 1 Answer
Playing many audioclips with PlayOneShot causes all sound to cut out. 0 Answers