Unity性能优化—声音优化

xiaoxiao2021-02-28  106

Unity性能优化—声音优化

发表于 2016-9-28 11:43:03 | 只看该作者 | 只看大图 | 倒序浏览 | 阅读模式

本帖最后由 manew_JR 于 2016-9-28 11:48 编辑 目标给你一个关于在Unity游戏中通过优化声音提高性能的建议    为什么我的游戏加载时间那么长? 为什么播放游戏声音时延迟那么长? 为什么声音文件占那么多的内存? 为什么我一播放声音游戏就那么卡? 难道是因为我在开发时对声音的处理有问题? 也许你在加载声音时都会出现以上的问题冲到你的脑门上!! 好吧,我知道这种感觉!!声音管理起来很棘手;当我开发第一个游戏的时候我也有遇到过相同的问题。我在网上任何地方都找不到原因和解决方案。所以我决定发布这篇文章,希望能帮助到你。 如果你是Unity初学者,首先需要弄清楚声音管理如何在Unity中工作的。 为此,你可以参照下面的链接,去了解一下Audio Clips、Audio Listeners、AudioSources的基本操作: https://unity3d.com/learn/tutorials/modules/beginner/audio/audio-sources-and-listeners 在Unity中的声音管理是非常简单和基本的,它是如何影响我的游戏呢?     · 是的,非常简单哦,但是它(声音管理)却能让你的游戏陷入困境! · 让我们通过一个简单的案例去理解它吧。     步骤一:设置场景,如下所示: 创建一个Canvas,给它添加两个Button控件(一个名为Music-Button,另一个为Sound-Button)。 在Main Camera下创建一个空物体命名为AudioSources,且又在它下面再创建两个空物体分别命名为“BackgroundMusic”和“SFX-Sounds”。 然后创建一个空物体(Empty GameObject),并命名为“SoundManager”。(名字随你来) 在hierarchy中层次关系如下所示:

1.png (50.3 KB, 下载次数: 3)

下载附件  保存到相册

2016-9-28 11:34 上传

我的屏幕设置很简单,如下所示:

QQ截图20160928113506.png (23.21 KB, 下载次数: 3)

下载附件  保存到相册

2016-9-28 11:34 上传

步骤二:创建一个脚本,如下所示: [C#] 纯文本查看 复制代码 ?   01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 using UnityEngine;   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 } 在这里,对于背景音乐和SFX声音(SFX声音就是一点短的音频剪辑,如跳跃的声音(Biu)等)我声明了两个Audio Clip的数组,名字分别为:backgroundMusicClipsArray和 SFXSounds(分别用来存放对应的声音资源)。 也声明了两个AudioSource类型的成员变量(就是对应的“BackgroundMusic”和“SFX-Sounds”,记得把他们拖到脚本上哦)。 这里有两个名为PlayRandomMusic() 和PlayRandomSFXSounds()的方法,用于在我们调用该方法时播放随机音乐/声音。然后为对应的Button添加对应的响应事件。把AudioClips的设置全设为默认即可。 现在测试它在编辑器是否能正常工作。 步骤三:把发布平台设置为安卓平台 生成 Build 的时候记得把 Development Build 和 Auto Connect Profiler 勾选上,如下图所示:

0 (2).webp.jpg (54.78 KB, 下载次数: 2)

下载附件  保存到相册

2016-9-28 11:36 上传

在你手机上开始游戏,你有发现到什么奇怪的事情吗? 加载游戏花了多少时间? 对于我,从Unity的默认界面加载到游戏界面我大约花了10-15秒,我的游戏中大概有15个背景音乐和40个SFX声音片段。 现在,查看一下Profiler,在Profiler中找到Audio模块。如下图所示(下面第一张图是我自己弄得,怕大伙们找不到Audio模块。。)

0.jpg (205.28 KB, 下载次数: 3)

下载附件  保存到相册

2016-9-28 11:37 上传

转载请注明原文地址: https://www.6miu.com/read-74920.html

最新回复(0)