using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using System.Text.RegularExpressions;
using System.IO;
public class AudioProcessor : AssetPostprocessor
{
[MenuItem("AssetsTools/将选择文件夹的音频设置成规定格式", false, 22)]
static void SetSelectAudios()
{
Object[] selects = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
for (int i = 0; i < selects.Length; ++i)
{
Object selected = selects[i];
string path = AssetDatabase.GetAssetPath(selected);
AssetImporter asset = AssetImporter.GetAtPath(path);
AudioImporter audio = asset as AudioImporter;
if (audio != null)
{
SetAudioFormat(audio);
audio.SaveAndReimport();
}
}
AssetDatabase.Refresh();
}
public static void SetAudioFormat(AudioImporter audio)
{
AudioImporterSampleSettings AudioSetting = new AudioImporterSampleSettings();
//加载方式选择
AudioSetting.loadType = AudioClipLoadType.DecompressOnLoad;
//压缩方式选择
AudioSetting.compressionFormat = AudioCompressionFormat.ADPCM;
//设置播放质量
AudioSetting.quality = 0.8f;
//优化采样率
AudioSetting.sampleRateSetting = AudioSampleRateSetting.OptimizeSampleRate;
//开启单声道
audio.forceToMono = true;
audio.preloadAudioData = false;
audio.defaultSampleSettings = AudioSetting;
audio.SetOverrideSampleSettings("Standalone", AudioSetting);
audio.SetOverrideSampleSettings("iPhone", AudioSetting);
audio.SetOverrideSampleSettings("Android", AudioSetting);
}
/// <summary>
/// 音频导前预处理
/// </summary>
public void OnPreprocessAudio()
{
AudioImporter audio = assetImporter as AudioImporter;
SetAudioFormat(audio);
}
/// <summary>
/// 音频导后处理
/// </summary>
/// <param name="clip"></param>
public void OnPostprocessAudio(AudioClip clip)
{
float audioTime = clip.length;
if (audioTime > 5)
{
AudioImporter audio = (AudioImporter)assetImporter;
AudioImporterSampleSettings AudioSetting = audio.GetOverrideSampleSettings("iPhone");
if (audioTime < 30)
{
AudioSetting.loadType = AudioClipLoadType.CompressedInMemory;
}
else
{
AudioSetting.loadType = AudioClipLoadType.Streaming;
}
AudioSetting.compressionFormat = AudioCompressionFormat.Vorbis;
audio.defaultSampleSettings = AudioSetting;
audio.SetOverrideSampleSettings("Standalone", AudioSetting);
audio.SetOverrideSampleSettings("iPhone", AudioSetting);
audio.SetOverrideSampleSettings("Android", AudioSetting);
}
}
}
Unity3D导入音频自动设置格式(包含手动设置)
最新推荐文章于 2023-06-14 14:58:38 发布