c# - 通过 AudioSource.PlayClipAtPoint() 获取对实例化 AudioSource 的引用

标签 c# unity-game-engine

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/

相关文章:

c# - 如何在没有浏览器弹出窗口的情况下使用 OAuth2 发送 GMail/GSuite 电子邮件?

c# - 防止 PrincipalSearcher Query C# 中的子容器对象

c# - Unity - 健康栏作为屏幕周围的轮廓线

c# - 'Newtonsoft.Json.JsonConvert.DeserializeObject(string)' 有一些无效参数

c# - 如何序列化此 .NET 集合项?

c# - Unity 与 azure 语音 sdk

unity-game-engine - 如何从 URL 统一加载 3D 模型?

unity-game-engine - 加载 Admob 智能横幅时游戏崩溃

c# - 悬停后如何更改按钮的颜色并单击xaml

java - 在 C#/Unity 中启动外部 Android 应用程序