Audio not playing from other object

Hi all,

Long time no see, been developing my game the past few months and this unusual problem has hit me. In short im calling a method from an instantiated bullet to my gun to play the sound. So bullet → calls method to play sound → gun → plays sound

I had a working demo last night of it playing on the instantiated bullet, but of course if the bullet is destroyed (once it hits an enemy) then the audio no longer plays or finishes. So i just put the audio source in a method in the gun object and it should do the same thing, exact same code. Now all the debug logs are showing in the inspector at the right times. The only issue is that the audio isnt even playing. Ive tested the line of code works last night and it did, ive also moved the PlayLazerSound() in the start() to see if it plays and it did.

So any ideas? Cant stump this one and not really sure why, its the simplest line of code ive ever wrote. In the Gun object

     public AudioClip lazer;
 public AudioSource audio;
 void Start () {
     audio = GetComponent<AudioSource>();
 }
     public void PlayLazerSound(){
         audio.PlayOneShot(lazer, 1.0F);
         Debug.Log ("Playing lazer");
     }

I get the debug log no problem so i dont need to show you the other code. Let me know if it would be helpful to show it though. Again, if this is an obvious fix i do apolgize, i had a fully working demo on my device, but think this would be a better way to solve the problem. The script the gun is attached to has an audio source also (remember i tested it in the start() method to see if code was working)

Thanks for the assistance, and have a happy christmas!

The code looks perfectly fine, but are you remembering to set the audioclip in the inspector and to run PlayLazerSound();?