|
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. 运行工程,体验效果。