单击按钮时的音频播放问题
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 被重置。我不完全确定你的逻辑。
【讨论】:
以上是关于单击按钮时的音频播放问题的主要内容,如果未能解决你的问题,请参考以下文章