【发布时间】:2015-12-22 16:09:33
【问题描述】:
当我的角色越过终点线时,我会播放“胜利”的声音。我有一个 AudioSource 对象,我只需调用它 PlayOneShot 并将它传递给我的 AudioClip 为:
public void PlayWon() {
if (GameData.Data.Settings.SoundsOn) {
AudioSource audio = GetComponent<AudioSource>();
audio.Stop();
audio.PlayOneShot(WinSound);
}
}
我的 AudioSource 设置如下:
并且这个附加到的对象被加载到一个永远不会被破坏的 Loader 场景中。我通过调用来确保这一点:
DontDestroyOnLoad(this);
在唤醒。
我的声音在 iOS、iPhone 和 iPad 上播放良好。但是在我的三星 Galaxy Tab S 上进行测试时,声音会播放,然后在显示插页式广告时暂停,然后在关闭时,声音会继续播放。我正在使用 Chartboost 和 Admob 并使用基本调用:
if (Chartboost.hasInterstitial(CBLocation.LevelComplete)) {
Debug.Log("Showing CB Ad");
Chartboost.showInterstitial(CBLocation.LevelComplete);
}
else if (_admobInterstitial.IsLoaded()) {
Debug.Log("Showing Admob Ad");
_admobInterstitial.Show();
}
else {
Debug.Log("Neither cached, trying CB again");
Chartboost.cacheInterstitial(CBLocation.LevelComplete);
Chartboost.showInterstitial(CBLocation.LevelComplete);
}
知道为什么我的声音在此设备上被切断了吗?我没有其他 Android 设备可以对其进行测试,但我假设这是与 Android 相关的问题。 Chartboost 和 Admob 上的声音都会中断。
谢谢
【问题讨论】:
-
问题是因为 admob 使用
AudioManager中的requestAudioFocus功能来显示插页式视频。我不确定你是否使用 unity 来开发你的游戏,我不知道是不是相同的方法,但我建议你在显示插页式之前实现一个requestAudioFocus。如果对您有帮助,请告诉我。 -
@diogojme 谢谢,但如果我不使用插页式视频,同样适用吗?我目前在 Admob 中禁用了这些功能,而在 iOS 上它确实可以正常工作。我想避免请求音频焦点,因为我不想阻止播放器听他们的音乐或其他东西(假设他们的音乐会停止)
-
我建议您在调用
PlayWon()之前或之后显示 Chartboost 插页式广告,这样插页式广告就不会覆盖 playWon 声音。 -
我必须按照 Halil 的建议在协程中进行,因为我需要留出时间让声音完成。在广告之后播放声音会很奇怪。
-
是的,我也觉得很奇怪,我认为在播放你的声音后调用插页式广告是正确的解决方案,我会投票支持 Halil 解决方案。