- Home /
Question by
importguru88 · Jun 22, 2016 at 07:06 PM ·
uitextcanvasroot
How do I root canvas carry UI text over in the next scene
I think rooted the ui canvas gameobject correctly . But the scene still wont switch . I don't have errors .
I am accessing the score script and the timer script from the test script. I want the scene to choange when the score is greater than the score I have . But the countdown timer gotta be at zero. This project is a score and time-base game. 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(); scoremanager = GetComponent(); Score = GameObject.Find("Tip");
}
void Update ()
{
if (myClock.m_leftTime <= 0 && 0 <= ScoreManagerScript.score)
{
SceneManager.LoadScene("new");
}
}
}
Here is my two script:
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 MyClockScript : MonoBehaviour
{
public GameObject RootCanvas;
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 (RootCanvas.transform.root);
}
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);
}
}
dontdestroyonload.png
(188.9 kB)
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220612083449im_/https://answers.unity.com/themes/thub/images/avi.jpg)