Manager audio

Ogólne pytania na temat Unity3D

Manager audio

Postprzez batyskaf » 24 Paź 2021, 18:42

Witam, na jednym z tutoriali znalazłem wykonanie skryptu w którym można zawrzeć odwołania do plików dźwiękowych i w poszczególnych skryptach np. postaci w grze można odpowiednio zawrzeć odwołania w skrypcie "managera audio".
W jaki sposób w skrypcie managera audio, który podaje poniżej można ograniczyć np. odtwarzanie, żeby dźwięk uruchamiał się tylko wtedy, gdy nie jest odtwarzany, bo aktualnie jest tak, że np. dźwięk ataku narasta - dźwięki zaczynają się pokrywać, przy powtarzającej się kolizji lub gdy ponownie gracz wchodzi w trigger, a dźwięk z poprzedniego wejścia jeszcze się nie skończył dźwięki nakładają się.

Kod: Zaznacz wszystko
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SoundManagerScript : MonoBehaviour
{
    public static AudioClip playerJumpSound, playerEatSound, playerSmashSound, frogJumpSound, impAttackSound, monsterSound, porkAttackSound, porkExplodingSound, insectAttackSound, InsectSpitSound;
    static AudioSource audioSrc;
    public GameObject[] soundmanager;


    void Start()
    {
        DontDestroyOnLoad(gameObject);
        playerJumpSound = Resources.Load<AudioClip>("playerJump");
        playerEatSound = Resources.Load<AudioClip>("playerEat");
        playerSmashSound = Resources.Load<AudioClip>("playerSmash");
        frogJumpSound = Resources.Load<AudioClip>("frogJump");
        impAttackSound = Resources.Load<AudioClip>("impAttack");
        monsterSound = Resources.Load<AudioClip>("monsterSound");
        porkAttackSound = Resources.Load<AudioClip>("porkAttackSound");
        porkExplodingSound = Resources.Load<AudioClip>("porkExplodingSound");
        insectAttackSound = Resources.Load<AudioClip>("insectAttackSound");
        InsectSpitSound = Resources.Load<AudioClip>("InsectSpitSound");





        audioSrc = GetComponent<AudioSource>();
    }

    private void OnLevelWasLoaded(int level)
    {
        soundmanager = GameObject.FindGameObjectsWithTag("SoundManager");

        if (soundmanager.Length > 1)
        {
            Destroy(soundmanager[1]);
        }
    }

    public static void PlaySound (string clip)
    {
        switch (clip)
        {       
            case "playerJump":
                audioSrc.PlayOneShot(playerJumpSound);
                break;
            case "playerEat":
                audioSrc.PlayOneShot(playerEatSound);
                break;
            case "playerSmash":
                audioSrc.PlayOneShot(playerSmashSound);
                break;
            case "frogJump":
                audioSrc.PlayOneShot(frogJumpSound);
                break;
            case "impAttack":
                audioSrc.PlayOneShot(impAttackSound);
                break;
            case "monsterSound":
                audioSrc.PlayOneShot(monsterSound);
                break;
            case "insectAttackSound":
                audioSrc.PlayOneShot(insectAttackSound);
                break;
            case "InsectSpitSound":
                audioSrc.PlayOneShot(InsectSpitSound);
                break;
            case "porkAttackSound":
                audioSrc.PlayOneShot(porkAttackSound);
                break;
            case "porkExplodingSound":
                audioSrc.PlayOneShot(porkExplodingSound);
                break;
        }
    }
}
batyskaf
 
Posty: 7
Rejestracja: 07 Lut 2021, 14:51
Has thanked: 0 time
Been thanked: 0 time

Re: Manager audio

Postprzez Ether_141 » 28 Paź 2021, 21:03

Awatar użytkownika
Ether_141
 
Posty: 532
Rejestracja: 29 Sie 2015, 11:47
Has thanked: 0 time
Been thanked: 0 time

Re: Manager audio

Postprzez Wichur » 29 Paź 2021, 20:29

if(audio.isPlaying) audio.Stop();

tutaj odwazasz kolejne
audio.Play();
Awatar użytkownika
Wichur
 
Posty: 161
Rejestracja: 19 Gru 2017, 10:33
Miejscowość: Pruszcz Gdański
Has thanked: 0 time
Been thanked: 0 time


Wróć do Wsparcie Unity

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 6 gości

cron