为什么 AudioSource 不播放?
Why the AudioSource does not play?
这是设置
我GetComponent<AudioSource>().Play()
的时候没有声音,为什么?
当我检查 play on awake
时,会播放声音。为什么?
问题来自 ElementControl.cs
。你总是在声音开始播放之前就破坏游戏对象。
解决方案 1:
对您来说,简单的解决方法是找到如下任何代码:
Destroy(this.gameObject);
然后在您的场景中将其替换为Destroy(this.gameObject, 5);
。 5 会在销毁 5 之前等待 5 秒,并且声音可能已经播放完毕到那个时候。大约有三个 Destroy(this.gameObject);
必须更改。寻找他们。
解决方案 2(推荐):
将您的 void PlayClickAudio()
函数更改为协程,然后将调用它的任何代码替换为 StartCoroutine。在其中,播放声音然后使用 audio.isPlaying 等待声音播放完毕。在 OnPointerClick
函数中做其他事情然后你可以销毁游戏对象
Destroy(this.gameObject);
。此外,原始代码使用 audio.Play(44100)
,这将使播放前 延迟。将其更改为 audio.Play()
.
这是带有解决方案 2 的新脚本:http://pastebin.com/m1tbVj9k
这是设置
我GetComponent<AudioSource>().Play()
的时候没有声音,为什么?
当我检查 play on awake
时,会播放声音。为什么?
问题来自 ElementControl.cs
。你总是在声音开始播放之前就破坏游戏对象。
解决方案 1:
对您来说,简单的解决方法是找到如下任何代码:
Destroy(this.gameObject);
然后在您的场景中将其替换为Destroy(this.gameObject, 5);
。 5 会在销毁 5 之前等待 5 秒,并且声音可能已经播放完毕到那个时候。大约有三个 Destroy(this.gameObject);
必须更改。寻找他们。
解决方案 2(推荐):
将您的 void PlayClickAudio()
函数更改为协程,然后将调用它的任何代码替换为 StartCoroutine。在其中,播放声音然后使用 audio.isPlaying 等待声音播放完毕。在 OnPointerClick
函数中做其他事情然后你可以销毁游戏对象
Destroy(this.gameObject);
。此外,原始代码使用 audio.Play(44100)
,这将使播放前 延迟。将其更改为 audio.Play()
.
这是带有解决方案 2 的新脚本:http://pastebin.com/m1tbVj9k