Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Llamada a un guitext desde script diferente

Iniciado por Uxía, Mayo 23, 2016, 01:24:58 PM

Tema anterior - Siguiente tema
Mayo 23, 2016, 01:24:58 PM Ultima modificación: Mayo 24, 2016, 05:04:55 PM por Uxía
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;
    }
}

 
 

De entrada no utilices GUIText. Desde la 4.6 se utiliza Text que debe tener como más de un año.

Mayo 26, 2016, 01:49:37 AM #2 Ultima modificación: Junio 13, 2016, 02:02:29 AM por pioj
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!
 
 

Etiquetas: