How do I carry over canvas ui text to the next scene

I am having a problem carrying over the text in unity. I don’t know what is going on. I don’t have any errors . I have a score script and a timer script . I am access the timer , and score script from a test . I also have a picture to show what is going on when I press play.

Here are my scripts :

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class ScoreManagerScript : MonoBehaviour
 {

 
     public static int score;

public GameObject RootCanvas;

	 private Text text;
     
	 void Awake()
     {
		 text = GetComponent <Text> ();
		 score = 0;

DontDestroyOnLoad(RootCanvas.transform.root);
	 }
 	

	 
	 void Update()
	 {
		text.text = "Score: " + score;
		 Debug.Log("Score: " + score);
	 }
 
 	
	 
 
}

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Test : MonoBehaviour {
private MyClockScript myClock;
public GameObject Score;
public GameObject Text;
private ScoreManagerScript scoremanager;
	void Awake () {
		myClock = GetComponent<MyClockScript>();
		scoremanager = GetComponent<ScoreManagerScript>();
		Score = GameObject.Find("Tip");
		
	}
	

	void Update () 
	{
		if (myClock.m_leftTime <= 0 && 0 <= ScoreManagerScript.score)

		{

			SceneManager.LoadScene("new");

		}


}


}

Is only the canvas not getting removed? You may need to obtain the children of the transform and set all of them to not destroy on load.

How I obtain the children ? I have added the code and nothing still happen.

sing UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class MyClockScript : MonoBehaviour
  {

      public int  Minutes = 0;
      public int  Seconds = 0;
  
      private Text    m_text;
      public float   m_leftTime;
  
      public void Awake()
      {
          m_text = GetComponent<Text>();
          m_leftTime = GetInitialTime();
          DontDestroyOnLoad(transform.gameObject);

      
      }
  
      public void Update()
      {
          if (m_leftTime > 0f)
          {
              //  Update countdown clock
              m_leftTime -= Time.deltaTime;
              Minutes = GetLeftMinutes();
              Seconds = GetLeftSeconds();

              //  Show current clock
              if (m_leftTime > 0f)
              {
                  m_text.text = "Time : " + Minutes + ":" + Seconds.ToString("00");

              }
              else
              {
                  //  The countdown clock has finished
                  m_text.text = "Time : 0:00";
              }
          }
      }
  
      private float GetInitialTime()
      {
          return Minutes * 60f + Seconds;
      }
  
      private int GetLeftMinutes()
      {
          return Mathf.FloorToInt(m_leftTime / 60f);
      }
  
      private int GetLeftSeconds()
      {
          return Mathf.FloorToInt(m_leftTime % 60f);
      }
  }