- Home /
Coroutine from other script is playing when paused(vuforia),Coroutine from other script is running
,I'm a beginner in unity and c# and i'm doing an augmented reality vuforia application, i have 2 example image targets, and each have same script and code just different variables. When a target is found a "start" and "pause" button will appear and if you click it, a 3d model and an example subtitle will appear, i'm using coroutine for subtitle and hide/show of some objects during animation, the pause function is working. My problem is if i paused it and play the other imagetarget, the coroutine from the previous imagetarget is playing even it if it's paused awhile ago, i want it to be totally paused when i'm shifting to other imagetarget. can anyone help me in this?`
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class AnimControl : MonoBehaviour {
public Animator animator;
public Transform giantModel;
public Transform pauseButton;
public Transform startButton;
public AudioSource audiosourc;
public GameObject textBox;
private Coroutine myGiantCoroutine;
public static bool testHold = false;
public static bool pausedAnim;
// Use this for initialization
void Start () {
animator = giantModel.GetComponent<Animator> ();
animator.speed = 0;
giantModel.gameObject.SetActive (false);
pausedAnim = true;
Time.timeScale = 1;
pauseButton.gameObject.SetActive (true);
}
public void playAnim(){
if (pausedAnim == true) {
pausedAnim = false;
startButton.GetComponentInChildren<Text> ().text = "Restart";
Button btnAnim = startButton.GetComponent<Button> ();
btnAnim.onClick.AddListener (restartAnim);
animator.speed = 1;
giantModel.gameObject.SetActive (true);
audiosourc.Play ();
myGiantCoroutine = StartCoroutine (TheSequence ());
Time.timeScale = 1;
testHold = true;
}
}
void restartAnim(){
if (testHold == true) {
Time.timeScale = 1;
StopAllCoroutines ();
myGiantCoroutine = StartCoroutine (TheSequence ());
audiosourc.Stop ();
audiosourc.Play ();
animator.Play ("Selfish", -1, 0f);
pauseButton.GetComponentInChildren<Text> ().text = "Pause";
animator.speed = 1;
Button btnAnim = pauseButton.GetComponent<Button> ();
btnAnim.onClick.AddListener (pauseAnim);
textBox.SetActive (true);
}
}
public void pauseAnim(){
Time.timeScale = 0;
if (pausedAnim == false) {
animator.speed = 0;
pauseButton.GetComponentInChildren<Text> ().text = "Resume";
Button btnAnim = pauseButton.GetComponent<Button> ();
btnAnim.onClick.AddListener (resumeAnim);
audiosourc.Pause ();
pausedAnim = true;
textBox.SetActive (false);
}
}
void resumeAnim(){
Time.timeScale = 1;
if (pausedAnim == true) {
pauseButton.GetComponentInChildren<Text> ().text = "Pause";
animator.speed = 1;
Button btnAnim = pauseButton.GetComponent<Button> ();
btnAnim.onClick.AddListener (pauseAnim);
audiosourc.Play ();
pausedAnim = false;
textBox.SetActive (true);
}
}
private IEnumerator TheSequence(){
if (pausedAnim == true) {
yield return null;
} else {
textBox.GetComponent<Text> ().text = "This story is about a giant who wasn't nice at all.";
yield return new WaitForSeconds (3);
textBox.GetComponent<Text> ().text = "";
yield return new WaitForSeconds (3.5f);
textBox.GetComponent<Text> ().text = "He went away to visit a friend, and didn't comeback for seven years.";
yield return new WaitForSeconds (5);
textBox.GetComponent<Text> ().text = "";
yield return new WaitForSeconds (1);
textBox.GetComponent<Text> ().text = "While he was away, children begin to play in a giant's lovely garden.";
yield return new WaitForSeconds (4);
textBox.GetComponent<Text> ().text = "";
}
}
}
Your answer
Follow this Question
Related Questions
Vuforia simultaneous tracked objects 0 Answers
Once Trackable Library is found, How do I set a permanent Timer on the Augumented Objects ? 0 Answers
Using Vuforia Ground Plane Function 0 Answers
How to Switch/Change Front and back Vuforia AR Camera using a button? 0 Answers
VuforiaBehavior Unable to set values properly via script 0 Answers