Как я могу приостановить текущий звук и воспроизвести следующий?
Этот код является скриптом 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'));
}
}
}