如何使用此类声音管理器更改脚本中的循环值?我认为一个简单的 if 语句可以工作,但事实并非如此

How do I change the loop value in script with this type of sound manager? I thought a simple if statement would work but thats not the case

我发布的代码只是我尝试过的方法之一。无论出于何种原因,我都无法像我看到的其他 public 变量那样让脚本访问循环值。我唯一可以补充的是,试图更改值的声音是在另一个脚本的 OnAwake() 方法中创建的。

public static void PlaySound(Sound sound, Vector3 position)
{
    if (CanPlaySound(sound))
    {
        GameObject soundGameObject = new GameObject("Sound");
        soundGameObject.transform.position = position;
        AudioSource audioSource = soundGameObject.AddComponent<AudioSource>();
        audioSource.clip = GetAudioClip(sound);

        Debug.Log(soundGameObject.GetComponent<AudioSource>().clip);

        if (audioSource.clip.Equals("Level 1 Music"))
        {
            soundGameObject.GetComponent<AudioSource>().loop = true;
        }

        audioSource.Play();

        Object.Destroy(soundGameObject, audioSource.clip.length);
    }
}

是因为你的情况。等于选项实际上是按剪辑来衡量剪辑,而不是按剪辑名称来衡量剪辑。试试这个选项来解决问题:

if (audioSource.clip.name.Equals("Level 1 Music"))
{
    audioSource.loop = true;
}