单击按钮时的音频播放问题

Posted

技术标签:

【中文标题】单击按钮时的音频播放问题【英文标题】:Audio play issue on button click 【发布时间】:2016-03-15 23:35:03 【问题描述】:

我正在与 unity 合作,但音频有问题。这是当用户单击按钮时,对象掉在地上并销毁的场景。单击按钮时播放物体掉落的音效。然后销毁,再次实例化对象,然后再次播放相同的点击音效。但是当一个物体正在下落并且此时没有碰撞时,用户再次单击该按钮声音再次播放。我希望当一个对象完全销毁而不是再次单击并播放声音时。

代码 CubeScript:

public class Cube : MonoBehaviour 


    Rigidbody2D body;


    void Start () 

        body = GetComponent<Rigidbody2D>();
        body.isKinematic = true;
    



代码碰撞脚本:

public class Ground : MonoBehaviour 

    private Button bt;

    public GameObject cube;

    public Audiosource source;

    public AudioClip clip;

    void Start () 


        bt = GameObject.FindGameObjectWithTag ("Button").GetComponent<Button> ();

        bt.onClick.AddListener (() => Fall ());
    

    void OnCollisionEnter2D(Collision2D col) 
        Destroy (col.gameObject);
        Instantiate (cube,new Vector3(0f,4.19f,0f),Quaternion.identity);


    


    public void Fall()

        GameObject.FindGameObjectWithTag ("Player").GetComponent<Rigidbody2D> ().isKinematic = false;

        source.PlayOneShot(clip);


    



【问题讨论】:

【参考方案1】:
void OnCollisionEnter2D(Collision2D col) 
    Destroy (col.gameObject);
    Instantiate (cube,new Vector3(0f,4.19f,0f),Quaternion.identity);
    isFalling = false;  // here


private bool isFalling = false;  // here
public void Fall()

    GameObject.FindGameObjectWithTag ("Player").GetComponent<Rigidbody2D> ().isKinematic = false;
    if(isFalling == false)
        source.PlayOneShot(clip);
        isFalling = true;   // here
    

几乎当你按下时,它会调用 Fall,如果没有任何东西掉下来,声音就会发生。在碰撞时,isFalling 被重置。我不完全确定你的逻辑。

【讨论】:

以上是关于单击按钮时的音频播放问题的主要内容,如果未能解决你的问题,请参考以下文章

不同按钮上的音频播放/暂停单击Jquery

在完成播放之前再次单击播放音频文件

单击时播放音频文件的按钮[重复]

播放音频并单击重新启动

播放音频后重置按钮文本

一次只允许播放一个音频元素