unity添加声音方法

来源:互联网 发布:数据周报模板 编辑:程序博客网 时间:2024/05/03 21:00
今天发现自己在[size=10.5000pt]unity4.0里面用PlayOnAwake这个方法的时候没有反应,然后我在别的电脑上也试了一下,还是不可以用,感觉代码上面是没有什么问题的啊,然后去群里面问别人,得到的回复只是一个菜鸟。好吧,菜鸟来总结下我自己知道的播放声音吧。

[size=10.5000pt]要想声音在场景中播放必须要用到两个组件,一个是音源组件AudioSource.一个是声音的监听的组件AudioListener
[size=10.5000pt]首先,最容易的让它可以播放声音,就是直接手动添加组件。

[size=10.5000pt]先建立一个空对象,或者一个对象cube或者其他
1 
[size=10.5000pt]然后,在这个对象上添加声音源
2 
[size=10.5000pt]这里是刚刚添加的声音源,在声音剪辑[size=10.5000pt]AudioClip上添加声音,(这个声音是自己导入进来的)。
3 
[size=10.5000pt]然后运行,就可以播放声音了。

[size=10.5000pt]这里本来是要添加AudioListener,但是在添加AudioSource的时候,它会自动在Main Camera上添加AudioListener
4 
[size=10.5000pt]如果你希望声音不是在Camera上的,譬如说希望把声音监听就放在声音源的地方,这样就在有声音源的对象上添加AudioListener
5 
6 
[size=10.5000pt]但是如果这样的话,运行的时候,会显示There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene.
[size=10.5000pt]是因为场景里面有两个声音监听在监听一个声音,所以,去掉Camera上的那个就好了。
7 



[size=10.5000pt]另外呢,还可以用代码来添加声音。

[size=10.5000pt]使用这句来添加组件[RequireComponent(typeof(AudioSource))]这个是在[size=10.5000pt]C#里面的写法
[size=10.5000pt]在JS里面是@Script [size=10.5000pt]RequireComponent[size=10.5000pt](AudioSource)
[size=10.5000pt][RequireComponent(typeof(这里面是要添加的组件
[size=10.5000pt]不管是[size=10.5000pt]C#还是JS的,后面都是不用“;”来结尾的。
8 
[size=10.5000pt]PlayOneShot[size=10.5000pt] ([size=10.5000pt]clip[size=10.5000pt] : AudioClip[size=10.5000pt], [size=10.5000pt]volumeScale[size=10.5000pt] : float = 1.0F)

[size=10.5000pt]这里要注意的是,用[size=10.5000pt][RequireComponent(typeof(AudioSource))]这种方法来添加组件,是不可以在空对象上添加的,要添加在一个实体上,譬如说[size=10.5000pt]cube
[size=10.5000pt]点击Hierarchy下面的create弹出窗口里面可以选择的对象,都是可以用这种方法来添加组件的
9 
[size=10.5000pt]下面我是在一个[size=10.5000pt]cube上添加该代码,就会自动添加AudioSource组件了。
10 
[size=10.5000pt]这个组件是用代码添加的,所以跟手动添加的有少少不一样,就是当你[size=10.5000pt]remove这个组件的时候,就会弹出如下窗口
11 
[size=10.5000pt]想去掉它必须先去掉这个[size=10.5000pt]sound2的脚本。
[size=10.5000pt]在运行的时候,点击界面上的soundPlay按钮就会播放一次声音。
12 
[size=10.5000pt]当我们再添加一个按钮来播放另外一个声音的时候还是可以共用这个声音源[size=10.5000pt]AudioSource
[size=10.5000pt]譬如我们现在再添加一个按钮321,代码如下
13 
[size=10.5000pt]运行时,控制面板中显示声音源是只有一个的,如下图所示。
14 
[size=10.5000pt]界面上会出现两个按钮,点击不同的按钮就出现不同的声音
15 


[size=10.5000pt]还有一种播放声音的代码跟这个略有不同
代码如下
16 
[size=10.5000pt]这个是定义了声音源跟声音剪辑,还有声音的音量。
[size=10.5000pt]然后添加一个声音源的组件给定义的声音源,声音源的音频剪辑为定义的音频剪辑,声音源的大小为定义的大小[size=10.5000pt]0.6
[size=10.5000pt]然后让声音源在Start里面播放。就是开始运行的时候播放一次。
[size=10.5000pt]然后将代码放到一个GameObject上,如下图所示
17 
[size=10.5000pt]在运行的时候,就会显示声音源的组件,而且这里的声音源是一个声音源配对一个声音剪辑。代码就是,加多一个[size=10.5000pt]AudioSourceAudioClip
18 
[size=10.5000pt]在控制面板里面运行时显示如下

19 

[size=10.5000pt]这里遇到一个问题是,在[size=10.5000pt]unity4.0 的时候使用PlayOnAwake()这个方法没有效果,但是同样的代码,在unity3.5里面是可以实现的。
[size=10.5000pt]下面是写在unity3.5里面的代码
20 
[size=10.5000pt]而且我在别的电脑上使用unity4.0以上版本的用PlayOnAwake()这个都是没有声音的,不过我是用AudioSource.Play()来让其在4.0里面发出声音

[size=10.5000pt]如果说是同一个游戏对象上需要发出不同的声音,可以用第一种代码。
[size=10.5000pt]如果是不同的游戏对象上发出声音,就可以用第二种代码。
0 0
原创粉丝点击