using UnityEngine; [AddComponentMenu("NGUI/Interaction/Play Sound")] public class UIPlaySound : MonoBehaviour { public enum Trigger { OnClick, OnMouseOver, OnMouseOut, OnPress, OnRelease, Custom, OnEnable, OnDisable } public AudioClip audioClip; public Trigger trigger; [Range(0f, 1f)] public float volume = 1f; [Range(0f, 2f)] public float pitch = 1f; private bool mIsOver; private bool canPlay { get { if (!base.enabled) { return false; } UIButton component = GetComponent(); if (!(component == null)) { return component.isEnabled; } return true; } } private void OnEnable() { if (trigger == Trigger.OnEnable) { NGUITools.PlaySound(audioClip, volume, pitch); } } private void OnDisable() { if (trigger == Trigger.OnDisable) { NGUITools.PlaySound(audioClip, volume, pitch); } } private void OnHover(bool isOver) { if (trigger == Trigger.OnMouseOver) { if (mIsOver == isOver) { return; } mIsOver = isOver; } if (canPlay && ((isOver && trigger == Trigger.OnMouseOver) || (!isOver && trigger == Trigger.OnMouseOut))) { NGUITools.PlaySound(audioClip, volume, pitch); } } private void OnPress(bool isPressed) { if (trigger == Trigger.OnPress) { if (mIsOver == isPressed) { return; } mIsOver = isPressed; } if (canPlay && ((isPressed && trigger == Trigger.OnPress) || (!isPressed && trigger == Trigger.OnRelease))) { NGUITools.PlaySound(audioClip, volume, pitch); } } private void OnClick() { if (canPlay && trigger == Trigger.OnClick) { NGUITools.PlaySound(audioClip, volume, pitch); } } private void OnSelect(bool isSelected) { if (canPlay && (!isSelected || UICamera.currentScheme == UICamera.ControlScheme.Controller)) { OnHover(isSelected); } } public void Play() { NGUITools.PlaySound(audioClip, volume, pitch); } }