/// //规则是这样的 可以在每个窗口UI下添加该脚本 音效ID在 Sound.txt表格中配置 // UI生效时会 遍历窗口所有的子控件,寻找Button等脚本 并添加Button等点击事件 播放音效 // 窗口所有的Button点击播放的音效一样,如果有些button小播放其它的音效,就需要在该button下添加该脚本。 // UGUI中有些是继承的 IPointerClickHandler事件,它的点击也需要添加音效的话,就需要在该脚本的问题上也添加一个 // ButtonPlaySound脚本 。在IPointerClickHandler事件的触发函数中寻找 ButtonPlaySound脚本并调用 PlaySound函数 // /// using UnityEngine; using UnityEngine.UI; using System.Collections; using Games.GlobeDefine; public class ButtonPlaySound : MonoBehaviour { public int SoundSourceId = GlobeVar.defaultButtonSound; //Button的音效也配置在表格中吧 表格中默认的是音效 id=7 public bool IsForBidSound = false; //是否禁止音效 true禁止 false不禁止 void Start () { //先添加这两种吧,看后面有没有需要增加的 SetButtonSound(); SetToggleSound(); } private void SetToggleSound() { Toggle[] toggles = GetComponentsInChildren(); for (int i = 0; i < toggles.Length; i++) { Toggle toggle = toggles[i]; ButtonPlaySound ChildSound = toggle.gameObject.GetComponent(); if (ChildSound != null) { if (ChildSound.SoundSourceId > 0) continue; if (IsForBidSound) continue; } for (int j = 0; j < toggle.onValueChanged.GetPersistentEventCount(); j++) { toggle.onValueChanged.SetPersistentListenerState(j, UnityEngine.Events.UnityEventCallState.RuntimeOnly); } toggle.onValueChanged.AddListener(delegate (bool isOn) { if (isOn) PlaySound(); }); } } private void SetButtonSound() { Button[] btns = GetComponentsInChildren