Commit cae044d6 authored by wanqing's avatar wanqing

增加音效

parent e93fc574
...@@ -46,6 +46,7 @@ public class BattleUI : MonoBehaviour ...@@ -46,6 +46,7 @@ public class BattleUI : MonoBehaviour
//m_posDownBtn.onClick.AddListener(PosDownBtn); //m_posDownBtn.onClick.AddListener(PosDownBtn);
//m_fieldFarBtn.onClick.AddListener(FieldFarBtn); //m_fieldFarBtn.onClick.AddListener(FieldFarBtn);
//m_fieldNearBtn.onClick.AddListener(FieldNearBtn); //m_fieldNearBtn.onClick.AddListener(FieldNearBtn);
GameServices.audioServices.PlayBgm(GameServices.configService.audioConfig.GameBgm);
} }
void SetDragMode() void SetDragMode()
{ {
...@@ -150,12 +151,14 @@ public class BattleUI : MonoBehaviour ...@@ -150,12 +151,14 @@ public class BattleUI : MonoBehaviour
//{ //{
// m_gameBestTime.text = string.Format("{0:d2}:{1:d2}", varCurTime / 60, varCurTime % 60); // m_gameBestTime.text = string.Format("{0:d2}:{1:d2}", varCurTime / 60, varCurTime % 60);
//} //}
GameServices.audioServices.PlayAudio(GameServices.configService.audioConfig.Success);
} }
//失败 //失败
public void OnBattleFail() public void OnBattleFail()
{ {
m_loseObj.SetActive(true); m_loseObj.SetActive(true);
m_selectLevelObj.SetActive(false); m_selectLevelObj.SetActive(false);
GameServices.audioServices.PlayAudio(GameServices.configService.audioConfig.GetFail());
} }
/// 加载关卡前调用,隐藏不需要显示的ui /// 加载关卡前调用,隐藏不需要显示的ui
public void OnBeforeLoadLevel() public void OnBeforeLoadLevel()
......
...@@ -70,6 +70,9 @@ public class ChainRopeView : MonoBehaviour ...@@ -70,6 +70,9 @@ public class ChainRopeView : MonoBehaviour
private RectTransform m_thumbRT;//摇杆 private RectTransform m_thumbRT;//摇杆
private Outlinable m_outlinable;//插件脚本 private Outlinable m_outlinable;//插件脚本
private bool m_bIsClawUp = false;//是否爪子在上升 private bool m_bIsClawUp = false;//是否爪子在上升
private AudioSource m_clawDownOrUpAudioSource;//下降上升音乐,需要循环播放
private bool m_bControlClawDownOrUpAudio = true;//控制音效
void Awake() void Awake()
{ {
// Create both the rope and the solver: // Create both the rope and the solver:
...@@ -225,6 +228,8 @@ public class ChainRopeView : MonoBehaviour ...@@ -225,6 +228,8 @@ public class ChainRopeView : MonoBehaviour
{ {
return; return;
} }
m_bControlClawDownOrUpAudio = true;
m_clawDownOrUpAudioSource = GameServices.audioServices.GetPlayAudioSource(GameServices.configService.audioConfig.clawDownOrUp);
//第五关特殊处理 //第五关特殊处理
//if (BattleCtrl.instance.levelManager.CurLevelIndex == LevelEnum.levelFiveIndex) //if (BattleCtrl.instance.levelManager.CurLevelIndex == LevelEnum.levelFiveIndex)
//{ //{
...@@ -555,6 +560,12 @@ public class ChainRopeView : MonoBehaviour ...@@ -555,6 +560,12 @@ public class ChainRopeView : MonoBehaviour
} }
else else
{ {
if (m_bControlClawDownOrUpAudio)
{
m_bControlClawDownOrUpAudio = false;
GameServices.audioServices.AudioPlayFinished(m_clawDownOrUpAudioSource);
m_clawDownOrUpAudioSource = null;
}
m_bIsCatch = false; m_bIsCatch = false;
m_bIsNeedRotate = true; m_bIsNeedRotate = true;
m_bIsCathchObjHitTarget = false; m_bIsCathchObjHitTarget = false;
...@@ -579,6 +590,12 @@ public class ChainRopeView : MonoBehaviour ...@@ -579,6 +590,12 @@ public class ChainRopeView : MonoBehaviour
else else
{ {
SetJoyStickDirectTrans(m_topCollider.transform); SetJoyStickDirectTrans(m_topCollider.transform);
if (m_bControlClawDownOrUpAudio)
{
m_bControlClawDownOrUpAudio = false;
GameServices.audioServices.AudioPlayFinished(m_clawDownOrUpAudioSource);
m_clawDownOrUpAudioSource = null;
}
} }
} }
} }
...@@ -617,6 +634,12 @@ public class ChainRopeView : MonoBehaviour ...@@ -617,6 +634,12 @@ public class ChainRopeView : MonoBehaviour
} }
else else
{ {
if (m_bControlClawDownOrUpAudio)
{
m_bControlClawDownOrUpAudio = false;
GameServices.audioServices.AudioPlayFinished(m_clawDownOrUpAudioSource);
m_clawDownOrUpAudioSource = null;
}
m_bIsNeedRotate = true; m_bIsNeedRotate = true;
ResetLightPos(); ResetLightPos();
SetJoyStickDirectTrans(m_topCollider.transform); SetJoyStickDirectTrans(m_topCollider.transform);
...@@ -638,8 +661,8 @@ public class ChainRopeView : MonoBehaviour ...@@ -638,8 +661,8 @@ public class ChainRopeView : MonoBehaviour
{ {
m_addAngleSpeed = 0; m_addAngleSpeed = 0;
} }
//m_leftClawTrans.localRotation = Quaternion.Euler(0, m_leftClawStartRatateY, -m_addAngleSpeed); m_leftClawTrans.localRotation = Quaternion.Euler(0, m_leftClawStartRatateY, -m_addAngleSpeed);
//m_rightClawTrans.localRotation = Quaternion.Euler(0, m_rightClawStartRatateY, m_addAngleSpeed); m_rightClawTrans.localRotation = Quaternion.Euler(0, m_rightClawStartRatateY, m_addAngleSpeed);
//m_threeClawTrans.localRotation = Quaternion.Euler(0, m_threeClawStartRatateY, m_addAngleSpeed); //m_threeClawTrans.localRotation = Quaternion.Euler(0, m_threeClawStartRatateY, m_addAngleSpeed);
} }
} }
......
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AudioServices : MonoBehaviour
{
public AudioSource bgmSource;
public List<AudioSource> activeSource = new List<AudioSource>();
public List<AudioSource> inActiveSouce = new List<AudioSource>();
static AudioServices m_Instance;
public static AudioServices instance
{
get {
if (m_Instance == null)
{
m_Instance = Create(null);
}
return m_Instance;
}
}
private void Awake()
{
m_Instance = this;
}
public static AudioServices Create(Transform parent)
{
return new GameObject("AudioServices").AddComponent<AudioServices>();
}
private AudioSource GetSource()
{
AudioSource source = null;
if (inActiveSouce.Count > 0)
{
source = inActiveSouce[0];
inActiveSouce.RemoveAt(0);
activeSource.Add(source);
}
else
{
source = transform.gameObject.AddComponent<AudioSource>();
source.playOnAwake = false;
activeSource.Add(source);
}
source.volume = GlobalConfig.isEnableSound ? 1 : 0; //根据全局配置设置音量
return source;
}
private void RecycleSource(AudioSource source)
{
source.Stop();
source.clip = null;
activeSource.Remove(source);
inActiveSouce.Add(source);
}
public void PlayBgm(AudioClip clip)
{
if (bgmSource == null)
{
bgmSource = GetSource();
}
bgmSource.clip = clip;
bgmSource.loop = true;
bgmSource.volume = GlobalConfig.isEnableBgm ? 1 : 0; //根据全局配置设置音量
bgmSource.Play();
}
public void PlayAudio(AudioClip clip, bool isLoop = false, Action onPlayEnd = null)
{
AudioSource source = GetSource();
source.clip = clip;
source.loop = isLoop;
source.volume = GlobalConfig.isEnableSound ? 1 : 0; //根据全局配置设置音量
source.Play();
GameServices.timerServices.Push(this, source.clip.length, delegate {
RecycleSource(source);
onPlayEnd?.Invoke();
});
}
public AudioSource GetPlayAudioSource(AudioClip clip)
{
AudioSource source = GetSource();
source.clip = clip;
source.loop = true;
source.volume = GlobalConfig.isEnableSound ? 1 : 0; //根据全局配置设置音量
source.Play();
return source;
}
public void AudioPlayFinished(AudioSource source)
{
RecycleSource(source);
}
private IEnumerator AudioPlayFinished(AudioSource source, float time, Action callback)
{
yield return new WaitForSeconds(time);
RecycleSource(source);
callback?.Invoke();
}
private void OnDestroy()
{
activeSource.Clear();
inActiveSouce.Clear();
activeSource = null;
inActiveSouce = null;
bgmSource = null;
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 4d769ec3c3f92a441916ca1f685ab33d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
...@@ -84,40 +84,23 @@ public class LevelConfig ...@@ -84,40 +84,23 @@ public class LevelConfig
[Serializable] [Serializable]
public class AudioConfig public class AudioConfig
{ {
[Header("pien死亡音效列表")] [Header("失败音效列表")]
public List<AudioClip> pienDeads; public List<AudioClip> failList;
[Header("成功通关")]
public AudioClip win;
[Header("失败音效")]
public AudioClip fail;
[Header("开枪")]
public AudioClip shoot;
[Header("电梯开门")]
public AudioClip ElevatorOpen;
[Header("失去钥匙")]
public AudioClip keyPick;
[Header("游戏bmg")] [Header("游戏bmg")]
public AudioClip GameBgm; public AudioClip GameBgm;
[Header("npc被救援")] [Header("胜利")]
public AudioClip npcRescue; public AudioClip Success;
[Header("npc被杀变为pien")]
public AudioClip npc2pien;
[Header("拾取枪")]
public AudioClip gunPick;
[Header("npc尖叫")]
public AudioClip girlScream;
[Header("爪子下降或者上升")]
public AudioClip clawDownOrUp;
/// <summary> /// <summary>
/// 获取随机一个pien死亡叫声 /// 获取随机一个失败叫声
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public AudioClip GetPienDead() public AudioClip GetFail()
{ {
int index = UnityEngine.Random.Range(0, pienDeads.Count); int index = UnityEngine.Random.Range(0, failList.Count);
return pienDeads[index]; return failList[index];
} }
} }
...@@ -28,7 +28,7 @@ public class GameServices : MonoBehaviour ...@@ -28,7 +28,7 @@ public class GameServices : MonoBehaviour
/// </summary> /// </summary>
public static TimerServices timerServices = new TimerServices(); public static TimerServices timerServices = new TimerServices();
//public static AudioServices audioServices; public static AudioServices audioServices;
//public static PoolObjServices poolObjServices; //public static PoolObjServices poolObjServices;
...@@ -61,11 +61,11 @@ public class GameServices : MonoBehaviour ...@@ -61,11 +61,11 @@ public class GameServices : MonoBehaviour
_ConfigService = new ConfigServices(); _ConfigService = new ConfigServices();
_ConfigService?.OnStart(); _ConfigService?.OnStart();
//audioServices = GameObject.FindObjectOfType<AudioServices>(); audioServices = GameObject.FindObjectOfType<AudioServices>();
//if (audioServices == null) if (audioServices == null)
//{ {
// audioServices = AudioServices.Create(transform); audioServices = AudioServices.Create(transform);
//} }
//poolObjServices = GameObject.FindObjectOfType<PoolObjServices>(); //poolObjServices = GameObject.FindObjectOfType<PoolObjServices>();
} }
......
using System.Collections;
using System.Collections.Generic;
public class GlobalConfig
{
/// <summary>
/// 是否开启手机震动
/// </summary>
public static bool isEnableShake = true;
/// <summary>
/// 是否开启音效
/// </summary>
public static bool isEnableSound = true;
/// <summary>
/// 是否开启bgm
/// </summary>
public static bool isEnableBgm = true;
/// <summary>
/// 语言类型
/// </summary>
public static LangeType langType;
}
public enum LangeType
{
Chinese,
English
}
fileFormatVersion: 2
guid: d31c6f9b8d0adea4a9ef479ced292954
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: bdc0baba5a9e7ab4bbc1c1e268314a1b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 75b73601c36cb92418c2f0e6a18de5e2
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides:
7:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 0.44
conversionMode: 0
forceToMono: 0
normalize: 1
preloadAudioData: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: f582290ca8df575409f8f5868dbeb6c6
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 03522ac8d99167f45ac598927093c79e
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 18755c9489da3654db451b917f8ecd81
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: a4fa2dc9fd619ef4a965de465f1586dc
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment