Untitled
saddam
plain_text
3 years ago
2.6 kB
7
Indexable
using System.Collections;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;
public enum SoundType
{
OnClick,
BG, PickGoodObj, PickBadObj, PickGem, Fall, Complete, Fail,
CoinAddition, Kiss, cheering, FinishVoiceOver, GlassBreak, GiftOpen,
FOllowPick, KeyPick, cashPick, TaxPick, poof, specialPick, AfterFInish, DiamondCrush, FoodPickGood, FoodPickBad, DiamondDie, CakeDie, Slap
}
[System.Serializable]
public class SoundClass
{
public SoundType Type;
public AudioClip[] clip;
[HideInInspector] public bool canSound = true;
}
public class SoundManager : MonoBehaviour
{
public static SoundManager Instance;
void getInstance()
{
if (!Instance)
{
Instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
//public Dictionary<SoundType, AudioClip> particlesData = new Dictionary<SoundType, AudioClip>();
[TableList(ShowIndexLabels = true)]
public SoundClass[] soundData;
public AudioSource OneShotSound, BgSound;
// Start is called before the first frame update
void Awake()
{
getInstance();
}
[HideInEditorMode]
[Button("Test")]
public void PlayOnShot(SoundType type, float vol = 1)
{
for (int i = 0; i < soundData.Length; i++)
{
if (soundData[i].Type == type && soundData[i].canSound)
{
OneShotSound.PlayOneShot(soundData[i].clip[Random.Range(0, soundData[i].clip.Length)], vol * GameData.SoundVolume);
soundData[i].canSound = false;
StartCoroutine(Delay(() => soundData[i].canSound = true, 0.3f));
return;
}
}
}
public void PlayBG(SoundType type, float vol = 1)
{
for (int i = 0; i < soundData.Length; i++)
{
if (soundData[i].Type == type)
{
int index = Random.Range(0, soundData[i].clip.Length);
if (BgSound.clip != soundData[i].clip[index])
BgSound.clip = soundData[i].clip[index];
BgSound.volume = vol * GameData.SoundVolume * 0.5f;
BgSound.Play();
return;
}
}
}
public IEnumerator Delay(System.Action Callback, float t)
{
yield return new WaitForSeconds(t);
Callback();
}
}
Editor is loading...