javascript - unity3d webgl 在选项卡或浏览器不活动时静音
问题描述
当标签或浏览器处于非活动状态时,有谁知道在游戏中静音的正确方法?
我试图通过这种方式(通过 JS 库)做到这一点
var hidden, visibilityChange;
if (typeof document.hidden !== "undefined") {
hidden = "hidden";
visibilityChange = "visibilitychange";
} else if (typeof document.mozHidden !== "undefined") {
hidden = "mozHidden";
visibilityChange = "mozvisibilitychange";
} else if (typeof document.msHidden !== "undefined") {
hidden = "msHidden";
visibilityChange = "msvisibilitychange";
} else if (typeof document.webkitHidden !== "undefined") {
hidden = "webkitHidden";
visibilityChange = "webkitvisibilitychange";
}
document.addEventListener(visibilityChange, handleVisibilityChange, false);
function handleVisibilityChange() {
$("video").prop('muted', document[hidden]);
}
但它不适合我。谢谢你。
解决方案
不确定,但您可能可以在 Unity 中的控制器组件上使用OnApplicationFocus
和。OnApplicationPause
然后它可以通过简单地设置AudioListener.pause
或AudioListener.volume
相应地启用和禁用所有声音
public class FocusSoundController : MonoBehaviour
{
void OnApplicationFocus(bool hasFocus)
{
Silence(!hasFocus);
}
void OnApplicationPause(bool isPaused)
{
Silence(isPaused);
}
private void Silence(bool silence)
{
AudioListener.pause = silence;
// Or / And
AudioListener.volume = silence ? 0 : 1;
}
}
推荐阅读
- ios - 将 tableview 选择的数据存储到带有键值的数组中
- google-analytics - 当页面导航到第三方页面然后使用谷歌标签管理器进入确认页面时,如何跟踪结帐行为?
- spotfire - 连接到数据库连接时使用 Spotfire 函数
- clips - 如何使用 CLIPS 中的单个变量快速重新断言具有多个字段的事实
- c# - 线程在 System.Xml.XmlDocument.LoadXml(String xml) 处被中止
- pandas - 使用熊猫时的Python KeyError
- delphi - 无法使用 TDBCheckbox 更新数据库中的值
- r - 我想知道如何制作一个由 R 中的几个单词组成的关键词的术语文档矩阵
- c# - 键入对象时问号有什么作用?.field?
- python - Pygame Sprite 透明度碰撞