この記事でのバージョン
Unity 2017.2.0f3
はじめに
Audio Clipは各設定値を確認する事は可能ですが変更する事は出来ません(getterしかない)
AudioClip bgm = Resources.Load<AudioClip>("BGM"); bool loadInBackground = bgm.loadInBackground; //OK bgm.loadInBackground = true; //エラー
今回はこれをプログラムから変更しようという記事です!
なお、一部の値はプラットフォームごとに設定する事も出来ます。
AudioImporter
Audio Clipの設定をプログラムから行う時はAudioImporter(using UnityEditor;が必要)を使います。
実際にやってみると以下のような感じになります。
//Assets直下にあるBGM.oggというファイルの対象にAudioImporterを作成 string path = "Assets/BGM.ogg"; //拡張子も必要 AudioImporter audioImporter = AssetImporter.GetAtPath(path) as AudioImporter; //loadInBackgroundを変更 audioImporter.loadInBackground = true;
ただし、Audio Clipの下部にあるプラットフォームごとに設定を行う部分に関しては
AudioImporterSampleSettingsを使って設定を行います。
実際にDefaultの設定を変更してみると以下のような感じになります。
//Assets直下にあるBGM.oggというファイルの対象にAudioImporterを作成 string path = "Assets/BGM.ogg"; //拡張子も必要 AudioImporter audioImporter = AssetImporter.GetAtPath(path) as AudioImporter; //DefaultのAudioImporterSampleSettings取得 AudioImporterSampleSettings settings = audioImporter.defaultSampleSettings; //loadTypeを変更し、設定し直す settings.loadType = AudioClipLoadType.Streaming; audioImporter.defaultSampleSettings = settings;
また、特定のプラットフォームの設定を変更してみると以下のような感じになります。
//Assets直下にあるBGM.oggというファイルの対象にAudioImporterを作成 string path = "Assets/BGM.ogg"; //拡張子も必要 AudioImporter audioImporter = AssetImporter.GetAtPath(path) as AudioImporter; //設定するプラットフォーム名を取得(今回はAndroid) string platformName = RuntimePlatform.Android.ToString(); //AndroidのAudioImporterSampleSettingsを取得 AudioImporterSampleSettings settings = audioImporter.GetOverrideSampleSettings(platformName); //loadTypeを変更し、設定し直す settings.loadType = AudioClipLoadType.DecompressOnLoad; audioImporter.SetOverrideSampleSettings(platformName, settings);
なお、アセットのインポート時に設定したい場合はAssetPostprocessorを使いましょう。
また、アセットのパスを知りたい場合はGetAssetPathが使えます。