Estoy usando PlayerPrefs para guardar las monedas recolectadas en cada nivel. En un juego de diferencias, cuando se encuentra un elemento, el jugador obtiene una moneda y se guarda con PlayerPrefs. Y ese valor de la moneda se usa para mostrar en la pantalla de selección de nivel. El problema es que cuando terminé el nivel por primera vez, mostraba las monedas recolectadas en la pantalla de selección de nivel, cuando lo terminé un par de veces, el valor en la pantalla de selección de nivel permaneció igual, las monedas no sumaron:
Aquí está mi script donde guardo monedas con PlayerPrefs:
if (result.collider.CompareTag("Images")) { Debug.Log("Hit"); result.collider.enabled = false; tmpCircle = Instantiate(krug1); tmpCircle.SetActive(true); tmpCircle.transform.SetParent(canvas.transform, true); tmpCircle.transform.position = new Vector3(result.point.x, result.point.y, result.point.z); tmpCircle.transform.localScale = new Vector3(transform.localScale.x * 2f, transform.localScale.y * 2f, transform.localScale.z); circle.Play("CircleAnim"); score += 1; diff -= 1; coins += 1; score1.text = " " + score; PlayerPrefs.SetInt("Coins", coins); PlayerPrefs.Save(); item.Play(); }Y aquí está el script donde muestro las monedas en la pantalla de selección de nivel:
void Start() { coins.text = PlayerPrefs.GetInt("Coins", 0).ToString(); }A menos que esté en otra parte de su código, está configurando sus monedas con cada ejecución del nivel sin leerlo primero. Cada vez que comience el nivel, primero debe leer los datos de la moneda o se anulará.
Al comienzo del nivel debe incluir
void Start() { coins= PlayerPrefs.GetInt("Coins", 0); }