现在我们使用粒子提升了游戏的视觉效果,接下来,我们将添加一些音效和音乐到游戏里。它在Unity里非常简单,但它在游戏里确是非常重要的。
你将学到在哪里可以找到音效和音乐,获取它们,通过脚本在游戏里播放它们。
注:Unity 5已经发布了很多新的Audio工具,然而,我们不会在教程里使用它们新的特性。
Damien最近的participated in an interesting subject on Stack Exchange就是关于这个主题的。
在我们看来,一个游戏开发者可以:
- 买声音
- 认识/聘用一个音乐人
- 从sound banks里找免费的 (像 FindSounds 或 Freesound)
- 自己录制
或者是Damien的最爱的方式:
Matthieu:我为一个朋友的短期学校项目制作过一些音效和歌曲,我当时时个鼓手,绝对不是一个音乐制作者。
不过,在Freesound的帮助下,用了一点创造力和十几个小时的时间,我完成(便宜的)整个游戏的配乐。
我不建议这样子去做歌曲(找一个音乐人,做一个交易,这样比较好),但用足够的时间和一个好的工具,你肯定可以制作出非常不错的音效。它是可行的:有创造力的
关于音乐,得看你要啥:
- Jamendo 有大量的艺术家,小心商业用途的许可
- Bosca Ceoil 是一个来自Terry Cavanagh制作音乐的简单软件
Damien:这是我遇到艺术家 Spintronic 的方式,我真的非常喜爱他的音乐,他非常友好的授权我在The Great Paper Adventure里使用它们
制作或找到一个爆炸和射击的音效,如果你比较懒,你可以使用我们的:
本教程将使用The Great Paper Adventure里的一个音轨,由Spintronic编写:
将这4个音乐文件拖到"Sounds"目录里。
齐活儿!
要播放音乐,简单的将音乐文件拖到"Hierarchy"里即可。
注意"Mute"选择框,当你做许多测试的时候,它将会用到。
游戏里,音乐是一直播放的,而音效是在需要的时候触发。
所以,我们仍然有一个简单的方法,就像"SpecialEffectsHelper"的代码,我们需要一个脚本,可以在任何地方调用 它。
创建一个新脚本"SoundEffectsHelper":
using UnityEngine;
using System.Collections;
/// <summary>
/// Creating instance of sounds from code with no effort
/// </summary>
public class SoundEffectsHelper : MonoBehaviour
{
/// <summary>
/// Singleton
/// </summary>
public static SoundEffectsHelper Instance;
public AudioClip explosionSound;
public AudioClip playerShotSound;
public AudioClip enemyShotSound;
void Awake()
{
// Register the singleton
if (Instance != null)
{
Debug.LogError("Multiple instances of SoundEffectsHelper!");
}
Instance = this;
}
public void MakeExplosionSound()
{
MakeSound(explosionSound);
}
public void MakePlayerShotSound()
{
MakeSound(playerShotSound);
}
public void MakeEnemyShotSound()
{
MakeSound(enemyShotSound);
}
/// <summary>
/// Play a given sound
/// </summary>
/// <param name="originalClip"></param>
private void MakeSound(AudioClip originalClip)
{
// As it is not 3D audio clip, position doesn't matter.
AudioSource.PlayClipAtPoint(originalClip, transform.position);
}
}
将此脚本添加到"Hierarchy"里的"Scripts"对象里,并将音效文件拖到"Inspector"对应的文本域里。
然后:
- "HealthScript"里,在爆炸后调用
SoundEffectsHelper.Instance.MakeExplosionSound();
- "PlayerScript"里,在
weapon.Attack(false);
后调用SoundEffectsHelper.Instance.MakePlayerShotSound();
- "EnemyScript"里,在
weapon.Attack(true);
后调用SoundEffectsHelper.Instance.MakeEnemyShotSound();
运行游戏,听一下,是不是有音乐和音效了!
注:这个方法对于本教程或一个小项目是足够了,对大项目来说,它可能太轻量了而无法管理上百个音效
我们刚刚学习了在游戏中如何使用音效和音乐。
对于shmup 横向卷轴射击游戏来将,我们有了一个非常好的基础。你可以制作更长的关卡,就和我们在介绍时给你的demo差不多了。
你可以开始制作你自己的图像,增加enemies,背景元素,你也可以在关卡最后增加一个boss,它有一点点麻烦,但挑战和设计决策真的非常有趣。
我们离完成一个游戏还有很远,但我们将停留在这个阶段。
在下一章节,我们将增加菜单,以便我们可以开始和重玩困难的关卡。