您的位置:首页 > 移动开发 > Unity3D

Unity3D研究院之详解游戏开发音频的播放(十五)

2015-06-26 15:47 447 查看
游戏音频的播放在任何游戏中都占据非常重要的地位,音频的播放还可以分为两种,一种为游戏音乐,另一种为游戏音效。前者适用于较长的音乐,如游戏背景音乐。第二种试用与比较短的游戏音乐,如开枪,打怪 时“砰砰”一瞬间播放的游戏音效。今天MOMO将用下面的例子带盆友们去剖析Unity3D游戏音乐与音效的播放。

Unity3D游戏引擎一共支持4个音乐格式的文件

.AIFF 适用于较短的音乐文件可用作游戏打斗音效

.WAV 适用于较短的音乐文件可用作游戏打斗音效

.MP3 适用于较长的音乐文件可用作游戏背景音乐

.OGG 适用于较长的音乐文件可用作游戏背景音乐

在场景中创建一个空的游戏对象。

GameObject -> CreateEmpty 创建成功后我命名为audio。

给audio添加一个AudioSource属性,这个属性非常的重要,Unity播放音乐主要就是要靠这个东西。

Component -> Audio – > Audio Source。





找一个音乐文件,我这里使用了一个.mp3音乐文件,我命名为0.mp3 如下图所示将它拖动到右侧Audio Clip处。





我们发现 Audio Source 有很多设置的属性,那么MOMO将一些比较重要的属性诺列出来。

AudioClip :声音片段,还可以在代码中去动态的截取音乐文件。

Mute : 是否静音

Bypass Effects: 是否打开音频特效

Play On Awake: 开机自动播放

Loop:循环播放

Volume: 声音大小,取值范围0.0 到 1.0

Pitch:播放速度,取值范围在 -3 到 3 之间 设置1 为正常播放,小于1 为减慢播放 大于1为加速播放。创建一个脚本我命名为audio.cs 用来音乐的播放。本章将实现3个按钮 点击实现 播放音乐、 停止音乐、 暂停音乐 ,与一个横向拖动条通过手指的拖动实现动态修改音乐声音。

audio.cs

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

using
UnityEngine;

using
System.Collections;

public
class
audio
:
MonoBehaviour
{

//音乐文件

public
AudioSource
music;

//音量

public
float
musicVolume;

void
Start()
{

//设置默认音量

musicVolume
=
0.5F;

}

void
OnGUI()
{

//播放音乐按钮

if
(GUI.Button(new
Rect(10,
10,
100,
50),
"Play music")) {

//没有播放中

if
(!music.isPlaying){

//播放音乐

music.Play();

}

}

//关闭音乐按钮

if
(GUI.Button(new
Rect(10,
60,
100,
50),
"Stop music")) {

if
(music.isPlaying){

//关闭音乐

music.Stop();

}

}

//暂停音乐

if
(GUI.Button(new
Rect(10,
110,
100,
50),
"Pause music")) {

if
(music.isPlaying){

//暂停音乐

//这里说一下音乐暂停以后

//点击播放音乐为继续播放

//而停止以后在点击播放音乐

//则为从新播放

//这就是暂停与停止的区别

music.Pause();

}

}

//创建一个横向滑动条用于动态修改音乐音量

//第一个参数
滑动条范围

//第二个参数
初始滑块位置

//第三个参数
起点

//第四个参数
终点

musicVolume
=
GUI.HorizontalSlider
(new
Rect(160,
10,
100,
50),
musicVolume,
0.0F,
1.0F);

//将音量的百分比打印出来

GUI.Label(new
Rect(160,
50,
300,
20),
"Music Volueme is "
+
(int)(musicVolume
*
100)
+
"%");

if
(music.isPlaying){

//音乐播放中设置音乐音量
取值范围 0.0F到 1.0

music.volume
=
musicVolume;

}

}

}

将audio.cs 绑定在摄像头上,将audio游戏对象拖动赋值给Music 这个AudioSource这个对象。这里强调一下AudioListenr ,它音频监听器,用来监听音乐文件的播放。这是一个重要的属性,一定要勾选,只有勾选后才可以进行音乐的播放。





build and run 运行我们这个游戏Demo,一切功能完美实现,哇咔咔~





最后欢迎各位盆友可以和MOMO一起讨论Unity3D游戏开发,大家一起学习一起进步,哇咔咔~~~ 附上Unity3D工程的下载地址,Xcode项目我就不上传了,须要的自己导出。今天心里有点不高兴! 5555555555。就这样晚安~

下载地址:http://vdisk.weibo.com/s/abxs8

补充:

最近有朋友问我如何切换场景Unity音频不关闭,其实做法非常简单。如下图所示,你的声音组件会放在声音对象中,因为切换场景的时候声音对象会自动销毁,所以声音就会关闭。所以如果你的声音组件不被销毁掉,哪么你的声音就会连续播放了。





代码就是使用DontDestroyOnLoad()方法就可以切换场景不施放对象了。

C#

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

using
UnityEngine;

using
System.Collections;

public
class
Test
:
MonoBehaviour

{

public
GameObject
audio;

void
Start
()

{

DontDestroyOnLoad(audio);

}

void
OnGUI()

{

if(GUILayout.Button("NEXT"))

{

Application.LoadLevel("Scene1");

}

}

}

本文固定链接: http://www.xuanyusong.com/archives/550

转载请注明: 雨松MOMO 2012年05月01日 于 雨松MOMO程序研究院 发表
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: