using UnityEngine; #if UNITY_STANDALONE_WIN using System.Runtime.InteropServices; #endif using System; namespace GeneralTools { public class SoundManager : SingletonBaseAttribute { #if UNITY_STANDALONE_WIN public override void IStart() { base.IStart(); KeyDownManager.Instance.AddKeyDownAction(KeyCode.PageUp, () => { SystemVolumeUp(); }, "增加系统音量", false, 0); KeyDownManager.Instance.AddKeyDownAction(KeyCode.PageDown, () => { SystemVolumeDown(); }, "降低系统音量", false, 0); KeyDownManager.Instance.AddKeyDownAction(KeyCode.Pause, () => { SystemMute(); }, "静音/恢复系统音量", false, 0); } #region System [DllImport("user32.dll")] static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo); [DllImport("user32.dll")] static extern byte MapVirtualKey(uint uCode, uint uMapType); private const byte VK_VOLUME_MUTE = 0xAD; private const byte VK_VOLUME_DOWN = 0xAE; private const byte VK_VOLUME_UP = 0xAF; private const uint KEYEVENTF_EXTENDEDKEY = 0x0001; private const uint KEYEVENTF_KEYUP = 0x0002; /// /// 改变系统音量大小,增加 /// public void SystemVolumeUp() { keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY, 0); keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } /// /// 改变系统音量大小,减小 /// public void SystemVolumeDown() { keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY, 0); keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } /// /// 改变系统音量大小,静音 /// public void SystemMute() { keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY, 0); keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } #endregion #endif } }