为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
米脂 2023-07-22 18:34:06
当我的球对象击中该脚本所附加的静态对象时,我想随机播放一定数量的声音中的 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);    }}我希望球击中这个物体,该物体在其序列化场内播放随机声音,同时它被摧毁。
查看完整描述

1 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

您必须在 Unity 编辑器中序列化您的AudioClips 和 the 。AudioSource


然后,您将从数组中随机选择一个剪辑,将其分配给音频源并播放。


我还建议您将功能分解为更小的组件。


void OnCollisionEnter2D(Collision2D collision)

{

    GetComponent<AudioCollection>().PlayRandom();

}


public class AudioCollection : MonoBehaviour

{

    [SerializeField] AudioClip[] clips;

    [SerializeField] AudioSource source;


    void PlayRandom()

    {

        source.clip = clips[Random.Range(0, clips.Length)];

        source.Play();

    }

}


查看完整回答
反对 回复 2023-07-22
  • 1 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信