美文网首页
音频优化之代码

音频优化之代码

作者: APP4x | 来源:发表于2020-11-18 13:52 被阅读0次

这是我在项目里用的音频格式化代码:

public class SoundImportEditor : AssetPostprocessor
{
    public override uint GetVersion()
    {
        return 1;
    }

    const string SYMBOL_ANDROID = "Android";
    const string SYMBOL_IPHONE = "iPhone";
    const string DIR_SOUND = "Assets/Sound/";


    //背景音乐:Compress In Memory + Vorbis/MP3
    //经常播放的短音效:Decompress On Load + PCM
    //一般的音效:Compressed In Memory + ADPCM

    List<string> bgSound = new List<string>()
    {
        "BgBattle",
        "BgMainUi"
    };

    List<string> btnSound = new List<string>()
    {
        "battle_open_btn",
        "normal_choose",
        "normal_click",
        "normal_close",
        "normal_layout",
        "normal_menu"
    };

    bool NameInList(List<string> list, string name)
    {
        foreach (var item in list)
        {
            if (name.Contains(item))
                return true;
        }
        return false;
    }

    private void OnPostprocessAudio(AudioClip clip)
    {
        AudioImporter importer = assetImporter as AudioImporter;
        string versionStr = this.GetVersion().ToString();
        if (importer.userData == versionStr)
            return;
        string assetPath = importer.assetPath;
        if (!assetPath.Contains(DIR_SOUND))
            return;

        Debug.LogFormat("自动帮您导入音频 纠正格式 : {0}", assetPath);

        //ambisonic VR有用
        importer.ambisonic = false;
        importer.preloadAudioData = false;
        //channels 声道数
        importer.forceToMono = clip.channels <= 1;
        importer.userData = versionStr;

        AudioImporterSampleSettings setting = importer.defaultSampleSettings;
        setting.sampleRateSetting = AudioSampleRateSetting.OverrideSampleRate;
        setting.sampleRateOverride = 22050;

        if (NameInList(bgSound, assetPath))
        {
            importer.loadInBackground = true;

            setting.loadType = AudioClipLoadType.Streaming;
            setting.compressionFormat = AudioCompressionFormat.Vorbis;
            setting.quality = 0.5f;
        }
        else if (NameInList(btnSound, assetPath))
        {
            importer.loadInBackground = false;

            setting.loadType = AudioClipLoadType.DecompressOnLoad;
            setting.compressionFormat = AudioCompressionFormat.PCM;
        }
        else
        {
            importer.loadInBackground = false;

            setting.loadType = AudioClipLoadType.CompressedInMemory;
            setting.compressionFormat = AudioCompressionFormat.ADPCM;
        }

        importer.SetOverrideSampleSettings(SYMBOL_ANDROID, setting);
        importer.SetOverrideSampleSettings(SYMBOL_IPHONE, setting);

        importer.SaveAndReimport();
        EditorUtility.SetDirty(importer);
    }
}

相关文章

  • 音频优化之代码

    这是我在项目里用的音频格式化代码:

  • 音频优化之加载音频

    这是我在《Unity游戏优化 (第2版)》看的,记录一下~ 艺术是一个非常主观的领域,由个人的意见和偏好所支配支持...

  • 音频优化之方法

    这是我在《Unity游戏优化 (第2版)》看的,记录一下~ 了解了音频加载方式和音频格式后,如何来优化一下性能呢?...

  • 编译器前端和后端

    编译器粗略分为词法分析,语法分析,类型检查,中间代码生成,代码优化,目标代码生成,目标代码优化。把中间代码生成及之...

  • 【性能优化 之 代码优化】

    【 不用静态变量存储数据 】 1、静态变量等数据由于进程已经被杀死而被初始化。 2、使用其他暑假传输方式:文件 /...

  • vue之代码优化

    vue之代码优化 组件名称的优化 标签名,文件名, 组件名称统一。 数据存储优化。store存放经常变更的变量。 ...

  • 代码优化之startActivity

    前言 今天给大家带来一篇文章是本人在阅读网络上一些比较好的项目的源码时发现的,觉得还不错,所以就记录下来。我们平时...

  • javaScript性能优化之代码优化

    利用函数的惰性载入提高 javaScript 代码性能 在 javaScript 代码中,因为各浏览器之间的行为的...

  • Android性能优化之代码优化

    一.代码优化 1.广播 应用程序内部广播通信,优先采用LocalBroadcastManager,安全性更好,运行...

  • Android性能优化 之 代码优化

网友评论

      本文标题:音频优化之代码

      本文链接:https://www.haomeiwen.com/subject/ykkciktx.html