Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

C#

Cazden Gabrielse
seal-mask
.a{fill-rule:evenodd;}techdegree
Cazden Gabrielse
Full Stack JavaScript Techdegree Student 9,819 Points

"Cannot Implicitly convert type System.Collections.Generic.List<UnityEngine.AudioClip> to UnityEngine.AudioClip"

This error doesn't make sense to me. I've gone back through the video and checked each line of code and it matches up with the teachers code. I keep getting the error "Cannot Implicitly convert type System.Collections.Generic.List<UnityEngine.AudioClip> to UnityEngine.AudioClip" down on the bottom variable "randomSound" The squiggly lines appear underneath "soundClips" Can somebody tell me what I'm doing wrong? Thanks!

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

public class RandomSoundPlayer : MonoBehaviour { private AudioSource audioSource;

[SerializeField]
private List<AudioClip> soundClips = new List<AudioClip>();

[SerializeField]
private float soundTimerDelay = 3f;
private float soundTimer;

// Use this for initialization
void Start ()
{
    audioSource = GetComponent<AudioSource>();
}

// Update is called once per frame
void Update ()
{
    // Increment a timer to count up to restarting
    soundTimer = soundTimer + Time.deltaTime;

    // If the timer reaches the delay...
    if(soundTimer >= soundTimerDelay)
    {
        // ...reset the timer
        soundTimer = 0f;
        // ...choose a random sound
        AudioClip randomSound = soundClips;
    }
}

}

1 Answer

Seth Kroger
Seth Kroger
56,413 Points

randomSound is a single AudioClip but soundClips is a collection of AudioClips, plural. To select one clip from the list, you need to reference it with the [] notation:

AudioClip randomSound = soundClips[index];  // it's up to you to pick the appropriate index.