Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

283
Views
¿Cómo guardo las monedas que mi personaje ha recolectado de una escena a otra? (Unidad)

Estoy tratando de crear una tienda en otra escena. Puedes acceder a él en cualquier momento mientras juegas presionando H. Mi problema es que las monedas que el jugador ha recolectado no se guardan. He estado tratando de buscar respuestas, pero nada parece ayudar.

Los Códigos: Mi Código Global que uso para guardar variables:

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Global : MonoBehaviour { public static Global Instance; public int sumCoins; void Awake(){ if (Instance == null){ DontDestroyOnLoad(gameObject); Instance = this; } else if (Instance != this){ Destroy(gameObject); } } }

El código que uso para comprar artículos:

 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Shop : MonoBehaviour { public Button milk; void Start() { Debug.Log("you have " + Global.Instance.sumCoins); milk.onClick.AddListener(AddMilk); } void AddMilk(){ Debug.Log("You bought milk"); //if player has more than 5 coins. //add milk //else if player has less than 5 coins //display "You cant buy this" //else if player doesnt have a slot available //display "You cant buy this" } }

El código que se usa para contar y sumar monedas:

 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Coinsystem : MonoBehaviour { public int sumCoins = 0; private int addedCoins; int coins; Text txt; public GameObject count; public void Start(){ Debug.Log("coin system working"); txt = count.GetComponent<Text>(); txt.text = "" + sumCoins; sumCoins = Global.Instance.sumCoins; } public void Update(){ txt.text = "" + sumCoins; } public void AddCoins(int addedCoins){ sumCoins += addedCoins; Debug.Log("Coins Added!"); } public void SaveMoney(){ Global.Instance.sumCoins = sumCoins; } }

¡Gracias por tomarte tu tiempo para leer esto!

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Una forma rápida de resolver este problema sería usar una clase estática. A veces he usado este método para conservar los datos a lo largo de la vida útil de la aplicación.

 public static class GameData { private static int coins = 0; public static void SetCoins(int coinsIn) { coins = coinsIn; } public static void AddCoins(int coinsIn) { coins += coinsIn; } public static int GetCoins() { return coins; } }

Entonces puedes simplemente llamar a los métodos de esta manera:

 GameData.SetCoins(...); GameData.AddCoins(...); var coins = GameData.GetCoins();

La otra forma en que las personas resuelven este problema es la siguiente:

  • Guardar/Cargar hacia y desde el almacenamiento local (Esto se puede usar junto con la clase anterior o solo).
  • PlayerPrefs , similar al uso de una clase estática. Descubra más sobre eso aquí .
  • Crear un objeto con un script adjunto que usa DontDestroyOnLoad . Descubra más sobre eso aquí .

Normalmente no recomendaría el uso de clases estáticas porque generalmente es una mala práctica de programación, pero a veces es necesario sortear limitaciones como esta.

Generalmente, como regla general, si va a utilizar una clase estática, suele haber una mejor manera de hacerlo.

Probablemente diría que la forma más preferida sería Guardar/Cargar los datos hacia y desde el almacenamiento local cuando sea necesario, pero este enfoque es demasiado para lo que desea hacer.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!