c# - Unity 在随机游戏对象位置播放音频剪辑

标签 c# audio unity3d hololens

我在相机周围有 8 个空的游戏对象,我希望从世界上的这些点发出相同的声音。
我怎样才能正确 PlayClipAtPoint 来完成此操作。
此脚本位于我的音频管理器空游戏对象上。但我希望音频来自 Point1-Point8 变换位置。

public class AudioManagerScript : MonoBehaviour
{
public Transform point1;
public Transform point2;
public Transform point3;
public Transform point4;
public Transform point5;
public Transform point6;
public Transform point7;
public Transform point8;
// Use this for initialization
public AudioClip clip1;
public AudioClip clip2;
public AudioClip clip3;
public AudioClip clip4;
public AudioClip clip5;
public AudioClip clip6;
public AudioClip clip7;
public AudioClip clip8;
public AudioClip clip9;
public AudioClip clip10;

public AudioSource audio;

void Start()
{
    InvokeRepeating("myFunc", 1.0f, 1.0f);
    audio = GetComponent<AudioSource>();
}

void myFunc()
{
    audio.PlayClipAtPoint(clip1,point1.transform.position,0.9f);
}

}

最佳答案

PlayClipAtPoint static AudioSource 的功能类(class)。您不能在实例上调用静态函数。你应该在类型上调用它:

AudioSource.PlayClipAtPoint(clip1, point1.transform.position, 0.9f);

作为旁注:我还建议您为 Transforms 声明数组。和 AudioClips并将它们填充到检查器中,而不是每个都有一个公共(public)字段。这将使选择随机位置和听起来更容易(否则您必须手动将所有这些对象放入数组中,这显然需要更多的工作并且不太灵活)。

因此,只需将所有字段声明替换为:
public Transform[] points;
public AudioClip[] clips;

然后只需使用索引来访问它们。

关于c# - Unity 在随机游戏对象位置播放音频剪辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43237550/

相关文章:

c# - Unity找不到其他DLL的DLL依赖关系(均在Assets文件夹中)

c# - 使用 LINQ 替换循环是否明智?

c# - Linq 表达式的转换

c# - 获取可绘制资源

ios - 长音频文件无法播放

java - 如何在java中提取音频特征?

javascript - 更改 HTML5 音频元素的 src 属性

c# - 使 AForge VideoCaptureDevice 与 Unity 一起工作

c# - MongoDb 的 C# 驱动程序,是否可以将其包装在通用 session 中?

c# - 检查动画剪辑是否已完成