Unity优化(二):优化声音

发表于2017-10-11
评论0 4.7k浏览



游戏加载时间长、游戏声音差异大、声音文件占用内存多、播放声音滞后或不能及时播放?这也是Unity优化系列中要和大家介绍的,为了优化游戏中的声音! 需要针对不同的使用做不同的设置!为此下面要给大家介绍的第二篇关于声音的优化。


创建要给Unity 项目然后做为测试:


 1 步) 设置场景


       如下所示 ︰ 画布上的两个按钮(一个MusicButtonSoundButton)。带两个音频AudioSource。一个空的游戏对象,命名为SoundManager。



 


  2 步) 设置下面的脚本 ︰

public class SoundManager : MonoBehaviour  
{  
    #region BACKGROUND_MUSIC  
    public AudioClip[] backgroundMusicClipsArray;  
    public AudioSource backgroundMusicSource;  
    #endregion  
    #region SFX_SOUNDS  
    public AudioClip[] SFXSounds;  
    public AudioSource SFXAudioSource;  
    #endregion  
    #region PUBLIC_METHODS  
    public void PlayRandomMusic()  
    {  
        backgroundMusicSource.clip = backgroundMusicClipsArray[Random.Range(0, backgroundMusicClipsArray.Length)];  
        backgroundMusicSource.Play();  
    }  
    public void PlayRandomSFXSounds()  
    {  
        SFXAudioSource.PlayOneShot(SFXSounds[Random.Range(0, SFXSounds.Length)]);  
    }  
    #endregion  
}  

所以在这里两个数组的AudioClips分别命名 backgroundMusicClipsArray()      SFXSounds()     背景音乐   SFX 声音了


在这里, PlayRandomMusic()PlayRandomSFXSounds()     播放随机音乐 / 声音时调用。将这些方法链接到场景中的按钮 。保持所有的 AudioClips 设置作为默认值 


现在在编辑器中测试它,如果它工作正常。


  3 步) 准备编译 Android 的生成 ︰


        生成 android 版本,不忘记选择Development Build和 Auto Connect Profiler 


"在您的手机上开始游戏。你注意到看到怪异的事情?"


"多少时间做它需要加载游戏?"


       Unity的默认的初始屏幕 花了大约10-15 秒钟以加载!我有关于15 背景音乐音频剪辑和  40  SFX 声音剪辑。



查阅  "Total Audio Memory"  指示器,显示145 MB......     总之音频约145 MB的内存占用


怎么解决?


 1 步) 执行几个设置调整上音频剪辑


现在选择所有  循环的所有背景音乐  剪辑。


检查器会显示设置只是如下图所示 



看到上面的图片 没有选择Preload Audio Data 


        选中  Override for Android 和设置  Load Type  Streaming 


  2 步) 准备音频生成


       对我来说,游戏的载入时间从15秒到...下去 !这是关于快 5-7倍加载时间......


注意


        不同设备这可能会有所不同



音频的总内存去从145 MBs  5.8 MBs         这就是25 倍优化内存使用情况!!


       在这里我们禁用PeeLoad Audio Data ;   因此没有必要更快地加载时间!  将只在需要时加载音频剪辑。


但你的问题可能是, "我一次加载所有使用的音频剪辑,他们不会产生所有的内存吗?"


       如果你还记得我曾设置Load Type streaming ,所以这将在play时缓冲音频剪辑。一旦这个音频缓冲区被播放完了,缓存将因此卸载 释放内存。由此而引发的内存优化 


其他问题,你可能会遇到"为什么不做 SFX 音频相同的设置呢"


       很好,因为他们在玩游戏期间非常频繁地使用,因此会产生轻微延迟,音频听起来不对。 事实上,我会建议Load Type 设置为 Decompress onLoad (并不是全部,只是为了非常频繁的)的执行速度更快。


不管怎么说即使你有大约 50 SFX 声音,它也不会超过 10-20 mb 的内存,这是可以接受的。


下图显示大约 40 SFXAudioClips 负载类型设置为Decompress on Load , 仍在只是大约 16 mb


如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论