|
01 | public class Sound : ScriptableClass |
02 | { |
03 | private const int CHANGE_DISTANCE = 50; |
04 |
05 | public override void OnLoad() |
06 | { |
07 | //播放音频 |
08 | Owner.GetComponent< SoundSource>().Play(); |
09 |
10 | //添加音频混音过滤器组件 |
11 | Owner.AddComponent< SoundReverbFilterComponent>(); |
12 |
13 | //激活混音过滤器 |
14 | Owner.GetComponent< SoundReverbFilterComponent>().Attach(); |
15 | } |
16 |
17 | public override void OnFrame() |
18 | { |
19 | //根据场景内主角X坐标切换引擎内置混音过滤器 |
20 | float fPlayerPostionX = Player.Instance.PlayerPostion.X; |
21 | if (CHANGE_DISTANCE > fPlayerPostionX) |
22 | { |
23 | Owner.GetComponent< SoundReverbFilterComponent>().ReverbMode = SoundReverbFilterComponent.SoundReverbMode.OFF; |
24 | } |
25 | else if ((2 * CHANGE_DISTANCE) > fPlayerPostionX) |
26 | { |
27 | Owner.GetComponent< SoundReverbFilterComponent>().ReverbMode = SoundReverbFilterComponent.SoundReverbMode.BATHROOM; |
28 | } |
29 | else if ((3 * CHANGE_DISTANCE) > fPlayerPostionX) |
30 | { |
31 | Owner.GetComponent< SoundReverbFilterComponent>().ReverbMode = SoundReverbFilterComponent.SoundReverbMode.STONECORRIDOR; |
32 | } |
33 | else if ((4 * CHANGE_DISTANCE) > fPlayerPostionX) |
34 | { |
35 | Owner.GetComponent< SoundReverbFilterComponent>().ReverbMode = SoundReverbFilterComponent.SoundReverbMode.FOREST; |
36 | } |
37 | else if ((5 * CHANGE_DISTANCE) > fPlayerPostionX) |
38 | { |
39 | Owner.GetComponent< SoundReverbFilterComponent>().ReverbMode = SoundReverbFilterComponent.SoundReverbMode.PARKINGLOT; |
40 | } |
41 | else |
42 | { |
43 | Owner.GetComponent< SoundReverbFilterComponent>().ReverbMode = SoundReverbFilterComponent.SoundReverbMode.UNDERWATER; |
44 | } |
45 |
46 | //切换音频监听器 |
47 | if (Input.KeyDown(Code.Space)) |
48 | { |
49 | Actor childActor = Owner.GetChild(0); |
50 | if (!childActor.IsActive) |
51 | { |
52 | childActor.Active(); |
53 | } |
54 | else |
55 | { |
56 | childActor.Deactive(); |
57 | } |
58 | } |
59 | } |
60 | } |
7. 将脚本挂载到声音。
8. 运行工程,体验效果。