AudioSource.PlayClipAtPoint()
将 AudioSource
组件添加到单行为所附加到的当前游戏对象。但是,由于某种原因,它具有 void 返回类型,而不是返回对 AudioSorce 组件的引用。很奇怪!
是否有任何方法可以高效获取对创建的 AudioSource
组件的引用,以便更改音高和音量等参数?
编辑:我已经找到this在answers.unity上完美地回答了这个问题。
最佳答案
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。它用于播放短声音,您不应该尝试获取引用,因为它不会返回引用,并且您最终可能会在场景中获得另一个引用。
您无法更改音高
,但您可以通过提供第三个参数来更改音量
。
AudioSource.PlayClipAtPoint(myAudio.clip, this.transform.position, 1);
关于c# - 通过 AudioSource.PlayClipAtPoint() 获取对实例化 AudioSource 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36804055/