/// <summary> /// Stops all subtitles from displaying by setting the current subtitle to null. /// </summary> void StopSubtitle() { currentSubtitle = null; }
/// <summary> /// Stops the subtitle from displaying at its out point. /// </summary> /// <param name="duration">The time at which to stop the audio.</param> IEnumerator StopSubtitle(float duration) { yield return new WaitForSeconds(duration); currentSubtitle = null; }
/// <summary> /// Displays the specified subtitle. /// </summary> /// <param name="clip">The subtitle to display.</summary> void PlaySubtitle(CutsceneClip clip) { currentSubtitle = (CutsceneSubtitle)clip.master; EDebug.Log("Displaying subtitle " + clip.name + " at " + animation["master"].time); StartCoroutine(StopSubtitle(clip.duration)); }
/// <summary> /// Called when the scene starts. /// </summary> void SceneStart() { if (startFunction != null) { startFunction(); } // Stop the player from being able to move if (player != null && stopPlayer) { EDebug.Log("Cutscene: deactivating player"); player.SetActive(false); } DisableCameras(); currentSubtitle = null; EDebug.Log("Cutscene: scene started at " + animation["master"].time); }
IEnumerator RunCutscene(AudioClip clip, AudioClip vo, List <CutsceneSubtitle> subtitles, List <CutsceneImage> images, Action callback) { cutsceneCallback = callback; audioSources[0].clip = clip; audioSources[0].Play(); audioSources[3].clip = vo; audioSources[3].Play(); List <CutsceneSubtitle> subs = new List <CutsceneSubtitle>(subtitles); List <CutsceneImage> ims = new List <CutsceneImage>(images); while (subs.Count > 0 || ims.Count > 0) { CutsceneSubtitle sub = subs.Count > 0 ? subs[0] : null; CutsceneImage im = ims.Count > 0 ? ims[0] : null; float currentTime = audioSources[0].time; if (sub != null && currentTime >= sub.time) { subtitleText.text = sub.text; subs.Remove(sub); } if (im != null && currentTime >= im.time) { cutsceneImage.DOFade(0f, 0.3f).OnComplete(() => { cutsceneImage.sprite = im.image; ims.Remove(im); cutsceneImage.DOFade(1f, 0.3f); }); } yield return(null); } // Cutscene Images //List<CutsceneImage> imgs = intoCutsceneImages; //while (imgs.Count > 0) //{ // CutsceneSubtitle sub = subs[0]; // float currentTime = audioSources[0].time; // if (currentTime >= sub.time) // { // subtitleText.text = sub.text; // subs.Remove(sub); // } // yield return null; //} while (audioSources[3].isPlaying) { yield return(null); } audioSources[0].Stop(); subtitleText.text = ""; cutsceneImage.DOFade(0f, 0.3f); Action temp = cutsceneCallback; cutsceneCallback = null; temp?.Invoke(); yield return(null); }