Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Uxía en Mayo 23, 2016, 01:24:58 PM

Título: Llamada a un guitext desde script diferente
Publicado por: Uxía en Mayo 23, 2016, 01:24:58 PM
Buenos días, 
 
Estoy tratando de hacer un videojuego con un countdown en el que cada vez que el objeto colisione con otro, a parte de sumar puntos también sume 5s más en el cronómetro. El timer y el score ya los tengo hechos (ambos con GUIText) , pero lo que no soy capaz es de que el script que contiene el collider llame al script del timer, que es contiene el Guitext del cronometro. 
 
En resumidas cuentas, lo que quiero es que el segundo script al colisionar sume 5 s más al primer script. Os adjunto lo que he hecho, aunque no me funciona (estoy aprendiendo a programar poco a poco). Gracias de ante mano.
 
 
 
Este es el script del timer:
 

using UnityEngine;
using System.Collections;
public class Timer : MonoBehaviour
{
    public GUIText tiempoText;
    public float tiempo = 0.0f;
    public void Update()
    {
        tiempo = tiempo - 1 * Time.deltaTime;
        tiempoText.text = "" + tiempo.ToString("f0");
        if (tiempo <= )
            Application.LoadLevel("ranking");
    }
}

 
 
 
Y este es el de los puntos + collider: 
 

using UnityEngine;
using System.Collections;
public class colliderC : MonoBehaviour
{
    public float score;
    public GUIText guiScore;
    public float tiempo;
    public GUIText guitext;
   
    void Start()
    {
        guiScore.text = "Puntos: 0";
    }
    
    void Update()
    {
        Timer GUIText = GetComponent<Timer>();
        guitext = GUIText.tiempoText;
    }
    void OnTriggerEnter(Collider other)
    {
        if (gameObject.tag == "recolectable") ;
        Destroy(other.gameObject);
        score += 10;
        guiScore.text = "Puntos: " + score;
        //guitext.text =  + tiempo;
    }
}

 
 
Título: Llamada a un guitext desde script diferente
Publicado por: iRobb en Mayo 24, 2016, 03:37:35 PM
De entrada no utilices GUIText. Desde la 4.6 se utiliza Text que debe tener como más de un año.
Título: Llamada a un guitext desde script diferente
Publicado por: KarmaLP en Mayo 26, 2016, 01:49:37 AM
haz la variable public static, con eso podrás modificarla desde otro script.
 
 
 
en tu caso:
 



   
      public static float tiempo = 0.0f
   

[/quote]
 
Y para modificarla desde otro script:
 



   
      timer.tiempo =+5  //en este caso accederíamos a la variable tiempo del componente timer (el nombre del otro script) y le añadiríamos 5.
   

[/quote]
 
Recuerda que si la variable no es estática no te dejará modificarla (de hecho ni te la reconocerá cuando la intentas escribir desde otro script)
 
 
 
Hay más métodos, pero este es el más sencillo y el más efectivo en la mayoría de casos.
 
 
 
Un saludo!