この記事でのバージョン
Unity 2019.4.15f1
はじめに
今回はUnityエディタを再生していない時、
つまりエディタ拡張時に音を鳴らす方法の紹介です!
ちなみにビープ音を鳴らす方法は以前紹介していたりします。
using UnityEditor; //EditorApplicationを使うのに必要
//ビープ音を鳴らす
EditorApplication.Beep();
SoundPlayerを使った方法
まず.netのSoundPlayerという機能で音を鳴らす方法です。
using System.Media;//SoundPlayerを使うのに必要
//SoundPlayer作成 var soundPlayer = new SoundPlayer("Assets/SE.wav"); //音源をロード soundPlayer.Load(); //再生 soundPlayer.Play();
上記の様に簡単に音を鳴らす事が出来ますが、
wavファイルしか扱えず、Macではファイルに関わらずそもそも使えません。
なお、SoundPlayerを使うには.NET 4.xにする必要があります。
リフレクション
次にリフレクションを使った方法です。
リフレクションとは通常アクセス出来ないメンバーやメソッドに無理やりアクセスする方法で、
今回はAudioClipを再生する処理を取得するのに使います。
using UnityEditor; //AssetDatabaseを使うのに必要 using System.Reflection; //BindingFlagsを使うのに必要
//AudioClipをロード(wavファイル以外でもOK) var audioClip = AssetDatabase.LoadAssetAtPath<AudioClip>("Assets/SE.wav"); //リフレクションでAudioClipを再生する処理を取得 var audioUtil = typeof(Editor).Assembly.GetType("UnityEditor.AudioUtil"); var playClipMethod = audioUtil.GetMethod("PlayClip", BindingFlags.Static | BindingFlags.Public); //AudioClip再生 playClipMethod.Invoke(null, new object[] {audioClip, 0, false});
この方法であればMacでも使えますし、
wavファイル以外でもAudioClipで使える物なら全て扱えます。
参考