Unity性能优化—声音优化

来源:互联网 发布:歌莉娅淘宝官方旗舰店 编辑:程序博客网 时间:2024/06/07 02:00

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 BuildAuto 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 上传

原创粉丝点击