优化选项
- 建议都勾选ForceToMono:将多声道音频混合为单声道
- 在iOS上请使用MP3格式,在Android上使用Vorbis
- 场景等长音效使用Streaming Type,技能等短音效使用DecompressOnLoad
- 采样率选择手动控制到22050左右
- 短音频可选格式aifff或wav,长音频可选格式mp3或ogg
关于选项的设置可参考 Unity基础之音频资源设置。
实现编辑器自动检查
using System;
using UnityEngine;
using System.Collections;
using UnityEditor;
public class MyAudioProcessor : AssetPostprocessor
{
public void OnPreprocessAudio()
{
if (!assetPath.StartsWith("Assets/MyAudio")) return;
AudioImporter audioImporter = (AudioImporter)assetImporter;
audioImporter.forceToMono = true;
//Android设置
AudioImporterSampleSettings androidSettings = new AudioImporterSampleSettings();
androidSettings.loadType = AudioClipLoadType.DecompressOnLoad; //长音效用Streaming,短的用DecompressOnLoad
androidSettings.compressionFormat = AudioCompressionFormat.Vorbis; //Android用Vorbis
androidSettings.quality = 100;
androidSettings.sampleRateSetting = AudioSampleRateSetting.OverrideSampleRate; //采样率控制到22050左右
androidSettings.sampleRateOverride = 22050;
audioImporter.SetOverrideSampleSettings("Android", androidSettings);
//iOS设置
AudioImporterSampleSettings iOSSettings = new AudioImporterSampleSettings();
iOSSettings.loadType = AudioClipLoadType.DecompressOnLoad; //长音效用Streaming,短的用DecompressOnLoad
iOSSettings.compressionFormat = AudioCompressionFormat.MP3; //iOS用MP3
iOSSettings.quality = 100;
iOSSettings.sampleRateSetting = AudioSampleRateSetting.OverrideSampleRate; //采样率控制到22050左右
iOSSettings.sampleRateOverride = 22050;
audioImporter.SetOverrideSampleSettings("iOS", iOSSettings);
}
}
参考链接:
https://docs.unity3d.com/ScriptReference/AssetPostprocessor.html
https://docs.unity3d.com/ScriptReference/AssetPostprocessor.OnPreprocessAudio.html