Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

286
Vistas
Problema con la puntuación en el juego con Unity C#

en mi juego, el jugador tiene que recoger monedas. El problema es que cuando el jugador muere y comienza un nuevo juego, la cantidad de monedas no se restablece. Por ejemplo:

comenzando un nuevo juego y recolectando 15 monedas, luego muere

comenzando un nuevo juego y la cantidad de monedas que configuré en 15, no en 0

¿¿Cómo puedo arreglar eso??

Script utilizado para mostrar la puntuación en la pantalla:

 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Score : MonoBehaviour { Coin coin; void Update() { coin = FindObjectOfType<Coin>(); GetComponent<Text>().text = coin.GetScore().ToString(); }

Script utilizado para agregar monedas para anotar:

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Coin : MonoBehaviour { float speed = 10f; public static int score = 0; void Update() { transform.position += Vector3.left * speed * Time.deltaTime; } private void OnTriggerEnter2D(Collider2D collision) { score += 1; } public int GetScore() { return score; } }

También debo decir que estaba jugando con PlayerPrefs con ese puntaje para hacer un concepto de puntaje alto, pero eliminé todos los PlayerPrefs que hice. Muchas gracias.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Esta es la línea problemática:

 public static int score = 0;

Una variable declarada "estática" durará tanto como el tiempo de ejecución, incluso si el objeto al que está vinculada se destruye (es un valor compartido entre todos los objetos de monedas).

Idealmente, lo haría no estático (que es lo que Unity espera).

 public int score = 0;

Si vuelves a crear el objeto Moneda cada vez que el jugador muere, Unity se encargará de la limpieza por ti.

Alternativamente, puede agregar un método "Restablecer" a la clase Coin...

 public int GetScore() { return score; } public void Reset() { score = 0; }

Respondí una pregunta que trata la estática con más detalle y puede ser de interés.

Normalmente, cuando una clase tiene variables, cada vez que crea una nueva instancia de la clase, obtiene sus propias copias de cada variable.

(Puedes crear dos clases Animal y darles a cada una un Name diferente)

Una variable static es diferente. En lugar de que cada instancia tenga su propia copia de la variable, todas comparten la misma.

Entonces, si configura animal1.StaticName , también cambiaría animal2.StaticName . Más concretamente, ni siquiera necesita hacer un animal, simplemente puede configurar Animal.StaticName directamente.

Entonces... Se puede leer/establecer una variable estática (y se pueden ejecutar métodos estáticos) incluso si no ha creado una instancia de la clase.

Ah, y... Si decides mantener la puntuación estática, no necesitas encontrar un objeto específico para obtener la puntuación...

 void Update() { GetComponent<Text>().text = Coin.score.ToString(); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda