AudioSource.PlayClipAtPoint()AudioSource组件添加到附加了monobehaviour的当前gameObject上。但是,由于某种原因,它具有void返回类型,而不是返回对AudioSorce组件的引用。很奇怪!

有什么方法可以有效地获得对创建的AudioSource组件的引用,以便可以更改诸如音高和音量之类的参数?

编辑:从那以后我就在Answers.unity上找到了this,完美地回答了这个问题。

最佳答案

AudioSource.PlayOneShot()不会将audioSource组件添加到当前的GameObject中。播放参数中提供的声音/音频片段。

AudioSource myAudio;
myAudio = GetComponent<AudioSource>();
myAudio.pitch = 1f;
myAudio.volume = 1f;
myAudio.PlayOneShot(myAudio.clip);


编辑:

由于您的问题已编辑,并且PlayOneShot()更改为PlayClipAtPoint(),因此PlayClipAtPoint是静态函数。它创建一个AudioSource,播放声音,然后销毁AudioSource

不会将AudioSource添加到当前对象。它只是将每个AudioSource创建为场景中的父GameObject。它用于播放短声音,您不应该尝试获取参考,因为它不会返回一个参考,因此您最终可能会在场景中获得另一个参考。

您不能更改pitch,但是可以通过提供第三个参数来更改volume

AudioSource.PlayClipAtPoint(myAudio.clip, this.transform.position, 1);

关于c# - 通过AudioSource.PlayClipAtPoint()实例化获取对AudioSource的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36804055/

10-10 13:08