我的 AudioClip[] 在我的 PlayClipAtPoint 函数中不起作用

当我的球对象击中该脚本所附加的静态对象时,我想随机播放一定数量的声音中的 1 个。一旦球击中物体,物体就会被摧毁,从而切断声音,我不知道如何使用 Random.Range。我也不知道如何制作一个[序列化字段]来容纳这些多种声音。


我不知道我会如何去做这件事,因为我是新手。


public class ObjectDestroyer : MonoBehaviour

{

    [SerializeField] AudioClip[] breakColisionSounds;


    private void OnCollisionEnter2D(Collision2D collision)

    {

        AudioSource.PlayClipAtPoint(breakColisionSounds,

        Camera.main.transform.position);

        Destroy(gameObject, .03f);

    }

}

我希望球击中这个物体,该物体在其序列化场内播放随机声音,同时它被摧毁。


米脂
浏览 127回答 1
1回答

慕桂英546537

您必须在 Unity 编辑器中序列化您的AudioClips 和 the 。AudioSource然后,您将从数组中随机选择一个剪辑,将其分配给音频源并播放。我还建议您将功能分解为更小的组件。void OnCollisionEnter2D(Collision2D collision){&nbsp; &nbsp; GetComponent<AudioCollection>().PlayRandom();}public class AudioCollection : MonoBehaviour{&nbsp; &nbsp; [SerializeField] AudioClip[] clips;&nbsp; &nbsp; [SerializeField] AudioSource source;&nbsp; &nbsp; void PlayRandom()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; source.clip = clips[Random.Range(0, clips.Length)];&nbsp; &nbsp; &nbsp; &nbsp; source.Play();&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP