Как я могу приостановить текущий звук и воспроизвести следующий?

Этот код является скриптом Dialouge. Я хочу, чтобы: текст печатал, а набор номера воспроизводился -> Вы должны нажать Enter -> ТЕКУЩИЙ ДИАЛОГ ПРИНИМАЕТСЯ -> Следующий текст и набор воспроизводится и печатается.

В тот момент, когда работают, что: Текст печатает -> Звук воспроизводится -> Ввод -> Следующий звук воспроизводится.

Я хочу только что-то вроде: Нажмите, чтобы приостановить текущий звук или выключить его. Пожалуйста, помогите мне:D

Код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TextBoxManager : MonoBehaviour {



    public GameObject textBox;
    public Text theText;
    public int currentLine;
    public int endAtLine;
    public PlayerController player;
    public TextAsset textFile;

    public AudioClip[] audioFiles;
    public int currentAudio;
    public int endAtAudio;

    public string[] textLines;
    public bool isActive;
    public bool StopPlayerMovement;
    private bool isTyping = false;
    private bool cancelTyping = false;
    public float typeSpeed;

    void Start () {
        player = FindObjectOfType<PlayerController> ();
        if (textFile != null) 
            textLines = (textFile.text.Split ('\n'));

        if (endAtLine == 0) 
        {
            endAtLine = textLines.Length - 1;
        }

        if (isActive) 
        {
            EnableTextBox ();
        } 
        else 
        {
            DisableTextBox ();
        }
    }

    void Update()
    {
        if (!isActive) 
        {
            return;
        }
        //theText.text=textLines[currentLine];


        if (Input.GetKeyDown (KeyCode.Return)) 
        {
            if (!isTyping) 
            {
                currentLine += 1;
                //THERE I WANT TO STOP CURRENT AUDIO
                currentAudio += 1;
                    if (currentLine > endAtLine || currentAudio > endAtAudio) 
                {
                    DisableTextBox (); 
                } 
                else 
                {
                    StartCoroutine (TextScroll (textLines [currentLine]));
                    AudioSource.PlayClipAtPoint(audioFiles[currentAudio],player.GetComponent<Transform>().position);
                }
            } 
            else if (isTyping && !cancelTyping) 
            {
                cancelTyping = true;

            }

        }
    }

    private IEnumerator TextScroll (string lineOfText)
    {
        int letter = 0;
        //int count = lineOfText.Length;
        theText.text = "";
        isTyping = true;
        cancelTyping = false;
        while (isTyping && cancelTyping && (letter < lineOfText.Length - 1)) 
        {
            theText.text += lineOfText [letter];
            letter += 1;
            yield return new WaitForSeconds (typeSpeed);
        }

        theText.text = lineOfText;
        isTyping = false;
        cancelTyping = false;
    }

    public void EnableTextBox()
    {
        textBox.SetActive (true);
        isActive = true;
        if (StopPlayerMovement) 
        {
            player.enabled = false; 

        }
        StartCoroutine (TextScroll (textLines [currentLine]));
        //AudioSource.PlayClipAtPoint(musicScript.dialogue, player.GetComponent<Rigidbody2D> ().position);
    }

    public void DisableTextBox(){
        textBox.SetActive (false);
        isActive = false;
        player.enabled = true; 

    }

    public void ReloadScript(TextAsset theText){
        if (theText != null) {
            textLines = new string[1];
            textLines = (theText.text.Split ('\n'));
        }
    }


}

0 ответов

Другие вопросы по тегам