コード例 #1
0
    static AudioManager()
    {
        _gameObject      = new GameObject();
        _gameObject.name = "AudioManager";

        Object.DontDestroyOnLoad(_gameObject);

        Mixer               = Resources.Load <AudioMixer>("Master");
        MasterMixerGroup    = Mixer.FindMatchingGroups("Master").First();
        MusicMixerGroup     = Mixer.FindMatchingGroups("Music").First();
        EffectsMixerGroup   = Mixer.FindMatchingGroups("Effects").First();
        AmbienceMixerGroup  = Mixer.FindMatchingGroups("Ambiance").First();
        InterfaceMixerGroup = Mixer.FindMatchingGroups("Interface").First();
        DialogueMixerGroup  = Mixer.FindMatchingGroups("Dialogue").First();

        AudioMissing  = Resources.Load <AudioClip>("audiomissing");
        AudioDatabase = Resources.Load <AudioDatabase>("AudioDatabase");

        _currentMusicSource      = _gameObject.AddComponent <AudioSource>();
        _currentMusicSource.loop = true;
        _currentMusicSource.outputAudioMixerGroup = MusicMixerGroup;
        _nextMusicSource      = _gameObject.AddComponent <AudioSource>();
        _nextMusicSource.loop = true;
        _nextMusicSource.outputAudioMixerGroup = MusicMixerGroup;
        _crossfader = _gameObject.AddComponent <CrossFader>();
        _crossfader.StartCoroutine(CrossfadeMusic());
    }
コード例 #2
0
 void HandlePlayerLevelUp(int newLevel)
 {
     Debug.Log(string.Format("Player is now level: {0}", newLevel));
     stats.PersistentPlayerData.PerkPoints++;
     // Play level up sound
     GetComponent <AudioSource>().PlayOneShot(AudioDatabase.GetClip("Pickup"));
 }
コード例 #3
0
    private static void LoadResources()
    {
        Mixer               = Resources.Load <AudioMixer>("Master");
        MasterMixerGroup    = Mixer.FindMatchingGroups("Master").First();
        MusicMixerGroup     = Mixer.FindMatchingGroups("Music").First();
        EffectsMixerGroup   = Mixer.FindMatchingGroups("Effects").First();
        AmbienceMixerGroup  = Mixer.FindMatchingGroups("Ambiance").First();
        InterfaceMixerGroup = Mixer.FindMatchingGroups("Interface").First();
        DialogueMixerGroup  = Mixer.FindMatchingGroups("Dialogue").First();

        AudioMissing  = Resources.Load <AudioClip>("audiomissing");
        AudioDatabase = Resources.Load <AudioDatabase>("AudioDatabase");
    }
コード例 #4
0
    private static void Apply()
    {
        string[]      guids = AssetDatabase.FindAssets("t:AudioClip", new[] { "Assets/Audio/Resources" });
        AudioDatabase db    = null;

        db = AssetDatabase.LoadAssetAtPath <AudioDatabase>($"Assets/Audio/Resources/AudioDatabase.asset");
        if (db == null)
        {
            db = ScriptableObject.CreateInstance <AudioDatabase>();
            AssetDatabase.CreateAsset(db, $"Assets/Audio/Resources/AudioDatabase.asset");
        }
        db.AudioClips.Clear();
        db.ClipTypes.Clear();

        var sb = new StringBuilder();

        sb.AppendLine("// Auto Generated File, Don't Modify");
        sb.AppendLine("public static class AudioClips");
        sb.AppendLine("{");
        int count = 0;

        foreach (string g in guids)
        {
            var path = AssetDatabase.GUIDToAssetPath(g);
            var name = Path.GetFileNameWithoutExtension(path);
            sb.AppendLine($"\tpublic static string {name.Replace('-','_').Replace(' ','_')}=\"{name}\";");

            var directory = Path.GetDirectoryName(path);
            directory = directory.Substring(directory.LastIndexOf('\\') + 1);
            if (directory == "Resources")
            {
                directory = "Default";
            }
            db.AudioClips.Add(name,
                              new AudioClipData(AssetDatabase.LoadAssetAtPath <AudioClip>(path),
                                                (SoundType)System.Enum.Parse(typeof(SoundType), directory)));
            count++;
        }

        //sb.Remove(sb.Length - 3, 1);
        sb.AppendLine("}");
        var dataPath = Application.dataPath.Replace('/', '\\');

        dataPath = Path.Combine(dataPath, @"Scripts\Utilities\AudioClips.cs");
        File.WriteAllText(dataPath, sb.ToString());
        AssetDatabase.SaveAssets();
        AssetDatabase.ImportAsset(@"Assets/Scripts/Utilities/AudioClips.cs");
        AssetDatabase.Refresh();
    }
コード例 #5
0
 // Use this for initialization
 private void Awake()
 {
     audioDatabase         = GetComponent <AudioDatabase>();
     backGroundAudioSource = GetComponents <AudioSource>()[0];
     effectAudioSource     = GetComponents <AudioSource>()[1];
     if (Instance == null)           //Static 변수를 지정하고 이것이 없을경우 - PlayManage 스크립트를 저장하고 이것이 전 범위적인 싱글톤 오브젝트가 된다.
     {
         DontDestroyOnLoad(this.gameObject);
         Instance = this;
     }
     else if (Instance != this)
     {
         Destroy(this.gameObject);   //싱글톤 오브젝트가 있을경우 다른 오브젝트를 제거.
     }
 }
コード例 #6
0
    void UpdateWalkSound()
    {
        if ((currentWalkSoundDelay += Time.deltaTime) >= walkSoundRate)
        {
            currentWalkSoundDelay = 0f;
            feetAudioSource.PlayOneShot(AudioDatabase.GetClip(walkAudioClipsId[currentWalkAudioIndex]));

            if (currentWalkAudioIndex < walkAudioClipsId.Length - 1)
            {
                currentWalkAudioIndex++;
            }
            else
            {
                currentWalkAudioIndex = 0;
            }
        }
    }
コード例 #7
0
 void Awake()
 {
     if (self == null)
     {
         self = this;
         DontDestroyOnLoad(self);
         audioDB = self.audioDatabase;
     }
     else
     {
         Destroy(this);
     }
     AssignPlayerInputAccordingToPlatform();
     player1.Enemy    = player2;
     player2.Enemy    = player1;
     player1.GameOver = GameOver;
     player2.GameOver = GameOver;
 }
コード例 #8
0
    /// <summary>
    /// Plays an audio clip in the music audio source.
    /// </summary>
    /// <param name="clipIndex">The index of the clip to play</param>
    /// <param name="addState">DontReplace: If a clip is already playing, don't do anything.<br></br>Replace: Always play the clip.<br></br>Queue: If a clip is already playing, play it once the clip has stopped playing.</param>
    /// <param name="maxVolume">The maximum volume the clip will ever reach</param>
    /// <param name="loop">Whether the clip should be looped</param>
    /// <param name="fadeInSpeed">Speed at which to fade-in. 1 = instantaneous</param>
    /// <param name="fadeOutSpeed">Speed at which to fade-out the previous clip (if AddState.Queue). 1 = instantaneous</param>
    public void PlayClip(string audioClipId, AddState addState, float maxVolume = 1f, bool loop = false, float fadeInSpeed = 1f, float fadeOutSpeed = 1f)
    {
        if (!musicAudioSource.isPlaying || addState == AddState.Replace)
        {
            musicAudioSource.clip = AudioDatabase.GetClip(audioClipId);
            StartFadeIn(fadeInSpeed, maxVolume);
            musicAudioSource.loop = loop;
        }
        else if (addState == AddState.Queue)
        {
            if (currentQueueWait != null)
            {
                StopCoroutine(currentQueueWait);
            }

            StartFadeOut(fadeOutSpeed);
            currentQueueWait = StartCoroutine(WaitForStop(audioClipId, maxVolume, loop, fadeInSpeed));
        }
    }
    public void Awake()
    {
        foreach (var item in soundClips)
        {
            if (!string.IsNullOrEmpty(item.id) || item.audioClip != null)
            {
                AudioDatabase.AddClip(item);
            }
            else
            {
                Debug.LogWarning("Invalid Audio Clip added to AudioDatabaseInitialiser");
            }
        }

        if (destroyAfterInjection)
        {
            Destroy(this);
        }
    }
コード例 #10
0
 private void OnEnable()
 {
     m_Source    = (AudioDatabase)target;
     m_Target    = new SerializedObject(m_Source);
     m_DatasProp = m_Target.FindProperty("m_Datas");
 }
コード例 #11
0
    private void Awake()
    {
        instance = this;

        Initialize();
    }
コード例 #12
0
    void ControlManager()
    {
        mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        if (Input.GetAxis("Fire1") == 1)
        {
            //print("Ping");
            if (currentWeapon)
            {
                // Attempt to fire the weapon, if the weapon does fire, increase bullets shot.
                if (currentWeapon.PrimaryFire())
                {
                    stats.BulletsShot++;
                }

                OnWeaponChanged?.Invoke(currentWeapon);
            }
        }

        if (Input.GetAxis("Fire2") == 1)
        {
            if (currentWeapon)
            {
                currentWeapon.SecondaryFire();
                OnWeaponChanged?.Invoke(currentWeapon);
            }
        }

        if (Input.GetButtonDown("Reload"))
        {
            if (currentWeapon)
            {
                currentWeapon.ReloadAll();
                OnWeaponChanged?.Invoke(currentWeapon);
            }
        }

        if (Input.GetButtonDown("Ability1"))
        {
            try
            {
                if (!AbilityController)
                {
                    return;
                }

                AbilityController.UseAbility(0);
            }
            catch (Exception e)
            {
                Debug.LogWarning("Ability 1 not found");
            }
        }

        if (Input.GetButtonDown("Ability2"))
        {
            try
            {
                AbilityController.UseAbility(1);
            }
            catch (Exception e)
            {
                Debug.LogWarning("Ability 2 not found");
            }
        }
        if (Input.GetButton("CharJump"))
        {
            if (jumpController.Jump(out var newEnemy))
            {
                controlledObject = newEnemy;
                GetComponent <AudioSource>().PlayOneShot(AudioDatabase.GetClip("Body Swap"));
                HandleNewControlledObject();
            }
        }
    }
コード例 #13
0
 public void Init(string audioClipId, float lifeTime, float volume)
 {
     GetComponent <AudioSource>().PlayOneShot(AudioDatabase.GetClip(audioClipId), volume);
     StartCoroutine(Destroy(lifeTime));
 }
コード例 #14
0
 void Start()
 {
     instance = this;
 }