我點擊一個按鈕后需要播放一段音效,緊接著將實體給SetActivate=false。這樣就導致音效還沒播出來就被禁用了,請問可以設定0.5s后再執行SetActivate=false嗎
uj5u.com熱心網友回復:
建議短音效剪輯到合適長度進行播放,并在播放后直接銷毀/// <summary>
/// 音樂播放方法
/// </summary>
/// <param name="name">音樂名字</param>
/// <param name="type">1是短音效 0是背景音樂</param>
/// <param name="DontDestroy">是否不洗掉</param>
public void PlayAudio(string name, int type = 1,bool DontDestroy = false)
{
//創建一個空物體
GameObject obj = new GameObject();
if (DontDestroy)
{
DontDestroyOnLoad(obj);
}
obj.transform.SetParent(this.transform);
obj.name = name;
//給空物體添加音效
audioSource = obj.AddComponent<AudioSource>();
//加載音效
AudioClip au = Resources.Load<AudioClip>("audio/" + name);
//賦值
audioSource.clip = au;
//如果是Bgm
if (type == 0)
{
//如果是長音效 將音效添加到List里
audioSourceList.Add(audioSource);
audioSource.Play();
}
else
{
audioSource.Play();
//如果是短音效播放完銷毀自己
StartCoroutine(RemoAudio(obj, audioSource));
}
}
/// <summary>
/// 銷毀音效
/// </summary>
/// <param name="obj"></param>
/// <param name="audioClip"></param>
private IEnumerator RemoAudio(GameObject obj, AudioSource audioClip)
{
if (audioClip && obj)
{
yield return new WaitForSeconds(audioClip.clip.length+0.3f);
Destroy(obj);
}
}
uj5u.com熱心網友回復:
自己解決了 ,把SetActivate=false 給invoke了uj5u.com熱心網友回復:
我在加載音效的時候出問題了,請問可以幫我看看嗎public AudioSource music;
public AudioClip win;
private void Awake()
{
music = gameObject.GetComponent<AudioSource>();
win = Resources.Load<AudioClip>("Audio/win");
}
audioclip沒有傳到audiosource里,為什么啊
uj5u.com熱心網友回復:
好吧,又自己解決了,重新配置了一下音樂檔案的路徑,可以動態加載了
uj5u.com熱心網友回復:
自己寫計時器,用攜程的WaitingForSecond,用DoTween的SetDelay轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/14048.html
標籤:Unity3D
下一篇:XSS檢測總結
